* [PATCH 6.1 000/600] 6.1.53-rc1 review
@ 2023-09-11 13:40 Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 001/600] Revert "bridge: Add extack warning when enabling STP in netns." Greg Kroah-Hartman
` (610 more replies)
0 siblings, 611 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor
This is the start of the stable review cycle for the 6.1.53 release.
There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 6.1.53-rc1
Nathan Chancellor <nathan@kernel.org>
clk: Avoid invalid function names in CLK_OF_DECLARE()
Geert Uytterhoeven <geert+renesas@glider.be>
treewide: Fix probing of devices in DT overlays
Saravana Kannan <saravanak@google.com>
clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro
Yu Kuai <yukuai3@huawei.com>
md: fix regression for null-ptr-deference in __md_stop()
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Rework scratch handling for READ_PLUS (again)
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Fix a potential double free with READ_PLUS
Xiao Ni <xni@redhat.com>
md: Free resources in __md_stop
Michel Dänzer <mdaenzer@redhat.com>
Revert "drm/amd/display: Do not set drr on pipe commit"
Brian Foster <bfoster@redhat.com>
tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY
Lorenz Bauer <lmb@isovalent.com>
net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn
Hugo Villeneuve <hvilleneuve@dimonoff.com>
serial: sc16is7xx: fix regression with GPIO configuration
Hugo Villeneuve <hvilleneuve@dimonoff.com>
serial: sc16is7xx: remove obsolete out_thread label
Kan Liang <kan.liang@linux.intel.com>
perf/x86/uncore: Correct the number of CHAs on EMR
Jack Wang <jinpu.wang@ionos.com>
x86/sgx: Break up long non-preemptible delays in sgx_vepc_release()
Alan Stern <stern@rowland.harvard.edu>
USB: core: Fix oversight in SuperSpeed initialization
Alan Stern <stern@rowland.harvard.edu>
USB: core: Fix race by not overwriting udev->descriptor in hub_port_init()
Alan Stern <stern@rowland.harvard.edu>
USB: core: Change usb_get_device_descriptor() API
Alan Stern <stern@rowland.harvard.edu>
USB: core: Unite old scheme and new scheme descriptor reads
RD Babiera <rdbabiera@google.com>
usb: typec: bus: verify partner exists in typec_altmode_attention
RD Babiera <rdbabiera@google.com>
usb: typec: tcpm: set initial svdm version based on pd revision
Douglas Anderson <dianders@chromium.org>
of: property: fw_devlink: Add a devlink for panel followers
Gustavo A. R. Silva <gustavoars@kernel.org>
cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug
Thomas Bourgoin <thomas.bourgoin@foss.st.com>
crypto: stm32 - fix loop iterating through scatterlist for DMA
Heiko Carstens <hca@linux.ibm.com>
s390/dasd: fix string length handling
Sven Schnelle <svens@linux.ibm.com>
s390/ipl: add missing secure/has_secure file to ipl type 'unknown'
Gerald Schaefer <gerald.schaefer@linux.ibm.com>
s390/dcssblk: fix kernel crash with list_add corruption
D Scott Phillips <scott@os.amperecomputing.com>
arm64: sdei: abort running SDEI handlers during crash
Enlin Mu <enlin.mu@unisoc.com>
pstore/ram: Check start of empty przs during init
Wolfram Sang <wsa+renesas@sang-engineering.com>
mmc: renesas_sdhi: register irqs before registering controller
Tzung-Bi Shih <tzungbi@kernel.org>
platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER
Yazen Ghannam <yazen.ghannam@amd.com>
x86/MCE: Always save CS register on AMD Zen IF Poison errors
Eric Biggers <ebiggers@google.com>
fsverity: skip PKCS#7 parser when keyring is empty
Nicolas Dichtel <nicolas.dichtel@6wind.com>
net: handle ARPHRD_PPP in dev_is_mac_header_xmit()
Thore Sommer <public@thson.de>
X.509: if signature is unsupported skip validation
Heiner Kallweit <hkallweit1@gmail.com>
r8169: fix ASPM-related issues on a number of systems with NIC version from RTL8168h
Steve Rutherford <srutherford@google.com>
x86/sev: Make enc_dec_hypercall() accept a size instead of npages
Jann Horn <jannh@google.com>
dccp: Fix out of bounds access in DCCP error handler
Alexander Aring <aahringo@redhat.com>
dlm: fix plock lookup when using multiple lockspaces
Yafang Shao <laoar.shao@gmail.com>
bpf: Fix issue in verifying allow_ptr_leaks
Fudong Wang <fudong.wang@amd.com>
drm/amd/display: Add smu write msg id fail retry process
Helge Deller <deller@gmx.de>
parisc: Fix /proc/cpuinfo output for lscpu
Aleksa Sarai <cyphar@cyphar.com>
procfs: block chmod on /proc/thread-self/comm
Li Lingfeng <lilingfeng3@huawei.com>
block: don't add or resize partition on the disk with GENHD_FL_NO_PART
Bjorn Helgaas <bhelgaas@google.com>
Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset"
Dave Jiang <dave.jiang@intel.com>
ntb: Fix calculation ntb_transport_tx_free_entry()
Dave Jiang <dave.jiang@intel.com>
ntb: Clean up tx tail index on link down
Dave Jiang <dave.jiang@intel.com>
ntb: Drop packets when qp link is down
Feiyang Chen <chenfeiyang@loongson.cn>
PCI/PM: Only read PCI_PM_CTRL register when available
Dexuan Cui <decui@microsoft.com>
PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation
Ross Lagerwall <ross.lagerwall@citrix.com>
PCI: Free released resource after coalescing
Ranjan Kumar <ranjan.kumar@broadcom.com>
scsi: mpt3sas: Perform additional retries if doorbell read returns 0
Nilesh Javali <njavali@marvell.com>
Revert "scsi: qla2xxx: Fix buffer overrun"
Konrad Dybcio <konrad.dybcio@linaro.org>
media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
media: dvb: symbol fixup for dvb_attach()
Vitaly Rodionov <vitalyr@opensource.cirrus.com>
ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs.
Will Deacon <will@kernel.org>
arm64: csum: Fix OoB access in IP checksum code for negative lengths
Frank Li <Frank.Li@nxp.com>
i3c: master: svc: fix probe failure when no i3c device exist
Hongchen Zhang <zhanghongchen@loongson.cn>
LoongArch: mm: Add p?d_leaf() definitions
Max Filippov <jcmvbkbc@gmail.com>
xtensa: PMU: fix base address for the newer hardware
Hamza Mahfooz <hamza.mahfooz@amd.com>
drm/amd/display: register edp_backlight_control() for DCN301
Thomas Zimmermann <tzimmermann@suse.de>
backlight/lv5207lp: Compare against struct fb_info.device
Thomas Zimmermann <tzimmermann@suse.de>
backlight/bd6107: Compare against struct fb_info.device
Thomas Zimmermann <tzimmermann@suse.de>
backlight/gpio_backlight: Compare against struct fb_info.device
Pavel Begunkov <asml.silence@gmail.com>
io_uring: break iopolling on signal
Matthew Wilcox (Oracle) <willy@infradead.org>
XArray: Do not return sibling entries from xa_load()
Gustavo A. R. Silva <gustavoars@kernel.org>
ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch()
Yi Yang <yiyang13@huawei.com>
ipmi_si: fix a memleak in try_smi_init()
Rick Wertenbroek <rick.wertenbroek@gmail.com>
PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address
Sakari Ailus <sakari.ailus@linux.intel.com>
media: i2c: Add a camera sensor top level menu
Sakari Ailus <sakari.ailus@linux.intel.com>
media: i2c: ccs: Check rules is non-NULL
Thomas Gleixner <tglx@linutronix.de>
cpu/hotplug: Prevent self deadlock on CPU hot-unplug
Joel Fernandes (Google) <joel@joelfernandes.org>
mm/vmalloc: add a safer version of find_vm_area() for debug
Bart Van Assche <bvanassche@acm.org>
scsi: core: Fix the scsi_set_resid() documentation
Kees Cook <keescook@chromium.org>
printk: ringbuffer: Fix truncating buffer size min_t cast
Zqiang <qiang.zhang1211@gmail.com>
rcu: dump vmalloc memory info safely
Takashi Iwai <tiwai@suse.de>
ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl
Boris Brezillon <boris.brezillon@collabora.com>
PM / devfreq: Fix leak in devfreq_dev_release()
Radoslaw Tyl <radoslawx.tyl@intel.com>
igb: set max size RX buffer when store bad packet is enabled
Mohamed Khalfella <mkhalfella@purestorage.com>
skbuff: skb_segment, Call zero copy functions before using skbuff frags
Wander Lairson Costa <wander@redhat.com>
netfilter: xt_sctp: validate the flag_info count
Wander Lairson Costa <wander@redhat.com>
netfilter: xt_u32: validate user space input
Xiao Liang <shaw.leon@gmail.com>
netfilter: nft_exthdr: Fix non-linear header modification
Kyle Zeng <zengyhkyle@gmail.com>
netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c
Eric Dumazet <edumazet@google.com>
igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU
Yuan Yao <yuanyaogoog@chromium.org>
virtio_ring: fix avail_wrap_counter in virtqueue_add_packed
Liao Chang <liaochang1@huawei.com>
cpufreq: Fix the race condition while updating the transition_task of policy
Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Drivers: hv: vmbus: Don't dereference ACPI root object handle
ruanjinjie <ruanjinjie@huawei.com>
dmaengine: ste_dma40: Add missing IRQ check in d40_probe
Randy Dunlap <rdunlap@infradead.org>
um: Fix hostaudio build errors
Yi Yang <yiyang13@huawei.com>
mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume()
Hsin-Yi Wang <hsinyi@chromium.org>
mtd: spi-nor: Check bus width while setting QE bit
Marek Behún <kabel@kernel.org>
leds: trigger: tty: Do not use LED_ON/OFF constants, use led_blink_set_oneshot instead
Marek Behún <kabel@kernel.org>
leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false
Marek Behún <kabel@kernel.org>
leds: multicolor: Use rounded division when calculating color components
Dan Carpenter <dan.carpenter@linaro.org>
leds: pwm: Fix error code in led_pwm_create_fwnode()
Jiasheng Jiang <jiasheng@iscas.ac.cn>
rpmsg: glink: Add check for kstrdup
Jonas Karlman <jonas@kwiboo.se>
phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write
Zheng Yang <zhengyang@rock-chips.com>
phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate
Jonas Karlman <jonas@kwiboo.se>
phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328
Rex Zhang <rex.zhang@intel.com>
dmaengine: idxd: Modify the dependence of attribute pasid_enabled
William Zhang <william.zhang@broadcom.com>
mtd: rawnand: brcmnand: Fix mtd oobsize
Zheng Yejian <zhengyejian1@huawei.com>
tracing: Fix race issue between cpu buffer write and swap
Mikhail Kobuk <m.kobuk@ispras.ru>
tracing: Remove extra space at the end of hwlat_detector/mode
Dave Hansen <dave.hansen@linux.intel.com>
x86/speculation: Mark all Skylake CPUs as vulnerable to GDS
Paul Gortmaker <paul.gortmaker@windriver.com>
tick/rcu: Fix false positive "softirq work is pending" messages
Mario Limonciello <mario.limonciello@amd.com>
platform/x86/amd/pmf: Fix a missing cleanup path
Rahul Rameshbabu <sergeantsagara@protonmail.com>
HID: multitouch: Correct devm device reference for hidinput input_dev name
Rahul Rameshbabu <sergeantsagara@protonmail.com>
HID: uclogic: Correct devm device reference for hidinput input_dev name
Nikita Zhandarovich <n.zhandarovich@fintech.ru>
HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()
Yonatan Nachum <ynachum@amazon.com>
RDMA/efa: Fix wrong resources deallocation order
Guoqing Jiang <guoqing.jiang@linux.dev>
RDMA/siw: Correct wrong debug message
Guoqing Jiang <guoqing.jiang@linux.dev>
RDMA/siw: Balance the reference of cep->kref in the error path
Leon Romanovsky <leon@kernel.org>
Revert "IB/isert: Fix incorrect release of isert connection"
Peng Fan <peng.fan@nxp.com>
amba: bus: fix refcount leak
Yi Yang <yiyang13@huawei.com>
serial: tegra: handle clk prepare error in tegra_uart_hw_init()
Konrad Dybcio <konrad.dybcio@linaro.org>
interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting
Konrad Dybcio <konrad.dybcio@linaro.org>
interconnect: qcom: bcm-voter: Improve enable_mask handling
Konrad Dybcio <konrad.dybcio@linaro.org>
interconnect: qcom: sm8450: Enable sync_state
Chengfeng Ye <dg573847474@gmail.com>
scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock
Tony Battersby <tonyb@cybernetics.com>
scsi: core: Use 32-bit hostnum in scsi_host_lookup()
Christopher Bednarz <christopher.n.bednarz@intel.com>
RDMA/irdma: Prevent zero-length STAG registration
Junhao He <hejunhao3@huawei.com>
coresight: trbe: Fix TRBE potential sleep in atomic context
Lu Jialin <lujialin4@huawei.com>
cgroup:namespace: Remove unused cgroup_namespaces_init()
Chao Yu <chao@kernel.org>
Revert "f2fs: fix to do sanity check on extent cache correctly"
Chunhai Guo <guochunhai@vivo.com>
f2fs: Only lfs mode is allowed with zoned block device feature
Yangtao Li <frank.li@vivo.com>
f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED
Chao Yu <chao@kernel.org>
f2fs: fix to avoid mmap vs set_compress_option case
Jacopo Mondi <jacopo.mondi@ideasonboard.com>
media: i2c: rdacm21: Fix uninitialized value
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not working
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Add ov2680_fill_format() helper function
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Don't take the lock for try_fmt calls
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Fix vflip / hflip set functions
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Fix ov2680_bayer_order()
Hans de Goede <hdegoede@redhat.com>
media: ov2680: Remove auto-gain and auto-exposure controls
Dave Stevenson <dave.stevenson@raspberrypi.com>
media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips
Marek Vasut <marex@denx.de>
media: ov5640: Fix initial RESETB state and annotate timings
Marek Vasut <marex@denx.de>
media: ov5640: Enable MIPI interface in ov5640_set_power_mipi()
Illia Ostapyshyn <ostapyshyn@sra.uni-hannover.de>
HID: input: Support devices sending Eraser without Invert
David Gow <davidgow@google.com>
drivers: base: Free devm resources when unregistering a device
Alan Stern <stern@rowland.harvard.edu>
USB: gadget: f_mass_storage: Fix unused variable warning
Alan Stern <stern@rowland.harvard.edu>
USB: gadget: core: Add missing kerneldoc for vbus_work
Randy Dunlap <rdunlap@infradead.org>
docs: ABI: fix spelling/grammar in SBEFIFO timeout interface
Konrad Dybcio <konrad.dybcio@linaro.org>
media: venus: hfi_venus: Only consider sys_idle_indicator on V1
Colin Ian King <colin.i.king@gmail.com>
media: go7007: Remove redundant if statement
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: cec: core: add adap_unconfigured() callback
Hans Verkuil <hverkuil-cisco@xs4all.nl>
media: cec: core: add adap_nb_transmit_canceled() callback
Armin Wolf <W_Armin@gmx.de>
platform/x86: dell-sysman: Fix reference leak
Yanfei Xu <yanfei.xu@intel.com>
iommu/vt-d: Fix to flush cache of PASID directory table
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
iommu/qcom: Disable and reset context bank before programming
Eddie James <eajames@linux.ibm.com>
fsi: aspeed: Reset master errors after CFAM reset
Xiang Yang <xiangyang3@huawei.com>
IB/uverbs: Fix an potential error pointer dereference
Chengchang Tang <tangchengchang@huawei.com>
RDMA/hns: Fix CQ and QP cache affinity
Junxian Huang <huangjunxian6@hisilicon.com>
RDMA/hns: Fix inaccurate error label name in init instance
Junxian Huang <huangjunxian6@hisilicon.com>
RDMA/hns: Fix incorrect post-send with direct wqe of wr-list
Chengchang Tang <tangchengchang@huawei.com>
RDMA/hns: Fix port active speed
Jason Gunthorpe <jgg@ziepe.ca>
iommu/sprd: Add missing force_aperture
Chengci.Xu <chengci.xu@mediatek.com>
iommu/mediatek: Fix two IOMMU share pagetable issue
Yong Wu <yong.wu@mediatek.com>
iommu/mediatek: Remove unused "mapping" member from mtk_iommu_data
Arnd Bergmann <arnd@arndb.de>
extcon: cht_wc: add POWER_SUPPLY dependency
Arnd Bergmann <arnd@arndb.de>
kernfs: add stub helper for kernfs_generic_poll()
Jason Gunthorpe <jgg@ziepe.ca>
driver core: Call dma_cleanup() on the test_remove path
Dan Carpenter <dan.carpenter@linaro.org>
driver core: test_async: fix an error code
Rob Clark <robdclark@chromium.org>
dma-buf/sync_file: Fix docs syntax
Konrad Dybcio <konrad.dybcio@linaro.org>
interconnect: qcom: qcm2290: Enable sync state
Ruidong Tian <tianruidong@linux.alibaba.com>
coresight: tmc: Explicit type conversions to prevent integer overflow
Gustavo A. R. Silva <gustavoars@kernel.org>
RDMA/irdma: Replace one-element array with flexible-array member
Oleksandr Natalenko <oleksandr@redhat.com>
scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly
Oleksandr Natalenko <oleksandr@redhat.com>
scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() directly
Oleksandr Natalenko <oleksandr@redhat.com>
scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly
Bob Pearson <rpearsonhpe@gmail.com>
RDMA/rxe: Fix incomplete state save in rxe_requester
Bob Pearson <rpearsonhpe@gmail.com>
RDMA/rxe: Split rxe_run_task() into two subroutines
Randy Dunlap <rdunlap@infradead.org>
x86/APM: drop the duplicate APM_MINOR_DEV macro
Chunyan Zhang <chunyan.zhang@unisoc.com>
serial: sprd: Fix DMA buffer leak issue
Chunyan Zhang <chunyan.zhang@unisoc.com>
serial: sprd: Assign sprd_port after initialized to avoid wrong access
Biju Das <biju.das.jz@bp.renesas.com>
iio: accel: adxl313: Fix adxl313_i2c_id[] table
Lin Ma <linma@zju.edu.cn>
scsi: qla4xxx: Add length check when parsing nlattrs
Lin Ma <linma@zju.edu.cn>
scsi: be2iscsi: Add length check when parsing nlattrs
Lin Ma <linma@zju.edu.cn>
scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param()
Lin Ma <linma@zju.edu.cn>
scsi: iscsi: Add length check for nlattr payload
Wenchao Hao <haowenchao@huawei.com>
scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param()
Bart Van Assche <bvanassche@acm.org>
scsi: RDMA/srp: Fix residual handling
Xu Yang <xu.yang_2@nxp.com>
usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host()
Dan Carpenter <dan.carpenter@linaro.org>
media: mediatek: vcodec: fix resource leaks in vdec_msg_queue_init()
Dan Carpenter <dan.carpenter@linaro.org>
media: mediatek: vcodec: fix potential double free
Irui Wang <irui.wang@mediatek.com>
media: mediatek: vcodec: Return NULL if no vdec_fb is found
Ming Qian <ming.qian@nxp.com>
media: amphion: ensure the bitops don't cross boundaries
Ming Qian <ming.qian@nxp.com>
media: amphion: fix UNUSED_VALUE issue reported by coverity
Ming Qian <ming.qian@nxp.com>
media: amphion: fix UNINIT issues reported by coverity
Ming Qian <ming.qian@nxp.com>
media: amphion: fix REVERSE_INULL issues reported by coverity
Ming Qian <ming.qian@nxp.com>
media: amphion: fix CHECKED_RETURN issues reported by coverity
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: rkvdec: increase max supported height for H.264
Zheng Wang <zyytlz.wz@163.com>
media: mtk-jpeg: Fix use after free bug due to uncanceled work
Ming Qian <ming.qian@nxp.com>
media: amphion: add helper function to get id name
Ming Qian <ming.qian@nxp.com>
media: amphion: reinit vpu if reqbufs output 0
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
dt-bindings: extcon: maxim,max77843: restrict connector properties
Xingui Yang <yangxingui@huawei.com>
scsi: hisi_sas: Fix normally completed I/O analysed as failed
Xingui Yang <yangxingui@huawei.com>
scsi: hisi_sas: Fix warnings detected by sparse
Chuck Lever <chuck.lever@oracle.com>
RDMA/siw: Fabricate a GID on tun and loopback devices
Daniil Dulov <d.dulov@aladdin.ru>
media: cx24120: Add retval check for cx24120_message_send()
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer()
Daniil Dulov <d.dulov@aladdin.ru>
media: dib7000p: Fix potential division by zero
Dongliang Mu <dzm91@hust.edu.cn>
drivers: usb: smsusb: fix error handling code in smsusb_init_device
Jonas Karlman <jonas@kwiboo.se>
iommu: rockchip: Fix directory table address encoding
Daniel Marcovitch <dmarcovitch@nvidia.com>
iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link()
Claudiu Beznea <claudiu.beznea@microchip.com>
media: i2c: tvp5150: check return value of devm_kasprintf()
Hans de Goede <hdegoede@redhat.com>
media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables
Guoniu.zhou <guoniu.zhou@nxp.com>
media: ov5640: fix low resolution image abnormal issue
Minjie Du <duminjie@vivo.com>
RDMA/qedr: Remove a duplicate assignment in irdma_query_ah()
Waiman Long <longman@redhat.com>
cgroup/cpuset: Inherit parent's load balance state in v2
Anna Schumaker <Anna.Schumaker@Netapp.com>
pNFS: Fix assignment of xprtdata.cred
Olga Kornievskaia <kolga@netapp.com>
NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ
Benjamin Coddington <bcodding@redhat.com>
NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN
Chuck Lever <chuck.lever@oracle.com>
NFSD: da_addr_body field missing in some GETDEVICEINFO replies
Su Hui <suhui@nfschina.com>
fs: lockd: avoid possible wrong NULL parameter
Alexei Filippov <halip0503@gmail.com>
jfs: validate max amount of blocks before allocation.
Zhihao Cheng <chengzhihao1@huawei.com>
ext4: fix unttached inode after power cut with orphan file feature enabled
Russell Currey <ruscur@russell.cc>
powerpc/iommu: Fix notifiers being shared by PCI and VIO buses
Liang He <windhl@126.com>
powerpc/mpc5xxx: Add missing fwnode_handle_put()
Nicholas Piggin <npiggin@gmail.com>
powerpc/pseries: Fix hcall tracepoints with JUMP_LABEL=n
Dan Carpenter <dan.carpenter@linaro.org>
nfs/blocklayout: Use the passed in gfp flags
Russell Currey <ruscur@russell.cc>
powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT
Michael Ellerman <mpe@ellerman.id.au>
powerpc: Don't include lppaca.h in paca.h
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Fix READ_PLUS size calculations
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Fix up READ_PLUS alignment
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Fix READ_PLUS smatch warnings
Anna Schumaker <Anna.Schumaker@Netapp.com>
NFSv4.2: Rework scratch handling for READ_PLUS
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
wifi: ath10k: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
wifi: ath11k: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
net/mlx5: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drm/radeon: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drm/amdgpu: Use RMW accessors for changing LNKCTL
Christophe Leroy <christophe.leroy@csgroup.eu>
powerpc/perf: Convert fsl_emb notifier to state machine callbacks
Sourabh Jain <sourabhjain@linux.ibm.com>
powerpc/fadump: reset dump area size if fadump memory reserve fails
Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
nvdimm: Fix dereference after free in register_nvdimm_pmu()
Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
nvdimm: Fix memleak of pmu attr_groups in unregister_nvdimm_pmu()
Stefan Hajnoczi <stefanha@redhat.com>
vfio/type1: fix cap_migration information leak
Christophe Leroy <christophe.leroy@csgroup.eu>
powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
Ahmad Fatoum <a.fatoum@pengutronix.de>
clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op
Marco Felsch <m.felsch@pengutronix.de>
clk: imx8mp: fix sai4 clock
Peng Fan <peng.fan@nxp.com>
clk: imx: imx8ulp: update SPLL2 type
Ye Li <ye.li@nxp.com>
clk: imx: pllv4: Fix SPLL2 MULT range
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: gcc-sm8450: Use floor ops for SDCC RCGs
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
PCI/ASPM: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
PCI: pciehp: Use RMW accessors for changing LNKCTL
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
PCI: Add locking to RMW PCI Express Capability Register accessors
Ira Weiny <ira.weiny@intel.com>
PCI: Allow drivers to request exclusive config regions
Claudiu Beznea <claudiu.beznea@microchip.com>
pinctrl: mcp23s08: check return value of devm_kasprintf()
Wu Zongyong <wuzongyong@linux.alibaba.com>
PCI: Mark NVIDIA T4 GPUs to avoid bus reset
Daire McNamara <daire.mcnamara@microchip.com>
PCI: microchip: Correct the DED and SEC interrupt bit offsets
Luca Weiss <luca.weiss@fairphone.com>
clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: reset: Use the correct type of sleep/delay based on length
Dmitry Torokhov <dmitry.torokhov@gmail.com>
kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add()
Yi Liu <yi.l.liu@intel.com>
kvm/vfio: Prepare for accepting vfio device fd
Patrick Whewell <patrick.whewell@sightlineapplications.com>
clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src
Kemeng Shi <shikemeng@huaweicloud.com>
ext4: avoid potential data overflow in next_linear_group
Kemeng Shi <shikemeng@huaweicloud.com>
ext4: correct grp validation in ext4_mb_good_group
Qiuxu Zhuo <qiuxu.zhuo@intel.com>
EDAC/igen6: Fix the issue of no error events
David Wronek <davidwronek@gmail.com>
clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src
Zhang Jianhua <chris.zjh@huawei.com>
clk: sunxi-ng: Modify mismatched function name
Ira Weiny <ira.weiny@intel.com>
PCI/DOE: Fix destroy_work_on_stack() race
Minjie Du <duminjie@vivo.com>
drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init()
Manivannan Sadhasivam <mani@kernel.org>
PCI: qcom-ep: Switch MHI bus master clock off during L1SS
Sven Peter <sven@svenpeter.dev>
PCI: apple: Initialize pcie->nvecs before use
Alibek Omarov <a1ba.omarov@gmail.com>
clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: gcc-sc8280xp: Add missing GDSCs
Konrad Dybcio <konrad.dybcio@linaro.org>
dt-bindings: clock: qcom,gcc-sc8280xp: Add missing GDSCs
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: gcc-sc8280xp: Add missing GDSC flags
Andrew Halaney <ahalaney@redhat.com>
clk: qcom: gcc-sc8280xp: Add EMAC GDSCs
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: gpucc-sm6350: Fix clock source names
Konrad Dybcio <konrad.dybcio@linaro.org>
clk: qcom: gpucc-sm6350: Introduce index-based clk lookup
Corey Minyard <minyard@acm.org>
ipmi:ssif: Fix a memory leak when scanning for an adapter
Jiasheng Jiang <jiasheng@iscas.ac.cn>
ipmi:ssif: Add check for kstrdup
Su Hui <suhui@nfschina.com>
ALSA: ac97: Fix possible error value of *rac97
Geert Uytterhoeven <geert+renesas@glider.be>
of: unittest: Fix overlay type in apply/revert check
Geert Uytterhoeven <geert+renesas@glider.be>
of: overlay: Call of_changeset_init() early
Vijendar Mukunda <Vijendar.Mukunda@amd.com>
ASoC: SOF: amd: clear dsp to host interrupt status
David Jeffery <djeffery@redhat.com>
md: raid0: account for split bio in iostat accounting
Jan Kara <jack@suse.cz>
md/raid0: Fix performance regression for large sequential writes
Jan Kara <jack@suse.cz>
md/raid0: Factor out helper for mapping and submitting a bio
Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
md: add error_handlers for raid0 and linear
Xueshi Hu <xueshi.hu@smartx.com>
md/raid1: hold the barrier until handle_read_error() finishes
Xueshi Hu <xueshi.hu@smartx.com>
md/raid1: free the r1bio before waiting for blocked rdev
Vlad Karpovich <vkarpovi@opensource.cirrus.com>
firmware: cs_dsp: Fix new control name check
Yu Kuai <yukuai3@huawei.com>
md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid()
Yu Kuai <yukuai3@huawei.com>
md/raid5-cache: fix a deadlock in r5l_exit_log()
Tony Lindgren <tony@atomide.com>
bus: ti-sysc: Fix cast to enum warning
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sc8280xp-x13s: Unreserve NC pins
David Wronek <davidwronek@gmail.com>
arm64: dts: qcom: msm8996: Fix dsi1 interrupts
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: msm8998: Add missing power domain to MMSS SMMU
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: msm8998: Drop bus clock reference from MMSS SMMU
Bryan O'Donoghue <bryan.odonoghue@linaro.org>
arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names
Sui Jingfeng <suijingfeng@loongson.cn>
drm/mediatek: Fix potential memory leak if vmap() fail
Robert Marko <robert.marko@sartura.hr>
ARM: dts: qcom: ipq4019: correct SDHCI XO clock
Jason-JH.Lin <jason-jh.lin@mediatek.com>
drm/mediatek: Remove freeing not dynamic allocated memory
Tony Lindgren <tony@atomide.com>
bus: ti-sysc: Fix build warning for 64-bit build
AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
drm/mediatek: dp: Add missing error checks in mtk_dp_parse_capabilities
Pavel Begunkov <asml.silence@gmail.com>
io_uring: fix drain stalls by invalid SQE
Zhiguo Niu <zhiguo.niu@unisoc.com>
block/mq-deadline: use correct way to throttling write requests
Gaosheng Cui <cuigaosheng1@huawei.com>
audit: fix possible soft lockup in __audit_inode_child()
Fabio Estevam <festevam@denx.de>
drm/msm/a2xx: Call adreno_gpu_init() earlier
Yang Wang <kevinyang.wang@amd.com>
drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create()
Dan Carpenter <dan.carpenter@linaro.org>
smackfs: Prevent underflow in smk_set_cipso()
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done
Zhang Shurong <zhang_shurong@foxmail.com>
firmware: meson_sm: fix to avoid potential NULL pointer dereference
Daniel Vetter <daniel.vetter@ffwll.ch>
drm/msm/mdp5: Don't leak some plane state
Chen Jiahao <chenjiahao16@huawei.com>
soc: qcom: smem: Fix incompatible types in comparison
Jiasheng Jiang <jiasheng@iscas.ac.cn>
drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask
Nayna Jain <nayna@linux.ibm.com>
ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig
Marek Vasut <marex@denx.de>
drm/panel: simple: Add missing connector type and pixel format for AUO T215HVN01
Geert Uytterhoeven <geert@linux-m68k.org>
drm/repaper: Reduce temporary buffer size in repaper_fb_dirty()
Geert Uytterhoeven <geert+renesas@glider.be>
drm/armada: Fix off-by-one error in armada_overlay_get_property()
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM53573: Fix Tenda AC9 switch CPU port
Zeyan Li <qaz6750@outlook.com>
arm64: dts: qcom: sm8150: Fix the I2C7 interrupt
Ruan Jinjie <ruanjinjie@huawei.com>
of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name()
Yangtao Li <frank.li@vivo.com>
drm/tegra: dpaux: Fix incorrect return value of platform_get_irq
Ryan McCann <quic_rmccann@quicinc.com>
drm/msm: Update dev core dump to not print backwards
Yu Kuai <yukuai3@huawei.com>
md/md-bitmap: hold 'reconfig_mutex' in backlog_store()
Yu Kuai <yukuai3@huawei.com>
md/md-bitmap: remove unnecessary local variable in backlog_store()
Li Nan <linan122@huawei.com>
md/raid10: use dereference_rdev_and_rrdev() to get devices
Li Nan <linan122@huawei.com>
md/raid10: factor out dereference_rdev_and_rrdev()
Yu Kuai <yukuai3@huawei.com>
md: restore 'noio_flag' for the last mddev_resume()
Xiao Ni <xni@redhat.com>
md: Change active_io to percpu
Xiao Ni <xni@redhat.com>
md: Factor out is_md_suspended helper
Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
drm/amdgpu: Update min() to min_t() in 'amdgpu_info_ioctl'
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: msm8996-gemini: fix touchscreen VIO supply
Manivannan Sadhasivam <mani@kernel.org>
arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk"
Manivannan Sadhasivam <mani@kernel.org>
arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM53573: Fix Ethernet info for Luxul devices
Bogdan Togorean <bogdan.togorean@analog.com>
drm: adv7511: Fix low refresh rate register for ADV7533/5
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split)
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split)
Chen-Yu Tsai <wenst@chromium.org>
drm/bridge: anx7625: Use common macros for HDCP capabilities
Chen-Yu Tsai <wenst@chromium.org>
drm/bridge: anx7625: Use common macros for DP power sequencing commands
Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
x86/mm: Fix PAT bit missing from page protection modify mask
Christoph Hellwig <hch@lst.de>
block: don't allow enabling a cache on devices that don't support it
Christoph Hellwig <hch@lst.de>
block: cleanup queue_wc_store
Lucas Stach <l.stach@pengutronix.de>
drm/etnaviv: fix dumping of active MMU context
Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
arm64: tegra: Fix HSUART for Smaug
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: pmi8994: Add missing OVP interrupt
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: pm660l: Add missing short interrupt
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: pm6150l: Add missing short interrupt
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again
Jon Hunter <jonathanh@nvidia.com>
arm64: tegra: Fix HSUART for Jetson AGX Orin
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM53573: Use updated "spi-gpio" binding properties
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM53573: Add cells sizes to PCIe node
Rafał Miłecki <rafal@milecki.pl>
ARM: dts: BCM53573: Drop nonexistent #usb-cells
Arnd Bergmann <arnd@arndb.de>
drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar()
Nishanth Menon <nm@ti.com>
firmware: ti_sci: Use system_state to determine polling
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Update to generic ADC channel binding on DHSOM systems
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM
Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
ARM: dts: stm32: YAML validation fails for Odyssey Boards
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon
Olivier Moysan <olivier.moysan@foss.st.com>
ARM: dts: stm32: adopt generic iio bindings for adc channels on emstamp-argon
Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
ARM: dts: stm32: YAML validation fails for Argon Boards
Marek Vasut <marex@denx.de>
ARM: dts: stm32: Rename mdio0 to mdio
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: dts: qcom: pmk8350: fix ADC-TM compatible string
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: dts: qcom: pmr735b: fix thermal zone name
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: dts: qcom: pm8350b: fix thermal zone name
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
arm64: dts: qcom: pm8350: fix thermal zone name
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8350: Use proper CPU compatibles
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8350: Fix CPU idle state residency times
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sdm845-tama: Set serial indices and stdout-path
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sc8280xp: Add missing SCM interconnect
Bjorn Andersson <quic_bjorande@quicinc.com>
arm64: dts: qcom: sc8280xp-crd: Correct vreg_misc_3p3 GPIO
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8250-edo: Rectify gpio-keys
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs
Konrad Dybcio <konrad.dybcio@linaro.org>
arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
arm64: dts: qcom: msm8916-l8150: correct light sensor VDDIO supply
Vincent Guittot <vincent.guittot@linaro.org>
arm64: dts: qcom: sm8250: correct dynamic power coefficients
Konrad Dybcio <konrad.dybcio@somainline.org>
arm64: dts: qcom: sm6350: Fix ZAP region
Luca Weiss <luca@z3ntu.xyz>
soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros
Luca Weiss <luca@z3ntu.xyz>
soc: qcom: ocmem: Add OCMEM hardware version print
Randy Dunlap <rdunlap@infradead.org>
ASoC: stac9766: fix build errors with REGMAP_AC97
Sui Jingfeng <suijingfeng@loongson.cn>
drm/hyperv: Fix a compilation issue because of not including screen_info.h
Wesley Chalmers <Wesley.Chalmers@amd.com>
drm/amd/display: Do not set drr on pipe commit
Baokun Li <libaokun1@huawei.com>
quota: fix dqput() to follow the guarantees dquot_srcu should provide
Baokun Li <libaokun1@huawei.com>
quota: add new helper dquot_active()
Baokun Li <libaokun1@huawei.com>
quota: rename dquot_active() to inode_quota_active()
Baokun Li <libaokun1@huawei.com>
quota: factor out dquot_write_dquot()
Ondrej Jirman <megi@xff.cz>
drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller
Phil Elwell <phil@raspberrypi.com>
ASoC: cs43130: Fix numerator/denominator mixup
Marek Vasut <marex@denx.de>
drm/bridge: tc358764: Fix debug print parameter order
Kuniyuki Iwashima <kuniyu@amazon.com>
netrom: Deny concurrent connect().
Budimir Markovic <markovicbudimir@gmail.com>
net/sched: sch_hfsc: Ensure inner classes have fsc curve
Alex Austin <alex.austin@amd.com>
sfc: Check firmware supports Ethernet PTP filter
Suman Ghosh <sumang@marvell.com>
cteonxt2-pf: Fix backpressure config for multiple PFC priorities to work simultaneously
Suman Ghosh <sumang@marvell.com>
octeontx2-pf: Fix PFC TX scheduler free
Hariprasad Kelam <hkelam@marvell.com>
octeontx2-pf: Refactor schedular queue alloc/free calls
Biju Das <biju.das.jz@bp.renesas.com>
hwmon: (tmp513) Fix the channel number in tmp51x_is_visible()
Vadim Pasternak <vadimp@nvidia.com>
mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter
Vadim Pasternak <vadimp@nvidia.com>
mlxsw: i2c: Limit single transaction buffer size
Vadim Pasternak <vadimp@nvidia.com>
mlxsw: i2c: Fix chunk size setting in output mailbox buffer
Jinjie Ruan <ruanjinjie@huawei.com>
net: arcnet: Do not call kfree_skb() under local_irq_disable()
Jacob Keller <jacob.e.keller@intel.com>
ice: avoid executing commands on other ports when driving sync
Wang Ming <machel@vivo.com>
wifi: ath9k: use IS_ERR() with debugfs_create_dir()
Qi Zheng <zhengqi.arch@bytedance.com>
arm64: mm: use ptep_clear() instead of pte_clear() in clear_flush()
Jinjie Ruan <ruanjinjie@huawei.com>
Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave()
Dmitry Antipov <dmantipov@yandex.ru>
wifi: mwifiex: avoid possible NULL skb pointer dereference
Arnd Bergmann <arnd@arndb.de>
mac80211: make ieee80211_tx_info padding explicit
Lin Ma <linma@zju.edu.cn>
wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: protect WMI command response buffer replacement with a lock
Fedor Pchelkin <pchelkin@ispras.ru>
wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx
Daniel T. Lee <danieltimlee@gmail.com>
samples/bpf: fix broken map lookup probe
Daniel T. Lee <danieltimlee@gmail.com>
samples/bpf: fix bio latency check with tracepoint
Rob Herring <robh@kernel.org>
ARM: dts: Add .dts files missing from the build
Polaris Pi <pinkperfect2021@gmail.com>
wifi: mwifiex: Fix missed return in oob checks failed path
Dmitry Antipov <dmantipov@yandex.ru>
wifi: mwifiex: fix memory leak in mwifiex_histogram_read()
Eric Dumazet <edumazet@google.com>
net: annotate data-races around sk->sk_lingertime
Artem Chernyshev <artem.chernyshev@red-soft.ru>
fs: ocfs2: namei: check return value of ocfs2_add_entry()
Yan Zhai <yan@cloudflare.com>
lwt: Check LWTUNNEL_XMIT_CONTINUE strictly
Yan Zhai <yan@cloudflare.com>
lwt: Fix return values of BPF xmit ops
Florian Fainelli <florian.fainelli@broadcom.com>
hwrng: iproc-rng200 - Implement suspend and resume calls
Gaurav Jain <gaurav.jain@nxp.com>
crypto: caam - fix unchecked return value error
Przemek Kitszel <przemyslaw.kitszel@intel.com>
ice: ice_aq_check_events: fix off-by-one check when filling buffer
Abel Wu <wuyun.abel@bytedance.com>
net-memcg: Fix scope of sockmem pressure indicators
Lorenz Bauer <lmb@isovalent.com>
net: Fix slab-out-of-bounds in inet[6]_steal_sock
Alexander Danilenko <al.b.danilenko@gmail.com>
spi: tegra114: Remove unnecessary NULL-pointer checks
Yipeng Zou <zouyipeng@huawei.com>
selftests/bpf: Clean up fmod_ret in bench_rename test script
Yipeng Zou <zouyipeng@huawei.com>
selftests/bpf: Fix repeat option when kfunc_call verification fails
Menglong Dong <imagedong@tencent.com>
net: tcp: fix unexcepted socket die when snd_wnd is 0
Manish Mandlik <mmandlik@google.com>
Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor()
Douglas Anderson <dianders@chromium.org>
Bluetooth: hci_sync: Don't double print name in add/remove adv_monitor
Min Li <lm0963hack@gmail.com>
Bluetooth: Fix potential use-after-free when clear keys
Yuanjun Gong <ruc_gongyuanjun@163.com>
Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe()
Herbert Xu <herbert@gondor.apana.org.au>
crypto: api - Use work queue in crypto_destroy_instance
Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
crypto: stm32 - Properly handle pm_runtime_get failing
Miguel Ojeda <ojeda@kernel.org>
kbuild: rust_is_available: fix confusion when a version appears in the path
Miguel Ojeda <ojeda@kernel.org>
kbuild: rust_is_available: add check for `bindgen` invocation
Russell Currey <ruscur@russell.cc>
kbuild: rust_is_available: fix version check when CC has multiple arguments
Masahiro Yamada <masahiroy@kernel.org>
kbuild: rust_is_available: remove -v option
Alan Maguire <alan.maguire@oracle.com>
selftests/bpf: fix static assert compilation issue for test_cls_*.c
Dmitry Antipov <dmantipov@yandex.ru>
wifi: mwifiex: fix error recovery in PCIE buffer descriptor management
Polaris Pi <pinkperfect2021@gmail.com>
wifi: mwifiex: Fix OOB and integer underflow when rx packets
Ryder Lee <ryder.lee@mediatek.com>
wifi: mt76: mt7915: fix power-limits while chan_switch
Marc Kleine-Budde <mkl@pengutronix.de>
can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM
Zhang Shurong <zhang_shurong@foxmail.com>
spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe()
Lin Ma <linma@zju.edu.cn>
wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH
Lorenz Bauer <lmb@isovalent.com>
bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign
Lorenz Bauer <lmb@isovalent.com>
net: remove duplicate reuseport_lookup functions
Lorenz Bauer <lmb@isovalent.com>
net: export inet_lookup_reuseport and inet6_lookup_reuseport
Lorenz Bauer <lmb@isovalent.com>
bpf: reject unhashed sockets in bpf_sk_assign
Lorenz Bauer <lmb@isovalent.com>
udp: re-score reuseport groups when connected sockets are present
Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
wifi: mt76: mt7921: fix non-PSC channel scan fail
Zhang Shurong <zhang_shurong@foxmail.com>
wifi: rtw89: debug: Fix error handling in rtw89_debug_priv_btc_manual_set()
Dan Carpenter <dan.carpenter@linaro.org>
regmap: rbtree: Use alloc_flags for memory allocations
Martin Kaiser <martin@kaiser.cx>
hwrng: pic32 - use devm_clk_get_enabled
Martin Kaiser <martin@kaiser.cx>
hwrng: nomadik - keep clock enabled while hwrng is registered
Eric Dumazet <edumazet@google.com>
tcp: tcp_enter_quickack_mode() should be static
Giovanni Cabiddu <giovanni.cabiddu@intel.com>
crypto: qat - change value of default idle filter
Yafang Shao <laoar.shao@gmail.com>
bpf: Fix an error in verifying a field in a union
Yafang Shao <laoar.shao@gmail.com>
bpf: Clear the probe_addr for uprobe
Andrii Nakryiko <andrii@kernel.org>
libbpf: Fix realloc API handling in zero-sized edge cases
Alexander Lobakin <alobakin@pm.me>
bpftool: Use a local bpf_perf_event_value to fix accessing its fields
Quentin Monnet <quentin@isovalent.com>
bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c
Alexander Lobakin <alobakin@pm.me>
bpftool: Define a local bpf_perf_link to fix accessing its fields
Alexander Lobakin <alobakin@pm.me>
bpftool: use a local copy of perf_event to fix accessing :: Bpf_cookie
Daniel Borkmann <daniel@iogearbox.net>
selftests/bpf: Fix bpf_nf failure upon test rerun
Liao Chang <liaochang1@huawei.com>
cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit()
Mikel Rychliski <mikel@mikelr.com>
x86/efistub: Fix PCI ROM preservation in mixed mode
Swapnil Sapkal <swapnil.sapkal@amd.com>
cpufreq: amd-pstate-ut: Fix kernel panic when loading the driver
Swapnil Sapkal <swapnil.sapkal@amd.com>
cpufreq: amd-pstate-ut: Remove module parameter access
Peng Fan <peng.fan@nxp.com>
thermal/of: Fix potential uninitialized value access
Mario Limonciello <mario.limonciello@amd.com>
ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table
Mario Limonciello <mario.limonciello@amd.com>
ACPI: x86: s2idle: Post-increment variables when getting constraints
Bibo Mao <maobibo@loongson.cn>
irqchip/loongson-eiointc: Fix return value checking of eiointc_index
Holger Dengler <dengler@linux.ibm.com>
s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs
Holger Dengler <dengler@linux.ibm.com>
s390/pkey: fix PKEY_TYPE_EP11_AES handling for sysfs attributes
Holger Dengler <dengler@linux.ibm.com>
s390/pkey: fix PKEY_TYPE_EP11_AES handling in PKEY_GENSECK2 IOCTL
Holger Dengler <dengler@linux.ibm.com>
s390/pkey: fix/harmonize internal keyblob headers
Nysal Jan K.A <nysal@linux.ibm.com>
selftests/futex: Order calls to futex_lock_pi
Xu Yang <xu.yang_2@nxp.com>
perf/imx_ddr: don't enable counter0 if none of 4 counters are used
Cyril Hrubis <chrubis@suse.cz>
sched/rt: Fix sysctl_sched_rr_timeslice intial value
Mark Brown <broonie@kernel.org>
arm64/fpsimd: Only provide the length to cpufeature for xCR registers
Mark Brown <broonie@kernel.org>
arm64/sme: Don't use streaming mode to probe the maximum SME VL
Ard Biesheuvel <ardb@kernel.org>
x86/decompressor: Don't rely on upper 32 bits of GPRs being preserved
Randy Dunlap <rdunlap@infradead.org>
sched/psi: Select KERNFS as needed
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
arm64/ptrace: Clean up error handling path in sve_set_common()
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
selftests/resctrl: Close perf value read fd on errors
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
selftests/resctrl: Unmount resctrl FS if child fails to run benchmark
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
selftests/resctrl: Don't leak buffer in fill_cache()
Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
selftests/resctrl: Add resctrl.h into build deps
Manivannan Sadhasivam <mani@kernel.org>
OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd()
Waiman Long <longman@redhat.com>
refscale: Fix uninitalized use of wait_queue_head_t
Kees Cook <keescook@chromium.org>
ARM: ptrace: Restore syscall skipping for tracers
Kees Cook <keescook@chromium.org>
ARM: ptrace: Restore syscall restart tracing
David Howells <dhowells@redhat.com>
vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing
Kees Cook <keescook@chromium.org>
selftests/harness: Actually report SKIP for signal tests
Christian Brauner <brauner@kernel.org>
tmpfs: verify {g,u}id mount options correctly
Matthew Wilcox (Oracle) <willy@infradead.org>
iomap: Remove large folio handling in iomap_invalidate_folio()
Wang Ming <machel@vivo.com>
fs: Fix error checking for d_hash_and_lookup()
Wen Yang <wenyang.linux@foxmail.com>
eventfd: prevent underflow for eventfd semaphores
Matthew Wilcox <willy@infradead.org>
reiserfs: Check the return value from __getblk()
Viktor Malik <vmalik@redhat.com>
tools/resolve_btfids: Fix setting HOSTCFLAGS
Jiri Olsa <jolsa@kernel.org>
tools/resolve_btfids: Pass HOSTCFLAGS as EXTRA_CFLAGS to prepare targets
Ian Rogers <irogers@google.com>
tools/resolve_btfids: Tidy HOST_OVERRIDES
Jiri Olsa <jolsa@kernel.org>
tools/resolve_btfids: Compile resolve_btfids as host program
Ian Rogers <irogers@google.com>
tools/resolve_btfids: Alter how HOSTCC is forced
Ian Rogers <irogers@google.com>
tools/resolve_btfids: Install subcmd headers
Shen Jiamin <shen_jiamin@comp.nus.edu.sg>
tools/resolve_btfids: Use pkg-config to locate libelf
Ian Rogers <irogers@google.com>
tools lib subcmd: Add dependency test to install_headers
Ian Rogers <irogers@google.com>
tools lib subcmd: Make install_headers clearer
Ian Rogers <irogers@google.com>
tools lib subcmd: Add install target
Sabrina Dubroca <sd@queasysnail.net>
Revert "net: macsec: preserve ingress frame ordering"
Vidya Sagar <vidyas@nvidia.com>
Revert "PCI: tegra194: Enable support for 256 Byte payload"
Werner Sembach <wse@tuxedocomputers.com>
Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN
Jan Kara <jack@suse.cz>
udf: Handle error when adding extent to a file
Vladislav Efanov <VEfanov@ispras.ru>
udf: Check consistency of Space Bitmap Descriptor
Hamza Mahfooz <hamza.mahfooz@amd.com>
drm/amd/display: ensure async flips are only accepted for fast updates
Jordan Rife <jrife@google.com>
net: Avoid address overwrite in kernel_connect
Sean Christopherson <seanjc@google.com>
KVM: x86/mmu: Add "never" option to allow sticky disabling of nx_huge_pages
Christophe JAILLET <christophe.jaillet@wanadoo.fr>
KVM: x86/mmu: Use kstrtobool() instead of strtobool()
Jarkko Sakkinen <jarkko@kernel.org>
tpm: Enable hwrng only for Pluton on AMD CPUs
Herbert Xu <herbert@gondor.apana.org.au>
crypto: rsa-pkcs1pad - Use helper to set reqsize
Doug Smythies <dsmythies@telus.net>
cpufreq: intel_pstate: set stale CPU frequency to minimum
Saravana Kannan <saravanak@google.com>
of: property: Simplify of_link_to_phandle()
Shih-Yi Chen <shihyic@nvidia.com>
platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE notifications
Zheng Yejian <zhengyejian1@huawei.com>
tracing: Introduce pipe_cpumask to avoid race on trace_pipes
Josua Mayer <josua@solid-run.com>
net: sfp: handle 100G/25G active optical cables in sfp_parse_support
Takashi Iwai <tiwai@suse.de>
ALSA: seq: oss: Fix racy open/close of MIDI devices
Qi Hu <huqi@loongson.cn>
LoongArch: Fix the write_fcsr() macro
Hongchen Zhang <zhanghongchen@loongson.cn>
LoongArch: Let pmd_present() return true when splitting pmd
Justin Tee <justintee8345@gmail.com>
scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path
Michael Kelley <mikelley@microsoft.com>
scsi: storvsc: Always set no_report_opcodes
Sagar Biradar <sagar.biradar@microchip.com>
scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity
Dan Carpenter <dan.carpenter@linaro.org>
sctp: handle invalid error codes without calling BUG()
Shyam Prasad N <sprasad@microsoft.com>
cifs: fix max_credits implementation
Shyam Prasad N <sprasad@microsoft.com>
cifs: fix sockaddr comparison in iface_cmp
David Christensen <drc@linux.vnet.ibm.com>
bnx2x: fix page fault following EEH recovery
Dmitry Mastykin <dmastykin@astralinux.ru>
netlabel: fix shift wrapping bug in netlbl_catmap_setlong()
Ilan Peer <ilan.peer@intel.com>
wifi: mac80211: Use active_links instead of valid_links in Tx
Johannes Berg <johannes.berg@intel.com>
wifi: cfg80211: remove links only on AP
Lijo Lazar <lijo.lazar@amd.com>
drm/amdgpu: Match against exact bootloader status
Jian Shen <shenjian15@huawei.com>
net: hns3: restore user pause configure when disable autoneg
Chengfeng Ye <dg573847474@gmail.com>
scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock
Justin Tee <justin.tee@broadcom.com>
scsi: lpfc: Remove reftag check in DIF paths
Yang Li <yang.lee@linux.alibaba.com>
platform/x86/amd/pmf: Fix unsigned comparison with less than zero
Baoquan He <bhe@redhat.com>
idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM
Benjamin Gray <bgray@linux.ibm.com>
powerpc/powermac: Use early_* IO variants in via_calibrate_decr()
Hans de Goede <hdegoede@redhat.com>
wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1()
Martin Kohn <m.kohn@welotec.com>
net: usb: qmi_wwan: add Quectel EM05GV2
Eric Dumazet <edumazet@google.com>
net: annotate data-races around sk->sk_{rcv|snd}timeo
Lukasz Majewski <lukma@denx.de>
net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries
Kalle Valo <kvalo@kernel.org>
Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12"
Ani Sinha <anisinha@redhat.com>
vmbus_testing: fix wrong python syntax for integer value comparison
Baoquan He <bhe@redhat.com>
clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM
Masami Hiramatsu (Google) <mhiramat@kernel.org>
kprobes: Prohibit probing on CFI preamble symbol
Christian Göttsche <cgzones@googlemail.com>
security: keys: perform capable check only on privileged operations
Raphael Gallais-Pou <rgallaispou@gmail.com>
staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER
Jussi Laako <jussi@sonarnerd.net>
ALSA: usb-audio: Update for native DSD support quirks
Minjie Du <duminjie@vivo.com>
ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer()
Eric Snowberg <eric.snowberg@oracle.com>
ovl: Always reevaluate the file signature for IMA
Leo Chen <sancchen@amd.com>
drm/amd/display: Exit idle optimizations before attempt to access PHY
George Shen <george.shen@amd.com>
drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family
Jane Jian <Jane.Jian@amd.com>
drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock
Konstantin Shelekhin <k.shelekhin@ftml.net>
platform/x86: huawei-wmi: Silence ambient light sensor
Kristian Angelov <kristiana2000@abv.bg>
platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops
Wang Ming <machel@vivo.com>
platform/x86: think-lmi: Use kfree_sensitive instead of kfree
Maxim Mikityanskiy <maxtram95@gmail.com>
platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks
Hans de Goede <hdegoede@redhat.com>
platform/x86: intel: hid: Always call BTNL ACPI method
Takashi Iwai <tiwai@suse.de>
ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset
Guiting Shen <aarongt.shen@gmail.com>
ASoC: atmel: Fix the 8K sample parameter in I2SC master
Shuming Fan <shumingf@realtek.com>
ASoC: rt711-sdca: fix for JD event handling in ClockStop Mode0
Shuming Fan <shumingf@realtek.com>
ASoC: rt711: fix for JD event handling in ClockStop Mode0
Edgar <ljijcj@163.com>
ASoc: codecs: ES8316: Fix DMIC config
Shuming Fan <shumingf@realtek.com>
ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0
Winston Wen <wentao@uniontech.com>
fs/nls: make load_nls() take a const parameter
Stefan Haberland <sth@linux.ibm.com>
s390/dasd: fix hanging device after request requeue
Stefan Haberland <sth@linux.ibm.com>
s390/dasd: use correct number of retries for ERP requests
Ben Hutchings <benh@debian.org>
m68k: Fix invalid .section syntax
Yuanjun Gong <ruc_gongyuanjun@163.com>
ethernet: atheros: fix return value check in atl1c_tso_csum()
Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect
Dmytro Maluka <dmy@semihalf.com>
ASoC: da7219: Check for failure reading AAD IRQ events
Dmytro Maluka <dmy@semihalf.com>
ASoC: da7219: Flush pending AAD IRQ when suspending
Namjae Jeon <linkinjeon@kernel.org>
ksmbd: fix out of bounds in init_smb2_rsp_hdr()
Namjae Jeon <linkinjeon@kernel.org>
ksmbd: no response from compound read
Namjae Jeon <linkinjeon@kernel.org>
ksmbd: validate session id and tree id in compound request
Namjae Jeon <linkinjeon@kernel.org>
ksmbd: fix out of bounds in smb3_decrypt_req()
Dominique Martinet <asmadeus@codewreck.org>
9p: virtio: make sure 'offs' is initialized in zc_request
Dominique Martinet <asmadeus@codewreck.org>
9p: virtio: fix unlikely null pointer deref in handle_rerror
Nikolay Burykin <burikin@ivk.ru>
media: pci: cx23885: fix error handling for cx23885 ATSC boards
Dmitry Antipov <dmantipov@yandex.ru>
media: pulse8-cec: handle possible ping error
Alexander Stein <alexander.stein@ew.tq-group.com>
media: amphion: use dev_err_probe
Adrien Thierry <athierry@redhat.com>
phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code
Maciej W. Rozycki <macro@orcam.me.uk>
Revert "MIPS: unhide PATA_PLATFORM"
Benjamin Gaignard <benjamin.gaignard@collabora.com>
media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field
Nathan Chancellor <nathan@kernel.org>
powerpc/boot: Disable power10 features after BOOTAFLAGS assignment
Chris Chiu <chris.chiu@canonical.com>
ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform
Xiaolei Wang <xiaolei.wang@windriver.com>
ARM: dts: imx: Set default tuning step for imx7d usdhc
Aurabindo Pillai <aurabindo.pillai@amd.com>
Revert "Revert drm/amd/display: Enable Freesync Video Mode by default"
Bart Van Assche <bvanassche@acm.org>
scsi: ufs: Try harder to change the power mode
Daniel Miess <daniel.miess@amd.com>
Partially revert "drm/amd/display: Fix possible underflow for displays with large vblank"
Kuniyuki Iwashima <kuniyu@amazon.com>
Revert "bridge: Add extack warning when enabling STP in netns."
-------------
Diffstat:
.../ABI/testing/sysfs-bus-fsi-devices-sbefifo | 6 +-
.../ABI/testing/sysfs-driver-chromeos-acpi | 2 +-
.../devicetree/bindings/extcon/maxim,max77843.yaml | 1 +
Documentation/scsi/scsi_mid_low_api.rst | 4 +-
.../media/v4l/ext-ctrls-codec-stateless.rst | 7 +
Makefile | 8 +-
arch/arm/boot/dts/Makefile | 8 +
arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts | 13 +
arch/arm/boot/dts/bcm47189-luxul-xap-810.dts | 13 +
arch/arm/boot/dts/bcm47189-tenda-ac9.dts | 4 +-
arch/arm/boot/dts/bcm53573.dtsi | 5 +-
arch/arm/boot/dts/bcm947189acdbmr.dts | 6 +-
arch/arm/boot/dts/imx7s.dtsi | 6 +
arch/arm/boot/dts/qcom-ipq4019.dtsi | 9 +-
arch/arm/boot/dts/s3c6410-mini6410.dts | 2 +-
arch/arm/boot/dts/s5pv210-smdkv210.dts | 10 +-
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 21 +-
arch/arm/boot/dts/stm32mp157c-ev1.dts | 2 +-
arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts | 2 +-
arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi | 14 +-
arch/arm/boot/dts/stm32mp157c-odyssey.dts | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 24 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 40 ++-
.../boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi | 2 +-
arch/arm/include/asm/syscall.h | 3 +
arch/arm/kernel/entry-common.S | 1 +
arch/arm/kernel/ptrace.c | 5 +-
arch/arm/mach-omap2/powerdomain.c | 2 +-
arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 1 +
.../dts/nvidia/tegra234-p3737-0000+p3701-0000.dts | 1 +
arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 6 +-
.../boot/dts/qcom/msm8916-longcheer-l8150.dts | 2 +-
arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts | 2 +-
arch/arm64/boot/dts/qcom/msm8996.dtsi | 5 +-
arch/arm64/boot/dts/qcom/msm8998.dtsi | 8 +-
arch/arm64/boot/dts/qcom/pm6150l.dtsi | 5 +-
arch/arm64/boot/dts/qcom/pm660l.dtsi | 5 +-
arch/arm64/boot/dts/qcom/pm8350.dtsi | 2 +-
arch/arm64/boot/dts/qcom/pm8350b.dtsi | 2 +-
arch/arm64/boot/dts/qcom/pmi8994.dtsi | 5 +-
arch/arm64/boot/dts/qcom/pmk8350.dtsi | 2 +-
arch/arm64/boot/dts/qcom/pmr735b.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 4 +-
.../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 2 +-
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 1 +
.../boot/dts/qcom/sdm845-sony-xperia-tama.dtsi | 9 +
arch/arm64/boot/dts/qcom/sdm845.dtsi | 3 +-
arch/arm64/boot/dts/qcom/sm6350.dtsi | 10 +-
arch/arm64/boot/dts/qcom/sm8150.dtsi | 2 +-
.../dts/qcom/sm8250-sony-xperia-edo-pdx203.dts | 233 ++++++++++++++
.../dts/qcom/sm8250-sony-xperia-edo-pdx206.dts | 243 ++++++++++++++
.../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 54 +++-
arch/arm64/boot/dts/qcom/sm8250.dtsi | 11 +-
arch/arm64/boot/dts/qcom/sm8350.dtsi | 31 +-
arch/arm64/include/asm/sdei.h | 6 +
arch/arm64/kernel/entry.S | 27 +-
arch/arm64/kernel/fpsimd.c | 25 +-
arch/arm64/kernel/ptrace.c | 3 +-
arch/arm64/kernel/sdei.c | 3 +
arch/arm64/kernel/smp.c | 8 +-
arch/arm64/lib/csum.c | 2 +-
arch/arm64/mm/hugetlbpage.c | 2 +-
arch/loongarch/include/asm/loongarch.h | 2 +-
arch/loongarch/include/asm/pgtable-bits.h | 2 +
arch/loongarch/include/asm/pgtable.h | 6 +-
arch/m68k/fpsp040/skeleton.S | 4 +-
arch/m68k/ifpsp060/os.S | 4 +-
arch/m68k/kernel/relocate_kernel.S | 4 +-
arch/mips/Kconfig | 1 -
arch/parisc/kernel/processor.c | 13 +-
arch/powerpc/boot/Makefile | 6 +-
arch/powerpc/include/asm/lppaca.h | 13 +-
arch/powerpc/include/asm/paca.h | 6 +-
arch/powerpc/include/asm/paravirt.h | 1 +
arch/powerpc/include/asm/plpar_wrappers.h | 1 +
arch/powerpc/kernel/fadump.c | 1 +
arch/powerpc/kernel/iommu.c | 17 +-
arch/powerpc/kvm/book3s_hv_ras.c | 1 +
arch/powerpc/mm/book3s64/radix_tlb.c | 240 +++++++-------
arch/powerpc/mm/book3s64/slb.c | 1 +
arch/powerpc/perf/core-fsl-emb.c | 8 +-
arch/powerpc/platforms/powermac/time.c | 6 +-
arch/powerpc/platforms/pseries/hvCall.S | 1 +
arch/powerpc/platforms/pseries/lpar.c | 10 +-
arch/powerpc/platforms/pseries/lparcfg.c | 4 +-
arch/powerpc/platforms/pseries/setup.c | 2 +-
arch/powerpc/sysdev/mpc5xxx_clocks.c | 4 +-
arch/powerpc/xmon/xmon.c | 1 +
arch/s390/crypto/paes_s390.c | 2 +-
arch/s390/include/uapi/asm/pkey.h | 2 +-
arch/s390/kernel/ipl.c | 2 +
arch/um/configs/i386_defconfig | 1 +
arch/um/configs/x86_64_defconfig | 1 +
arch/um/drivers/Kconfig | 16 +-
arch/um/drivers/Makefile | 2 +-
arch/x86/boot/compressed/head_64.S | 30 +-
arch/x86/events/intel/uncore_snbep.c | 12 +-
arch/x86/include/asm/mem_encrypt.h | 6 +-
arch/x86/include/asm/pgtable_types.h | 11 +-
arch/x86/kernel/apm_32.c | 6 -
arch/x86/kernel/cpu/common.c | 8 +-
arch/x86/kernel/cpu/mce/core.c | 26 ++
arch/x86/kernel/cpu/mce/internal.h | 5 +-
arch/x86/kernel/cpu/sgx/virt.c | 3 +
arch/x86/kernel/kvm.c | 4 +-
arch/x86/kvm/mmu/mmu.c | 42 ++-
arch/x86/mm/mem_encrypt_amd.c | 13 +-
arch/xtensa/include/asm/core.h | 9 +
arch/xtensa/kernel/perf_event.c | 17 +-
block/blk-settings.c | 7 +-
block/blk-sysfs.c | 21 +-
block/ioctl.c | 2 +
block/mq-deadline.c | 3 +-
crypto/algapi.c | 16 +-
crypto/asymmetric_keys/x509_public_key.c | 5 +
crypto/rsa-pkcs1pad.c | 5 +-
drivers/acpi/x86/s2idle.c | 39 +--
drivers/amba/bus.c | 1 +
drivers/ata/pata_arasan_cf.c | 3 +-
drivers/base/core.c | 11 +
drivers/base/dd.c | 2 +
drivers/base/regmap/regcache-rbtree.c | 10 +-
drivers/base/test/test_async_driver_probe.c | 2 +-
drivers/bluetooth/btusb.c | 2 +-
drivers/bluetooth/hci_nokia.c | 6 +-
drivers/bus/imx-weim.c | 6 +
drivers/bus/ti-sysc.c | 2 +-
drivers/char/hw_random/iproc-rng200.c | 25 ++
drivers/char/hw_random/nomadik-rng.c | 12 +-
drivers/char/hw_random/pic32-rng.c | 19 +-
drivers/char/ipmi/ipmi_si_intf.c | 5 +
drivers/char/ipmi/ipmi_ssif.c | 7 +-
drivers/char/tpm/tpm_crb.c | 33 +-
drivers/clk/Kconfig | 1 +
drivers/clk/imx/clk-composite-8m.c | 12 +-
drivers/clk/imx/clk-imx8mp.c | 5 -
drivers/clk/imx/clk-imx8ulp.c | 2 +-
drivers/clk/imx/clk-pllv4.c | 46 ++-
drivers/clk/imx/clk.h | 1 +
drivers/clk/keystone/pll.c | 2 +-
drivers/clk/qcom/gcc-sc7180.c | 1 +
drivers/clk/qcom/gcc-sc8280xp.c | 139 +++++++-
drivers/clk/qcom/gcc-sm6350.c | 1 +
drivers/clk/qcom/gcc-sm8250.c | 1 +
drivers/clk/qcom/gcc-sm8450.c | 4 +-
drivers/clk/qcom/gpucc-sm6350.c | 18 +-
drivers/clk/qcom/reset.c | 3 +-
drivers/clk/rockchip/clk-rk3568.c | 2 +-
drivers/clk/sunxi-ng/ccu_mmc_timing.c | 2 +-
drivers/cpufreq/amd-pstate-ut.c | 46 ++-
drivers/cpufreq/brcmstb-avs-cpufreq.c | 6 +-
drivers/cpufreq/cpufreq.c | 2 +
drivers/cpufreq/intel_pstate.c | 5 +
drivers/cpufreq/powernow-k8.c | 3 +-
drivers/cpuidle/cpuidle-pseries.c | 8 +-
drivers/crypto/caam/caampkc.c | 4 +-
drivers/crypto/qat/qat_common/adf_gen4_pm.h | 2 +-
drivers/crypto/stm32/stm32-hash.c | 9 +-
drivers/devfreq/devfreq.c | 1 +
drivers/dma/Kconfig | 2 +
drivers/dma/idxd/sysfs.c | 2 +-
drivers/dma/ste_dma40.c | 4 +
drivers/edac/igen6_edac.c | 8 +-
drivers/extcon/Kconfig | 1 +
drivers/firmware/arm_sdei.c | 19 ++
drivers/firmware/cirrus/cs_dsp.c | 3 +-
drivers/firmware/efi/libstub/x86-stub.c | 2 +-
drivers/firmware/meson/meson_sm.c | 2 +
drivers/firmware/ti_sci.c | 36 +--
drivers/fsi/fsi-master-aspeed.c | 2 +
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 14 +-
drivers/gpu/drm/amd/amdgpu/cik.c | 36 +--
drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 15 +-
drivers/gpu/drm/amd/amdgpu/si.c | 36 +--
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 36 ++-
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 12 -
.../drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c | 20 +-
.../amd/display/dc/dce110/dce110_hw_sequencer.c | 3 +
.../gpu/drm/amd/display/dc/dcn301/dcn301_init.c | 1 +
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c | 3 +-
.../gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c | 2 +-
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 10 +-
.../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 2 +-
drivers/gpu/drm/armada/armada_overlay.c | 6 +-
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 9 +-
drivers/gpu/drm/bridge/analogix/anx7625.c | 12 +-
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 28 +-
drivers/gpu/drm/bridge/tc358764.c | 2 +-
drivers/gpu/drm/etnaviv/etnaviv_dump.c | 14 +-
drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 1 +
drivers/gpu/drm/mediatek/mtk_dp.c | 15 +-
drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 7 +-
drivers/gpu/drm/mediatek/mtk_drm_gem.c | 6 +-
drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 8 +-
.../gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 3 +-
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 3 +-
drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 2 +-
drivers/gpu/drm/panel/panel-simple.c | 4 +-
drivers/gpu/drm/radeon/cik.c | 36 +--
drivers/gpu/drm/radeon/si.c | 37 +--
drivers/gpu/drm/tegra/dpaux.c | 2 +-
drivers/gpu/drm/tiny/repaper.c | 2 +-
drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +-
drivers/hid/hid-input.c | 18 +-
drivers/hid/hid-logitech-dj.c | 5 +-
drivers/hid/hid-multitouch.c | 13 +-
drivers/hid/hid-uclogic-core.c | 13 +-
drivers/hv/vmbus_drv.c | 3 +-
drivers/hwmon/tmp513.c | 2 +-
drivers/hwtracing/coresight/coresight-tmc-etf.c | 2 +-
drivers/hwtracing/coresight/coresight-tmc-etr.c | 5 +-
drivers/hwtracing/coresight/coresight-tmc.h | 2 +-
drivers/hwtracing/coresight/coresight-trbe.c | 32 +-
drivers/i2c/i2c-core-of.c | 5 +
drivers/i3c/master/svc-i3c-master.c | 14 +-
drivers/iio/accel/adxl313_i2c.c | 4 +-
.../infiniband/core/uverbs_std_types_counters.c | 2 +
drivers/infiniband/hw/efa/efa_verbs.c | 6 +-
drivers/infiniband/hw/hns/hns_roce_device.h | 1 +
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 11 +-
drivers/infiniband/hw/hns/hns_roce_main.c | 7 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 28 +-
drivers/infiniband/hw/irdma/ctrl.c | 6 +
drivers/infiniband/hw/irdma/main.h | 2 +-
drivers/infiniband/hw/irdma/type.h | 2 +
drivers/infiniband/hw/irdma/verbs.c | 11 +-
drivers/infiniband/sw/rxe/rxe_comp.c | 19 +-
drivers/infiniband/sw/rxe/rxe_net.c | 4 +-
drivers/infiniband/sw/rxe/rxe_qp.c | 10 +-
drivers/infiniband/sw/rxe/rxe_req.c | 53 ++--
drivers/infiniband/sw/rxe/rxe_resp.c | 5 +-
drivers/infiniband/sw/rxe/rxe_task.c | 15 +-
drivers/infiniband/sw/rxe/rxe_task.h | 7 +-
drivers/infiniband/sw/rxe/rxe_verbs.c | 8 +-
drivers/infiniband/sw/siw/siw.h | 1 +
drivers/infiniband/sw/siw/siw_cm.c | 1 -
drivers/infiniband/sw/siw/siw_main.c | 22 +-
drivers/infiniband/sw/siw/siw_verbs.c | 6 +-
drivers/infiniband/ulp/isert/ib_isert.c | 2 +
drivers/infiniband/ulp/srp/ib_srp.c | 4 -
drivers/input/serio/i8042-acpipnpio.h | 7 +
drivers/interconnect/qcom/bcm-voter.c | 43 ++-
drivers/interconnect/qcom/qcm2290.c | 1 +
drivers/interconnect/qcom/sm8450.c | 1 +
drivers/iommu/amd/iommu_v2.c | 4 +-
drivers/iommu/arm/arm-smmu/qcom_iommu.c | 7 +
drivers/iommu/intel/pasid.c | 2 +-
drivers/iommu/mtk_iommu.c | 23 +-
drivers/iommu/rockchip-iommu.c | 43 +--
drivers/iommu/sprd-iommu.c | 1 +
drivers/irqchip/irq-loongson-eiointc.c | 2 +-
drivers/leds/led-class-multicolor.c | 8 +-
drivers/leds/led-core.c | 8 +-
drivers/leds/leds-pwm.c | 2 +-
drivers/leds/trigger/ledtrig-tty.c | 12 +-
drivers/md/md-bitmap.c | 9 +-
drivers/md/md-linear.c | 14 +-
drivers/md/md.c | 67 ++--
drivers/md/md.h | 12 +-
drivers/md/raid0.c | 94 +++---
drivers/md/raid1.c | 8 +-
drivers/md/raid10.c | 42 ++-
drivers/md/raid5-cache.c | 12 +-
drivers/media/cec/core/cec-adap.c | 8 +-
drivers/media/cec/usb/pulse8/pulse8-cec.c | 7 +-
drivers/media/dvb-frontends/ascot2e.c | 2 +-
drivers/media/dvb-frontends/atbm8830.c | 2 +-
drivers/media/dvb-frontends/au8522_dig.c | 2 +-
drivers/media/dvb-frontends/bcm3510.c | 2 +-
drivers/media/dvb-frontends/cx22700.c | 2 +-
drivers/media/dvb-frontends/cx22702.c | 2 +-
drivers/media/dvb-frontends/cx24110.c | 2 +-
drivers/media/dvb-frontends/cx24113.c | 2 +-
drivers/media/dvb-frontends/cx24116.c | 2 +-
drivers/media/dvb-frontends/cx24120.c | 6 +-
drivers/media/dvb-frontends/cx24123.c | 2 +-
drivers/media/dvb-frontends/cxd2820r_core.c | 2 +-
drivers/media/dvb-frontends/cxd2841er.c | 4 +-
drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
drivers/media/dvb-frontends/dib0070.c | 2 +-
drivers/media/dvb-frontends/dib0090.c | 4 +-
drivers/media/dvb-frontends/dib3000mb.c | 2 +-
drivers/media/dvb-frontends/dib3000mc.c | 2 +-
drivers/media/dvb-frontends/dib7000m.c | 2 +-
drivers/media/dvb-frontends/dib7000p.c | 4 +-
drivers/media/dvb-frontends/dib8000.c | 2 +-
drivers/media/dvb-frontends/dib9000.c | 2 +-
drivers/media/dvb-frontends/drx39xyj/drxj.c | 2 +-
drivers/media/dvb-frontends/drxd_hard.c | 2 +-
drivers/media/dvb-frontends/drxk_hard.c | 2 +-
drivers/media/dvb-frontends/ds3000.c | 2 +-
drivers/media/dvb-frontends/dvb-pll.c | 2 +-
drivers/media/dvb-frontends/ec100.c | 2 +-
drivers/media/dvb-frontends/helene.c | 4 +-
drivers/media/dvb-frontends/horus3a.c | 2 +-
drivers/media/dvb-frontends/isl6405.c | 2 +-
drivers/media/dvb-frontends/isl6421.c | 2 +-
drivers/media/dvb-frontends/isl6423.c | 2 +-
drivers/media/dvb-frontends/itd1000.c | 2 +-
drivers/media/dvb-frontends/ix2505v.c | 2 +-
drivers/media/dvb-frontends/l64781.c | 2 +-
drivers/media/dvb-frontends/lg2160.c | 2 +-
drivers/media/dvb-frontends/lgdt3305.c | 2 +-
drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
drivers/media/dvb-frontends/lgdt330x.c | 2 +-
drivers/media/dvb-frontends/lgs8gxx.c | 2 +-
drivers/media/dvb-frontends/lnbh25.c | 2 +-
drivers/media/dvb-frontends/lnbp21.c | 4 +-
drivers/media/dvb-frontends/lnbp22.c | 2 +-
drivers/media/dvb-frontends/m88ds3103.c | 2 +-
drivers/media/dvb-frontends/m88rs2000.c | 2 +-
drivers/media/dvb-frontends/mb86a16.c | 2 +-
drivers/media/dvb-frontends/mb86a20s.c | 2 +-
drivers/media/dvb-frontends/mt312.c | 2 +-
drivers/media/dvb-frontends/mt352.c | 2 +-
drivers/media/dvb-frontends/nxt200x.c | 2 +-
drivers/media/dvb-frontends/nxt6000.c | 2 +-
drivers/media/dvb-frontends/or51132.c | 2 +-
drivers/media/dvb-frontends/or51211.c | 2 +-
drivers/media/dvb-frontends/s5h1409.c | 2 +-
drivers/media/dvb-frontends/s5h1411.c | 2 +-
drivers/media/dvb-frontends/s5h1420.c | 2 +-
drivers/media/dvb-frontends/s5h1432.c | 2 +-
drivers/media/dvb-frontends/s921.c | 2 +-
drivers/media/dvb-frontends/si21xx.c | 2 +-
drivers/media/dvb-frontends/sp887x.c | 2 +-
drivers/media/dvb-frontends/stb0899_drv.c | 2 +-
drivers/media/dvb-frontends/stb6000.c | 2 +-
drivers/media/dvb-frontends/stb6100.c | 2 +-
drivers/media/dvb-frontends/stv0288.c | 2 +-
drivers/media/dvb-frontends/stv0297.c | 2 +-
drivers/media/dvb-frontends/stv0299.c | 2 +-
drivers/media/dvb-frontends/stv0367.c | 6 +-
drivers/media/dvb-frontends/stv0900_core.c | 2 +-
drivers/media/dvb-frontends/stv090x.c | 2 +-
drivers/media/dvb-frontends/stv6110.c | 2 +-
drivers/media/dvb-frontends/stv6110x.c | 2 +-
drivers/media/dvb-frontends/tda10021.c | 2 +-
drivers/media/dvb-frontends/tda10023.c | 2 +-
drivers/media/dvb-frontends/tda10048.c | 2 +-
drivers/media/dvb-frontends/tda1004x.c | 4 +-
drivers/media/dvb-frontends/tda10086.c | 2 +-
drivers/media/dvb-frontends/tda665x.c | 2 +-
drivers/media/dvb-frontends/tda8083.c | 2 +-
drivers/media/dvb-frontends/tda8261.c | 2 +-
drivers/media/dvb-frontends/tda826x.c | 2 +-
drivers/media/dvb-frontends/ts2020.c | 2 +-
drivers/media/dvb-frontends/tua6100.c | 2 +-
drivers/media/dvb-frontends/ves1820.c | 2 +-
drivers/media/dvb-frontends/ves1x93.c | 2 +-
drivers/media/dvb-frontends/zl10036.c | 2 +-
drivers/media/dvb-frontends/zl10039.c | 2 +-
drivers/media/dvb-frontends/zl10353.c | 2 +-
drivers/media/i2c/Kconfig | 13 +-
drivers/media/i2c/ad5820.c | 2 -
drivers/media/i2c/ccs/ccs-data.c | 101 +++---
drivers/media/i2c/ov2680.c | 332 +++++---------------
drivers/media/i2c/ov5640.c | 22 +-
drivers/media/i2c/rdacm21.c | 2 +-
drivers/media/i2c/tvp5150.c | 4 +
drivers/media/pci/bt8xx/dst.c | 2 +-
drivers/media/pci/bt8xx/dst_ca.c | 2 +-
drivers/media/pci/cx23885/cx23885-dvb.c | 12 -
drivers/media/pci/ddbridge/ddbridge-dummy-fe.c | 2 +-
drivers/media/platform/amphion/vdec.c | 16 +-
drivers/media/platform/amphion/venc.c | 6 +-
drivers/media/platform/amphion/vpu.h | 3 +
drivers/media/platform/amphion/vpu_cmds.c | 16 +-
drivers/media/platform/amphion/vpu_core.c | 2 +
drivers/media/platform/amphion/vpu_dbg.c | 17 +-
drivers/media/platform/amphion/vpu_helpers.c | 61 ++++
drivers/media/platform/amphion/vpu_mbox.c | 9 +-
drivers/media/platform/amphion/vpu_msgs.c | 14 +-
drivers/media/platform/amphion/vpu_v4l2.c | 7 +-
.../media/platform/mediatek/jpeg/mtk_jpeg_core.c | 1 +
.../platform/mediatek/vcodec/vdec/vdec_vp9_if.c | 5 +-
.../platform/mediatek/vcodec/vdec_msg_queue.c | 2 +
drivers/media/platform/qcom/venus/hfi_venus.c | 20 +-
drivers/media/tuners/fc0011.c | 2 +-
drivers/media/tuners/fc0012.c | 2 +-
drivers/media/tuners/fc0013.c | 2 +-
drivers/media/tuners/max2165.c | 2 +-
drivers/media/tuners/mc44s803.c | 2 +-
drivers/media/tuners/mt2060.c | 2 +-
drivers/media/tuners/mt2131.c | 2 +-
drivers/media/tuners/mt2266.c | 2 +-
drivers/media/tuners/mxl5005s.c | 2 +-
drivers/media/tuners/qt1010.c | 2 +-
drivers/media/tuners/tda18218.c | 2 +-
drivers/media/tuners/xc2028.c | 2 +-
drivers/media/tuners/xc4000.c | 2 +-
drivers/media/tuners/xc5000.c | 2 +-
drivers/media/usb/dvb-usb/m920x.c | 5 +-
drivers/media/usb/go7007/go7007-i2c.c | 2 -
drivers/media/usb/siano/smsusb.c | 21 +-
drivers/media/v4l2-core/v4l2-fwnode.c | 18 +-
drivers/mmc/host/renesas_sdhi_core.c | 10 +-
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 7 +-
drivers/mtd/nand/raw/fsmc_nand.c | 7 +-
drivers/mtd/spi-nor/core.c | 19 +-
drivers/net/arcnet/arcnet.c | 2 +-
drivers/net/can/usb/gs_usb.c | 5 +-
drivers/net/dsa/microchip/ksz_common.c | 35 +--
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 7 +-
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +-
.../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 5 +-
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 2 +-
.../net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h | 1 +
drivers/net/ethernet/intel/ice/ice_main.c | 13 +-
drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 55 +++-
drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 3 +-
drivers/net/ethernet/intel/igb/igb_main.c | 11 +-
.../net/ethernet/marvell/octeontx2/af/rvu_nix.c | 45 +++
.../ethernet/marvell/octeontx2/nic/otx2_common.c | 68 ++--
.../ethernet/marvell/octeontx2/nic/otx2_common.h | 3 +-
.../ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 19 +-
.../net/ethernet/marvell/octeontx2/nic/otx2_pf.c | 13 +-
.../net/ethernet/marvell/octeontx2/nic/otx2_vf.c | 4 -
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 9 +-
drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c | 3 +-
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 5 +-
drivers/net/ethernet/realtek/r8169_main.c | 4 -
drivers/net/ethernet/sfc/ptp.c | 3 +-
drivers/net/macsec.c | 3 +-
drivers/net/phy/sfp-bus.c | 10 +
drivers/net/usb/qmi_wwan.c | 1 +
drivers/net/wireless/ath/ath10k/pci.c | 9 +-
drivers/net/wireless/ath/ath11k/pci.c | 10 +-
drivers/net/wireless/ath/ath6kl/Makefile | 5 -
drivers/net/wireless/ath/ath9k/htc_drv_debug.c | 2 +-
drivers/net/wireless/ath/ath9k/wmi.c | 20 +-
.../broadcom/brcm80211/brcmfmac/fwil_types.h | 7 +-
drivers/net/wireless/marvell/mwifiex/debugfs.c | 9 +-
drivers/net/wireless/marvell/mwifiex/pcie.c | 25 +-
drivers/net/wireless/marvell/mwifiex/sta_rx.c | 12 +-
drivers/net/wireless/marvell/mwifiex/uap_txrx.c | 30 +-
drivers/net/wireless/marvell/mwifiex/util.c | 10 +-
drivers/net/wireless/mediatek/mt76/mt7915/main.c | 3 +-
drivers/net/wireless/mediatek/mt76/mt7921/init.c | 3 +-
drivers/net/wireless/mediatek/mt76/testmode.c | 1 +
drivers/net/wireless/realtek/rtw89/debug.c | 8 +-
drivers/ntb/ntb_transport.c | 19 +-
drivers/nvdimm/nd_perf.c | 3 +-
drivers/of/dynamic.c | 1 +
drivers/of/overlay.c | 3 +-
drivers/of/platform.c | 5 +
drivers/of/property.c | 86 +----
drivers/of/unittest.c | 12 +-
drivers/opp/core.c | 2 +-
drivers/pci/access.c | 20 +-
drivers/pci/controller/dwc/pcie-qcom-ep.c | 2 +-
drivers/pci/controller/dwc/pcie-tegra194.c | 10 -
drivers/pci/controller/pci-hyperv.c | 3 +
drivers/pci/controller/pcie-apple.c | 6 +-
drivers/pci/controller/pcie-microchip-host.c | 8 +-
drivers/pci/controller/pcie-rockchip.h | 6 +-
drivers/pci/doe.c | 2 +-
drivers/pci/hotplug/pciehp_hpc.c | 12 +-
drivers/pci/pci-sysfs.c | 7 +
drivers/pci/pci.c | 13 +-
drivers/pci/pcie/aspm.c | 30 +-
drivers/pci/probe.c | 8 +
drivers/perf/fsl_imx8_ddr_perf.c | 24 +-
drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 6 +-
drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 18 +-
drivers/pinctrl/pinctrl-mcp23s08_spi.c | 10 +
drivers/platform/chrome/chromeos_acpi.c | 31 +-
drivers/platform/mellanox/mlxbf-tmfifo.c | 1 +
drivers/platform/x86/amd/pmf/core.c | 3 +-
drivers/platform/x86/amd/pmf/sps.c | 3 +-
drivers/platform/x86/asus-wmi.c | 14 +-
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 9 +-
drivers/platform/x86/huawei-wmi.c | 2 +
drivers/platform/x86/intel/hid.c | 27 +-
drivers/platform/x86/think-lmi.c | 4 +-
drivers/rpmsg/qcom_glink_native.c | 4 +
drivers/s390/block/dasd.c | 125 +++-----
drivers/s390/block/dasd_3990_erp.c | 2 +-
drivers/s390/block/dasd_devmap.c | 6 +-
drivers/s390/block/dasd_eckd.c | 10 +-
drivers/s390/block/dasd_int.h | 4 +
drivers/s390/block/dcssblk.c | 4 +-
drivers/s390/crypto/pkey_api.c | 22 +-
drivers/s390/crypto/zcrypt_ep11misc.c | 105 ++++++-
drivers/s390/crypto/zcrypt_ep11misc.h | 11 +-
drivers/scsi/aacraid/aacraid.h | 1 +
drivers/scsi/aacraid/commsup.c | 6 +-
drivers/scsi/aacraid/linit.c | 14 +
drivers/scsi/aacraid/src.c | 25 +-
drivers/scsi/be2iscsi/be_iscsi.c | 4 +
drivers/scsi/fcoe/fcoe_ctlr.c | 20 +-
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 11 +-
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 13 +-
drivers/scsi/hosts.c | 4 +-
drivers/scsi/lpfc/lpfc_bsg.c | 8 +-
drivers/scsi/lpfc/lpfc_scsi.c | 20 +-
drivers/scsi/mpt3sas/mpt3sas_base.c | 46 ++-
drivers/scsi/mpt3sas/mpt3sas_base.h | 1 +
drivers/scsi/qedf/qedf_dbg.h | 2 +
drivers/scsi/qedf/qedf_debugfs.c | 35 ++-
drivers/scsi/qedi/qedi_main.c | 5 +-
drivers/scsi/qla2xxx/qla_init.c | 2 +-
drivers/scsi/qla4xxx/ql4_os.c | 15 +
drivers/scsi/scsi_transport_iscsi.c | 80 +++--
drivers/scsi/storvsc_drv.c | 2 +
drivers/soc/qcom/ocmem.c | 14 +-
drivers/soc/qcom/smem.c | 2 +-
drivers/spi/spi-tegra114.c | 18 +-
drivers/spi/spi-tegra20-sflash.c | 6 +-
drivers/spi/spi.c | 5 +
drivers/staging/fbtft/fb_ili9341.c | 2 +-
drivers/staging/media/rkvdec/rkvdec.c | 2 +-
drivers/thermal/thermal_of.c | 8 +-
drivers/tty/serial/sc16is7xx.c | 145 ++++++---
drivers/tty/serial/serial-tegra.c | 6 +-
drivers/tty/serial/sprd_serial.c | 30 +-
drivers/ufs/core/ufshcd.c | 8 +-
drivers/usb/core/hcd.c | 10 +-
drivers/usb/core/hub.c | 349 ++++++++++++---------
drivers/usb/core/message.c | 29 +-
drivers/usb/core/usb.h | 4 +-
drivers/usb/gadget/function/f_mass_storage.c | 2 +-
drivers/usb/gadget/udc/core.c | 1 +
drivers/usb/phy/phy-mxs-usb.c | 10 +-
drivers/usb/typec/bus.c | 12 +-
drivers/usb/typec/tcpm/tcpm.c | 38 ++-
drivers/vfio/vfio_iommu_type1.c | 2 +-
drivers/video/backlight/bd6107.c | 2 +-
drivers/video/backlight/gpio_backlight.c | 2 +-
drivers/video/backlight/lv5207lp.c | 2 +-
drivers/virtio/virtio_ring.c | 2 +-
fs/dlm/plock.c | 6 +-
fs/eventfd.c | 2 +-
fs/ext4/mballoc.c | 7 +-
fs/ext4/namei.c | 3 +
fs/f2fs/f2fs.h | 3 +-
fs/f2fs/file.c | 23 +-
fs/f2fs/inode.c | 12 +-
fs/f2fs/super.c | 21 +-
fs/fs_context.c | 23 +-
fs/iomap/buffered-io.c | 5 -
fs/jfs/jfs_extent.c | 5 +
fs/lockd/mon.c | 3 +
fs/namei.c | 2 +-
fs/nfs/blocklayout/dev.c | 4 +-
fs/nfs/internal.h | 1 +
fs/nfs/nfs2xdr.c | 2 +-
fs/nfs/nfs3xdr.c | 2 +-
fs/nfs/nfs42.h | 1 +
fs/nfs/nfs42proc.c | 5 +-
fs/nfs/nfs42xdr.c | 22 +-
fs/nfs/nfs4proc.c | 14 +-
fs/nfs/pnfs_nfs.c | 2 +-
fs/nfs/read.c | 10 +
fs/nfsd/blocklayoutxdr.c | 9 +
fs/nfsd/flexfilelayoutxdr.c | 9 +
fs/nfsd/nfs4xdr.c | 25 +-
fs/nls/nls_base.c | 4 +-
fs/ocfs2/namei.c | 4 +
fs/overlayfs/super.c | 2 +-
fs/proc/base.c | 3 +-
fs/pstore/ram_core.c | 2 +-
fs/quota/dquot.c | 174 ++++++----
fs/reiserfs/journal.c | 4 +-
fs/smb/client/cifsglob.h | 37 ---
fs/smb/client/cifsproto.h | 1 +
fs/smb/client/connect.c | 50 +++
fs/smb/client/smb2ops.c | 39 +++
fs/smb/client/smb2pdu.c | 32 +-
fs/smb/server/server.c | 7 +-
fs/smb/server/smb2pdu.c | 20 +-
fs/smb/server/smb_common.c | 19 +-
fs/smb/server/smb_common.h | 2 +-
fs/udf/balloc.c | 31 +-
fs/udf/inode.c | 41 ++-
fs/verity/signature.c | 16 +
include/crypto/algapi.h | 3 +
include/dt-bindings/clock/qcom,gcc-sc8280xp.h | 12 +
include/linux/arm_sdei.h | 2 +
include/linux/blkdev.h | 1 +
include/linux/clk-provider.h | 8 +-
include/linux/hid.h | 1 +
include/linux/if_arp.h | 4 +
include/linux/ioport.h | 2 +
include/linux/kernfs.h | 4 +
include/linux/lsm_hook_defs.h | 1 +
include/linux/memcontrol.h | 9 +-
include/linux/nfs_xdr.h | 1 +
include/linux/nls.h | 2 +-
include/linux/pci.h | 51 ++-
include/linux/security.h | 6 +
include/linux/trace_events.h | 3 +-
include/linux/usb/typec_altmode.h | 2 +-
include/media/cec.h | 11 +-
include/net/inet6_hashtables.h | 72 ++++-
include/net/inet_hashtables.h | 67 +++-
include/net/lwtunnel.h | 5 +-
include/net/mac80211.h | 4 +-
include/net/sock.h | 7 +-
include/net/tcp.h | 1 -
include/scsi/scsi_host.h | 2 +-
include/uapi/linux/bpf.h | 3 -
include/uapi/linux/sync_file.h | 2 +-
include/uapi/linux/v4l2-controls.h | 6 +-
init/Kconfig | 1 +
io_uring/io_uring.c | 5 +
kernel/auditsc.c | 2 +
kernel/bpf/btf.c | 2 +-
kernel/bpf/verifier.c | 17 +-
kernel/cgroup/cpuset.c | 33 +-
kernel/cgroup/namespace.c | 6 -
kernel/cpu.c | 24 +-
kernel/kprobes.c | 14 +-
kernel/printk/printk_ringbuffer.c | 2 +-
kernel/rcu/refscale.c | 3 +-
kernel/resource.c | 13 +-
kernel/sched/rt.c | 2 +-
kernel/time/tick-sched.c | 2 +-
kernel/trace/bpf_trace.c | 2 +-
kernel/trace/trace.c | 72 ++++-
kernel/trace/trace.h | 2 +
kernel/trace/trace_hwlat.c | 2 +-
kernel/trace/trace_uprobe.c | 3 +-
lib/xarray.c | 2 +-
mm/shmem.c | 28 +-
mm/util.c | 4 +-
mm/vmalloc.c | 26 +-
mm/vmpressure.c | 8 +
net/9p/trans_virtio.c | 4 +-
net/bluetooth/hci_core.c | 28 +-
net/bluetooth/iso.c | 2 +-
net/bluetooth/sco.c | 2 +-
net/bridge/br_stp_if.c | 3 -
net/core/filter.c | 4 +-
net/core/lwt_bpf.c | 7 +-
net/core/skbuff.c | 34 +-
net/core/sock.c | 42 +--
net/dccp/ipv4.c | 13 +-
net/dccp/ipv6.c | 15 +-
net/ipv4/igmp.c | 3 +-
net/ipv4/inet_hashtables.c | 27 +-
net/ipv4/ip_output.c | 2 +-
net/ipv4/tcp_input.c | 3 +-
net/ipv4/tcp_timer.c | 18 +-
net/ipv4/udp.c | 60 ++--
net/ipv6/inet6_hashtables.c | 25 +-
net/ipv6/ip6_output.c | 2 +-
net/ipv6/udp.c | 66 ++--
net/mac80211/tx.c | 6 +-
net/netfilter/ipset/ip_set_hash_netportnet.c | 1 +
net/netfilter/nft_exthdr.c | 20 +-
net/netfilter/xt_sctp.c | 2 +
net/netfilter/xt_u32.c | 21 ++
net/netlabel/netlabel_kapi.c | 3 +-
net/netrom/af_netrom.c | 5 +
net/sched/em_meta.c | 6 +-
net/sched/sch_hfsc.c | 4 +
net/sctp/sm_sideeffect.c | 5 +-
net/smc/af_smc.c | 2 +-
net/socket.c | 6 +-
net/wireless/nl80211.c | 1 +
net/wireless/util.c | 9 +-
samples/bpf/tracex3_kern.c | 36 ++-
samples/bpf/tracex6_kern.c | 17 +-
scripts/rust_is_available.sh | 122 +++----
security/integrity/ima/Kconfig | 12 -
security/keys/keyctl.c | 11 +-
security/security.c | 14 +
security/selinux/hooks.c | 22 ++
security/smack/smack_lsm.c | 51 +++
security/smack/smackfs.c | 2 +-
sound/Kconfig | 2 +-
sound/core/pcm_compat.c | 8 +-
sound/core/seq/oss/seq_oss_midi.c | 35 ++-
sound/pci/ac97/ac97_codec.c | 5 +-
sound/pci/hda/patch_cs8409.c | 2 +-
sound/pci/hda/patch_cs8409.h | 1 +
sound/pci/hda/patch_realtek.c | 2 +-
sound/soc/atmel/atmel-i2s.c | 5 +-
sound/soc/codecs/Kconfig | 1 +
sound/soc/codecs/cs43130.h | 138 ++++----
sound/soc/codecs/da7219-aad.c | 12 +-
sound/soc/codecs/es8316.c | 2 +-
sound/soc/codecs/nau8821.c | 41 +++
sound/soc/codecs/rt5682-sdw.c | 9 +-
sound/soc/codecs/rt711-sdca-sdw.c | 10 +-
sound/soc/codecs/rt711-sdw.c | 9 +-
sound/soc/sof/amd/acp.c | 6 +-
sound/usb/mixer_maps.c | 14 +
sound/usb/quirks.c | 37 ++-
tools/bpf/bpftool/skeleton/pid_iter.bpf.c | 26 +-
tools/bpf/bpftool/skeleton/profiler.bpf.c | 27 +-
tools/bpf/resolve_btfids/Build | 4 +-
tools/bpf/resolve_btfids/Makefile | 47 ++-
tools/bpf/resolve_btfids/main.c | 2 +-
tools/hv/vmbus_testing | 4 +-
tools/include/uapi/linux/bpf.h | 3 -
tools/lib/bpf/libbpf.c | 15 +-
tools/lib/bpf/usdt.c | 5 +-
tools/lib/subcmd/Makefile | 52 +++
tools/testing/radix-tree/multiorder.c | 68 +++-
.../selftests/bpf/benchs/run_bench_rename.sh | 2 +-
tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 5 +-
.../testing/selftests/bpf/prog_tests/kfunc_call.c | 2 +-
.../selftests/bpf/progs/test_cls_redirect.h | 9 +
.../futex/functional/futex_wait_timeout.c | 7 +
tools/testing/selftests/kselftest_harness.h | 11 +-
tools/testing/selftests/resctrl/Makefile | 2 +-
tools/testing/selftests/resctrl/cache.c | 18 +-
tools/testing/selftests/resctrl/fill_buf.c | 3 +-
tools/testing/selftests/resctrl/resctrl.h | 1 +
virt/kvm/vfio.c | 115 +++----
714 files changed, 6079 insertions(+), 3269 deletions(-)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 001/600] Revert "bridge: Add extack warning when enabling STP in netns."
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 002/600] Partially revert "drm/amd/display: Fix possible underflow for displays with large vblank" Greg Kroah-Hartman
` (609 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Paolo Abeni,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kuniyuki Iwashima <kuniyu@amazon.com>
[ Upstream commit 7ebd00a5a20c48e6020d49a3b2afb3cdfd2da8b7 ]
This reverts commit 56a16035bb6effb37177867cea94c13a8382f745.
Since the previous commit, STP works on bridge in netns.
# unshare -n
# ip link add br0 type bridge
# ip link add veth0 type veth peer name veth1
# ip link set veth0 master br0 up
[ 50.558135] br0: port 1(veth0) entered blocking state
[ 50.558366] br0: port 1(veth0) entered disabled state
[ 50.558798] veth0: entered allmulticast mode
[ 50.564401] veth0: entered promiscuous mode
# ip link set veth1 master br0 up
[ 54.215487] br0: port 2(veth1) entered blocking state
[ 54.215657] br0: port 2(veth1) entered disabled state
[ 54.215848] veth1: entered allmulticast mode
[ 54.219577] veth1: entered promiscuous mode
# ip link set br0 type bridge stp_state 1
# ip link set br0 up
[ 61.960726] br0: port 2(veth1) entered blocking state
[ 61.961097] br0: port 2(veth1) entered listening state
[ 61.961495] br0: port 1(veth0) entered blocking state
[ 61.961653] br0: port 1(veth0) entered listening state
[ 63.998835] br0: port 2(veth1) entered blocking state
[ 77.437113] br0: port 1(veth0) entered learning state
[ 86.653501] br0: received packet on veth0 with own address as source address (addr:6e:0f:e7:6f:5f:5f, vlan:0)
[ 92.797095] br0: port 1(veth0) entered forwarding state
[ 92.797398] br0: topology change detected, propagating
Let's remove the warning.
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bridge/br_stp_if.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c
index b65962682771f..75204d36d7f90 100644
--- a/net/bridge/br_stp_if.c
+++ b/net/bridge/br_stp_if.c
@@ -201,9 +201,6 @@ int br_stp_set_enabled(struct net_bridge *br, unsigned long val,
{
ASSERT_RTNL();
- if (!net_eq(dev_net(br->dev), &init_net))
- NL_SET_ERR_MSG_MOD(extack, "STP does not work in non-root netns");
-
if (br_mrp_enabled(br)) {
NL_SET_ERR_MSG_MOD(extack,
"STP can't be enabled if MRP is already enabled");
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 002/600] Partially revert "drm/amd/display: Fix possible underflow for displays with large vblank"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 001/600] Revert "bridge: Add extack warning when enabling STP in netns." Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 003/600] scsi: ufs: Try harder to change the power mode Greg Kroah-Hartman
` (608 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicholas Kazlauskas, Jun Lei,
Hamza Mahfooz, Daniel Miess, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Miess <daniel.miess@amd.com>
[ Upstream commit a99a4ff6ef205d125002fc7e0857074e4e6597b6 ]
This partially reverts commit de231189e7bf ("drm/amd/display: Fix
possible underflow for displays with large vblank").
[Why]
The increased value of VBlankNomDefaultUS causes underflow at the
desktop of an IP KVM setup
[How]
Change the value from 800 back to 668
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Jun Lei <jun.lei@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Daniel Miess <daniel.miess@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c b/drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c
index 8a88605827a84..551a63f7064bb 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c
@@ -32,7 +32,7 @@
#include "dml/display_mode_vba.h"
struct _vcs_dpi_ip_params_st dcn3_14_ip = {
- .VBlankNomDefaultUS = 800,
+ .VBlankNomDefaultUS = 668,
.gpuvm_enable = 1,
.gpuvm_max_page_table_levels = 1,
.hostvm_enable = 1,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 003/600] scsi: ufs: Try harder to change the power mode
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 001/600] Revert "bridge: Add extack warning when enabling STP in netns." Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 002/600] Partially revert "drm/amd/display: Fix possible underflow for displays with large vblank" Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 004/600] Revert "Revert drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
` (607 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bart Van Assche, Martin K. Petersen,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bart Van Assche <bvanassche@acm.org>
[ Upstream commit 579a4e9dbd53978cad8df88dc612837cdd210ce0 ]
Instead of only retrying the START STOP UNIT command if a unit attention is
reported, repeat it if any SCSI error is reported by the device or if the
command timed out.
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20221018202958.1902564-8-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Stable-dep-of: fe8637f7708c ("scsi: ufs: core: Increase the START STOP UNIT timeout from one to ten seconds")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/ufs/core/ufshcd.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c
index 977bd4b9dd0b4..36437d39b93c8 100644
--- a/drivers/ufs/core/ufshcd.c
+++ b/drivers/ufs/core/ufshcd.c
@@ -8830,9 +8830,11 @@ static int ufshcd_set_dev_pwr_mode(struct ufs_hba *hba,
for (retries = 3; retries > 0; --retries) {
ret = scsi_execute(sdp, cmd, DMA_NONE, NULL, 0, NULL, &sshdr,
HZ, 0, 0, RQF_PM, NULL);
- if (!scsi_status_is_check_condition(ret) ||
- !scsi_sense_valid(&sshdr) ||
- sshdr.sense_key != UNIT_ATTENTION)
+ /*
+ * scsi_execute() only returns a negative value if the request
+ * queue is dying.
+ */
+ if (ret <= 0)
break;
}
if (ret) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 004/600] Revert "Revert drm/amd/display: Enable Freesync Video Mode by default"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (2 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 003/600] scsi: ufs: Try harder to change the power mode Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 005/600] ARM: dts: imx: Set default tuning step for imx7d usdhc Greg Kroah-Hartman
` (606 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stylon Wang, Aurabindo Pillai,
Rodrigo Siqueira, Daniel Wheeler, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Aurabindo Pillai <aurabindo.pillai@amd.com>
[ Upstream commit 11b92df8a2f7f4605ccc764ce6ae4a72760674df ]
This reverts commit 4243c84aa082d8fba70c45f48eb2bb5c19799060.
Enables freesync video by default, since the hang and corruption issue
on eDP panels are now fixed.
Acked-by: Stylon Wang <stylon.wang@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Reviewed-by: Rodrigo Siqueira <rjordrigo@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 249b269e2cc53..9beb326a9528e 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -5921,8 +5921,7 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
*/
DRM_DEBUG_DRIVER("No preferred mode found\n");
} else {
- recalculate_timing = amdgpu_freesync_vid_mode &&
- is_freesync_video_mode(&mode, aconnector);
+ recalculate_timing = is_freesync_video_mode(&mode, aconnector);
if (recalculate_timing) {
freesync_mode = get_highest_refresh_rate_mode(aconnector, false);
drm_mode_copy(&saved_mode, &mode);
@@ -7016,7 +7015,7 @@ static void amdgpu_dm_connector_add_freesync_modes(struct drm_connector *connect
struct amdgpu_dm_connector *amdgpu_dm_connector =
to_amdgpu_dm_connector(connector);
- if (!(amdgpu_freesync_vid_mode && edid))
+ if (!edid)
return;
if (amdgpu_dm_connector->max_vfreq - amdgpu_dm_connector->min_vfreq > 10)
@@ -9022,8 +9021,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
* TODO: Refactor this function to allow this check to work
* in all conditions.
*/
- if (amdgpu_freesync_vid_mode &&
- dm_new_crtc_state->stream &&
+ if (dm_new_crtc_state->stream &&
is_timing_unchanged_for_freesync(new_crtc_state, old_crtc_state))
goto skip_modeset;
@@ -9063,7 +9061,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
}
/* Now check if we should set freesync video mode */
- if (amdgpu_freesync_vid_mode && dm_new_crtc_state->stream &&
+ if (dm_new_crtc_state->stream &&
dc_is_stream_unchanged(new_stream, dm_old_crtc_state->stream) &&
dc_is_stream_scaling_unchanged(new_stream, dm_old_crtc_state->stream) &&
is_timing_unchanged_for_freesync(new_crtc_state,
@@ -9076,7 +9074,7 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
set_freesync_fixed_config(dm_new_crtc_state);
goto skip_modeset;
- } else if (amdgpu_freesync_vid_mode && aconnector &&
+ } else if (aconnector &&
is_freesync_video_mode(&new_crtc_state->mode,
aconnector)) {
struct drm_display_mode *high_mode;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 005/600] ARM: dts: imx: Set default tuning step for imx7d usdhc
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (3 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 004/600] Revert "Revert drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 006/600] ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform Greg Kroah-Hartman
` (605 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xiaolei Wang, Fabio Estevam,
Shawn Guo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiaolei Wang <xiaolei.wang@windriver.com>
[ Upstream commit be18293e47cbca7c6acee9231fc851601d69563a ]
If the tuning step is not set, the tuning step is set to 1.
For some sd cards, the following Tuning timeout will occur.
Tuning failed, falling back to fixed sampling clock
mmc0: Tuning failed, falling back to fixed sampling clock
So set the default tuning step. This refers to the NXP vendor's
commit below:
https://github.com/nxp-imx/linux-imx/blob/lf-6.1.y/
arch/arm/boot/dts/imx7s.dtsi#L1216-L1217
Fixes: 1e336aa0c025 ("mmc: sdhci-esdhc-imx: correct the tuning start tap and step setting")
Signed-off-by: Xiaolei Wang <xiaolei.wang@windriver.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/imx7s.dtsi | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/arm/boot/dts/imx7s.dtsi b/arch/arm/boot/dts/imx7s.dtsi
index 11b9321badc51..667568aa4326a 100644
--- a/arch/arm/boot/dts/imx7s.dtsi
+++ b/arch/arm/boot/dts/imx7s.dtsi
@@ -1184,6 +1184,8 @@
<&clks IMX7D_USDHC1_ROOT_CLK>;
clock-names = "ipg", "ahb", "per";
bus-width = <4>;
+ fsl,tuning-step = <2>;
+ fsl,tuning-start-tap = <20>;
status = "disabled";
};
@@ -1196,6 +1198,8 @@
<&clks IMX7D_USDHC2_ROOT_CLK>;
clock-names = "ipg", "ahb", "per";
bus-width = <4>;
+ fsl,tuning-step = <2>;
+ fsl,tuning-start-tap = <20>;
status = "disabled";
};
@@ -1208,6 +1212,8 @@
<&clks IMX7D_USDHC3_ROOT_CLK>;
clock-names = "ipg", "ahb", "per";
bus-width = <4>;
+ fsl,tuning-step = <2>;
+ fsl,tuning-start-tap = <20>;
status = "disabled";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 006/600] ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (4 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 005/600] ARM: dts: imx: Set default tuning step for imx7d usdhc Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 007/600] powerpc/boot: Disable power10 features after BOOTAFLAGS assignment Greg Kroah-Hartman
` (604 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Chris Chiu, Takashi Iwai,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chris Chiu <chris.chiu@canonical.com>
[ Upstream commit b752a385b584d385683c65cb76a1298f1379a88c ]
In the commit 7bb62340951a ("ALSA: hda/realtek: fix speaker, mute/micmute
LEDs not work on a HP platform"), speakers and LEDs are fixed but only 2
CS35L41 amplifiers on SPI bus connected to Realtek codec are enabled. Need
the ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED to get all amplifiers working.
Signed-off-by: Chris Chiu <chris.chiu@canonical.com>
Fixes: 7bb62340951a ("ALSA: hda/realtek: fix speaker, mute/micmute LEDs not work on a HP platform")
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230606145747.135966-1-chris.chiu@canonical.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/pci/hda/patch_realtek.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index aa475154c582f..f70e0ad81607e 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -9591,7 +9591,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x103c, 0x8b8a, "HP", ALC236_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x8b8b, "HP", ALC236_FIXUP_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x8b8d, "HP", ALC236_FIXUP_HP_GPIO_LED),
- SND_PCI_QUIRK(0x103c, 0x8b8f, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
+ SND_PCI_QUIRK(0x103c, 0x8b8f, "HP", ALC245_FIXUP_CS35L41_SPI_4_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x8b92, "HP", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
SND_PCI_QUIRK(0x103c, 0x8b96, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
SND_PCI_QUIRK(0x103c, 0x8b97, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 007/600] powerpc/boot: Disable power10 features after BOOTAFLAGS assignment
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (5 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 006/600] ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 008/600] media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field Greg Kroah-Hartman
` (603 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicholas Piggin, Nathan Chancellor,
Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nathan Chancellor <nathan@kernel.org>
[ Upstream commit 2b694fc96fe33a7c042e3a142d27d945c8c668b0 ]
When building the boot wrapper assembly files with clang after
commit 648a1783fe25 ("powerpc/boot: Fix boot wrapper code generation
with CONFIG_POWER10_CPU"), the following warnings appear for each file
built:
'-prefixed' is not a recognized feature for this target (ignoring feature)
'-pcrel' is not a recognized feature for this target (ignoring feature)
While it is questionable whether or not LLVM should be emitting a
warning when passed negative versions of code generation flags when
building assembly files (since it does not emit a warning for the
altivec and vsx flags), it is easy enough to work around this by just
moving the disabled flags to BOOTCFLAGS after the assignment of
BOOTAFLAGS, so that they are not added when building assembly files.
Do so to silence the warnings.
Fixes: 648a1783fe25 ("powerpc/boot: Fix boot wrapper code generation with CONFIG_POWER10_CPU")
Link: https://github.com/ClangBuiltLinux/linux/issues/1839
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230427-remove-power10-args-from-boot-aflags-clang-v1-1-9107f7c943bc@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/boot/Makefile | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 13fad4f0a6d8f..b13324b1a1696 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -34,8 +34,6 @@ endif
BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -O2 -msoft-float -mno-altivec -mno-vsx \
- $(call cc-option,-mno-prefixed) $(call cc-option,-mno-pcrel) \
- $(call cc-option,-mno-mma) \
$(call cc-option,-mno-spe) $(call cc-option,-mspe=no) \
-pipe -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
$(LINUXINCLUDE)
@@ -71,6 +69,10 @@ BOOTAFLAGS := -D__ASSEMBLY__ $(BOOTCFLAGS) -nostdinc
BOOTARFLAGS := -crD
+BOOTCFLAGS += $(call cc-option,-mno-prefixed) \
+ $(call cc-option,-mno-pcrel) \
+ $(call cc-option,-mno-mma)
+
ifdef CONFIG_CC_IS_CLANG
BOOTCFLAGS += $(CLANG_FLAGS)
BOOTAFLAGS += $(CLANG_FLAGS)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 008/600] media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (6 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 007/600] powerpc/boot: Disable power10 features after BOOTAFLAGS assignment Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 009/600] Revert "MIPS: unhide PATA_PLATFORM" Greg Kroah-Hartman
` (602 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Benjamin Gaignard, Yunfei Dong,
Nicolas Dufresne, Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
[ Upstream commit ae440c5da33cdb90a109f2df2a0360c67b3fab7e ]
Some drivers firmwares parse by themselves slice header and need
num_delta_pocs_of_ref_rps_idx value to parse slice header
short_term_ref_pic_set().
Use one of the 4 reserved bytes to store this value without
changing the v4l2_ctrl_hevc_decode_params structure size and padding.
This value also exist in DXVA API.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[hverkuil: fix typo in num_delta_pocs_of_ref_rps_idx doc]
Stable-dep-of: 297160d411e3 ("media: mediatek: vcodec: move core context from device to each instance")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../userspace-api/media/v4l/ext-ctrls-codec-stateless.rst | 7 +++++++
include/uapi/linux/v4l2-controls.h | 6 +++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec-stateless.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec-stateless.rst
index cd33857d947d3..0ef49647c90bd 100644
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec-stateless.rst
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec-stateless.rst
@@ -2923,6 +2923,13 @@ This structure contains all loop filter related parameters. See sections
- ``poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- PocLtCurr as described in section 8.3.2 "Decoding process for reference
picture set": provides the index of the long term references in DPB array.
+ * - __u8
+ - ``num_delta_pocs_of_ref_rps_idx``
+ - When the short_term_ref_pic_set_sps_flag in the slice header is equal to 0,
+ it is the same as the derived value NumDeltaPocs[RefRpsIdx]. It can be used to parse
+ the RPS data in slice headers instead of skipping it with @short_term_ref_pic_set_size.
+ When the value of short_term_ref_pic_set_sps_flag in the slice header is
+ equal to 1, num_delta_pocs_of_ref_rps_idx shall be set to 0.
* - struct :c:type:`v4l2_hevc_dpb_entry`
- ``dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]``
- The decoded picture buffer, for meta-data about reference frames.
diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
index b5e7d082b8adf..d4a4e3cab3c2a 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -2411,6 +2411,9 @@ struct v4l2_ctrl_hevc_slice_params {
* @poc_st_curr_after: provides the index of the short term after references
* in DPB array
* @poc_lt_curr: provides the index of the long term references in DPB array
+ * @num_delta_pocs_of_ref_rps_idx: same as the derived value NumDeltaPocs[RefRpsIdx],
+ * can be used to parse the RPS data in slice headers
+ * instead of skipping it with @short_term_ref_pic_set_size.
* @reserved: padding field. Should be zeroed by applications.
* @dpb: the decoded picture buffer, for meta-data about reference frames
* @flags: see V4L2_HEVC_DECODE_PARAM_FLAG_{}
@@ -2426,7 +2429,8 @@ struct v4l2_ctrl_hevc_decode_params {
__u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
__u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
__u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
- __u8 reserved[4];
+ __u8 num_delta_pocs_of_ref_rps_idx;
+ __u8 reserved[3];
struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
__u64 flags;
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 009/600] Revert "MIPS: unhide PATA_PLATFORM"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (7 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 008/600] media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 010/600] phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code Greg Kroah-Hartman
` (601 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maciej W. Rozycki,
Thomas Bogendoerfer, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maciej W. Rozycki <macro@orcam.me.uk>
[ Upstream commit 1e13da548fbffb807633df85a244b70caa90bdf7 ]
Revert commit 75b18aac6fa3 ("MIPS: unhide PATA_PLATFORM") now that
HAVE_PATA_PLATFORM is set selectively for all the relevant platforms.
Verified with `db1xxx_defconfig' and `sb1250_swarm_defconfig' by making
sure PATA_PLATFORM is still there in `.config' with this change applied,
and with `malta_defconfig' by making sure it's now gone.
Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/mips/Kconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index cf1fbf4eaa8a0..0e62f5edaee2e 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -83,7 +83,6 @@ config MIPS
select HAVE_LD_DEAD_CODE_DATA_ELIMINATION
select HAVE_MOD_ARCH_SPECIFIC
select HAVE_NMI
- select HAVE_PATA_PLATFORM
select HAVE_PERF_EVENTS
select HAVE_PERF_REGS
select HAVE_PERF_USER_STACK_DUMP
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 010/600] phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (8 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 009/600] Revert "MIPS: unhide PATA_PLATFORM" Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 011/600] media: amphion: use dev_err_probe Greg Kroah-Hartman
` (600 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Adrien Thierry, Vinod Koul,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adrien Thierry <athierry@redhat.com>
[ Upstream commit 8932089b566c24ea19b57e37704c492678de1420 ]
The return value from qcom_snps_hsphy_suspend/resume is not used. Make
sure qcom_snps_hsphy_runtime_suspend/resume return this value as well.
Signed-off-by: Adrien Thierry <athierry@redhat.com>
Link: https://lore.kernel.org/r/20230629144542.14906-4-athierry@redhat.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
index 6170f8fd118e2..d0319bee01c0f 100644
--- a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
+++ b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
@@ -214,8 +214,7 @@ static int __maybe_unused qcom_snps_hsphy_runtime_suspend(struct device *dev)
if (!hsphy->phy_initialized)
return 0;
- qcom_snps_hsphy_suspend(hsphy);
- return 0;
+ return qcom_snps_hsphy_suspend(hsphy);
}
static int __maybe_unused qcom_snps_hsphy_runtime_resume(struct device *dev)
@@ -225,8 +224,7 @@ static int __maybe_unused qcom_snps_hsphy_runtime_resume(struct device *dev)
if (!hsphy->phy_initialized)
return 0;
- qcom_snps_hsphy_resume(hsphy);
- return 0;
+ return qcom_snps_hsphy_resume(hsphy);
}
static int qcom_snps_hsphy_set_mode(struct phy *phy, enum phy_mode mode,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 011/600] media: amphion: use dev_err_probe
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (9 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 010/600] phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 012/600] media: pulse8-cec: handle possible ping error Greg Kroah-Hartman
` (599 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alexander Stein, ming_qian,
Hans Verkuil, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Stein <alexander.stein@ew.tq-group.com>
[ Upstream commit 517f088385e1b8015606143e6212cb30f8714070 ]
This simplifies the code and silences -517 error messages. Also
the reason is listed in /sys/kernel/debug/devices_deferred.
Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: ming_qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vpu_mbox.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/media/platform/amphion/vpu_mbox.c b/drivers/media/platform/amphion/vpu_mbox.c
index bf759eb2fd46d..b6d5b4844f672 100644
--- a/drivers/media/platform/amphion/vpu_mbox.c
+++ b/drivers/media/platform/amphion/vpu_mbox.c
@@ -46,11 +46,10 @@ static int vpu_mbox_request_channel(struct device *dev, struct vpu_mbox *mbox)
cl->rx_callback = vpu_mbox_rx_callback;
ch = mbox_request_channel_byname(cl, mbox->name);
- if (IS_ERR(ch)) {
- dev_err(dev, "Failed to request mbox chan %s, ret : %ld\n",
- mbox->name, PTR_ERR(ch));
- return PTR_ERR(ch);
- }
+ if (IS_ERR(ch))
+ return dev_err_probe(dev, PTR_ERR(ch),
+ "Failed to request mbox chan %s\n",
+ mbox->name);
mbox->ch = ch;
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 012/600] media: pulse8-cec: handle possible ping error
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (10 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 011/600] media: amphion: use dev_err_probe Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 013/600] media: pci: cx23885: fix error handling for cx23885 ATSC boards Greg Kroah-Hartman
` (598 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dmitry Antipov, Hans Verkuil,
Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Antipov <dmantipov@yandex.ru>
[ Upstream commit 92cbf865ea2e0f2997ff97815c6db182eb23df1b ]
Handle (and warn about) possible error waiting for MSGCODE_PING result.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/cec/usb/pulse8/pulse8-cec.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/media/cec/usb/pulse8/pulse8-cec.c b/drivers/media/cec/usb/pulse8/pulse8-cec.c
index 04b13cdc38d2c..ba67587bd43ec 100644
--- a/drivers/media/cec/usb/pulse8/pulse8-cec.c
+++ b/drivers/media/cec/usb/pulse8/pulse8-cec.c
@@ -809,8 +809,11 @@ static void pulse8_ping_eeprom_work_handler(struct work_struct *work)
mutex_lock(&pulse8->lock);
cmd = MSGCODE_PING;
- pulse8_send_and_wait(pulse8, &cmd, 1,
- MSGCODE_COMMAND_ACCEPTED, 0);
+ if (pulse8_send_and_wait(pulse8, &cmd, 1,
+ MSGCODE_COMMAND_ACCEPTED, 0)) {
+ dev_warn(pulse8->dev, "failed to ping EEPROM\n");
+ goto unlock;
+ }
if (pulse8->vers < 2)
goto unlock;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 013/600] media: pci: cx23885: fix error handling for cx23885 ATSC boards
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (11 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 012/600] media: pulse8-cec: handle possible ping error Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 014/600] 9p: virtio: fix unlikely null pointer deref in handle_rerror Greg Kroah-Hartman
` (597 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nikolay Burykin, Hans Verkuil,
Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nikolay Burykin <burikin@ivk.ru>
[ Upstream commit 4aaa96b59df5fac41ba891969df6b092061ea9d7 ]
After having been assigned to NULL value at cx23885-dvb.c:1202,
pointer '0' is dereferenced at cx23885-dvb.c:2469.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Signed-off-by: Nikolay Burykin <burikin@ivk.ru>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/pci/cx23885/cx23885-dvb.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
index 8fd5b6ef24282..7551ca4a322a4 100644
--- a/drivers/media/pci/cx23885/cx23885-dvb.c
+++ b/drivers/media/pci/cx23885/cx23885-dvb.c
@@ -2459,16 +2459,10 @@ static int dvb_register(struct cx23885_tsport *port)
request_module("%s", info.type);
client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info);
if (!i2c_client_has_driver(client_tuner)) {
- module_put(client_demod->dev.driver->owner);
- i2c_unregister_device(client_demod);
- port->i2c_client_demod = NULL;
goto frontend_detach;
}
if (!try_module_get(client_tuner->dev.driver->owner)) {
i2c_unregister_device(client_tuner);
- module_put(client_demod->dev.driver->owner);
- i2c_unregister_device(client_demod);
- port->i2c_client_demod = NULL;
goto frontend_detach;
}
port->i2c_client_tuner = client_tuner;
@@ -2505,16 +2499,10 @@ static int dvb_register(struct cx23885_tsport *port)
request_module("%s", info.type);
client_tuner = i2c_new_client_device(&dev->i2c_bus[1].i2c_adap, &info);
if (!i2c_client_has_driver(client_tuner)) {
- module_put(client_demod->dev.driver->owner);
- i2c_unregister_device(client_demod);
- port->i2c_client_demod = NULL;
goto frontend_detach;
}
if (!try_module_get(client_tuner->dev.driver->owner)) {
i2c_unregister_device(client_tuner);
- module_put(client_demod->dev.driver->owner);
- i2c_unregister_device(client_demod);
- port->i2c_client_demod = NULL;
goto frontend_detach;
}
port->i2c_client_tuner = client_tuner;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 014/600] 9p: virtio: fix unlikely null pointer deref in handle_rerror
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (12 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 013/600] media: pci: cx23885: fix error handling for cx23885 ATSC boards Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 015/600] 9p: virtio: make sure offs is initialized in zc_request Greg Kroah-Hartman
` (596 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Simon Horman, Dominique Martinet,
Eric Van Hensbergen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dominique Martinet <asmadeus@codewreck.org>
[ Upstream commit 13ade4ac5c28e8a014fa85278f5a4270b215f906 ]
handle_rerror can dereference the pages pointer, but it is not
necessarily set for small payloads.
In practice these should be filtered out by the size check, but
might as well double-check explicitly.
This fixes the following scan-build warnings:
net/9p/trans_virtio.c:401:24: warning: Dereference of null pointer [core.NullDereference]
memcpy_from_page(to, *pages++, offs, n);
^~~~~~~~
net/9p/trans_virtio.c:406:23: warning: Dereference of null pointer (loaded from variable 'pages') [core.NullDereference]
memcpy_from_page(to, *pages, offs, size);
^~~~~~
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/9p/trans_virtio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 3f3eb03cda7d6..6a4a29a2703de 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -385,7 +385,7 @@ static void handle_rerror(struct p9_req_t *req, int in_hdr_len,
void *to = req->rc.sdata + in_hdr_len;
// Fits entirely into the static data? Nothing to do.
- if (req->rc.size < in_hdr_len)
+ if (req->rc.size < in_hdr_len || !pages)
return;
// Really long error message? Tough, truncate the reply. Might get
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 015/600] 9p: virtio: make sure offs is initialized in zc_request
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (13 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 014/600] 9p: virtio: fix unlikely null pointer deref in handle_rerror Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 016/600] ksmbd: fix out of bounds in smb3_decrypt_req() Greg Kroah-Hartman
` (595 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Simon Horman, Dominique Martinet,
Eric Van Hensbergen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dominique Martinet <asmadeus@codewreck.org>
[ Upstream commit 4a73edab69d3a6623f03817fe950a2d9585f80e4 ]
Similarly to the previous patch: offs can be used in handle_rerrors
without initializing on small payloads; in this case handle_rerrors will
not use it because of the size check, but it doesn't hurt to make sure
it is zero to please scan-build.
This fixes the following warning:
net/9p/trans_virtio.c:539:3: warning: 3rd function call argument is an uninitialized value [core.CallAndMessage]
handle_rerror(req, in_hdr_len, offs, in_pages);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/9p/trans_virtio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c
index 6a4a29a2703de..3cf660d8a0a7b 100644
--- a/net/9p/trans_virtio.c
+++ b/net/9p/trans_virtio.c
@@ -429,7 +429,7 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
struct page **in_pages = NULL, **out_pages = NULL;
struct virtio_chan *chan = client->trans;
struct scatterlist *sgs[4];
- size_t offs;
+ size_t offs = 0;
int need_drop = 0;
int kicked = 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 016/600] ksmbd: fix out of bounds in smb3_decrypt_req()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (14 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 015/600] 9p: virtio: make sure offs is initialized in zc_request Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 017/600] ksmbd: validate session id and tree id in compound request Greg Kroah-Hartman
` (594 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Namjae Jeon, Steve French,
Sasha Levin, zdi-disclosures
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <linkinjeon@kernel.org>
[ Upstream commit dc318846f3dd54574a36ae97fc8d8b75dd7cdb1e ]
smb3_decrypt_req() validate if pdu_length is smaller than
smb2_transform_hdr size.
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21589
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/server/smb2pdu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 9b621fd993bb7..ee954c5ab9c2b 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -8713,7 +8713,8 @@ int smb3_decrypt_req(struct ksmbd_work *work)
struct smb2_transform_hdr *tr_hdr = smb2_get_msg(buf);
int rc = 0;
- if (buf_data_size < sizeof(struct smb2_hdr)) {
+ if (pdu_length < sizeof(struct smb2_transform_hdr) ||
+ buf_data_size < sizeof(struct smb2_hdr)) {
pr_err("Transform message is too small (%u)\n",
pdu_length);
return -ECONNABORTED;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 017/600] ksmbd: validate session id and tree id in compound request
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (15 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 016/600] ksmbd: fix out of bounds in smb3_decrypt_req() Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 018/600] ksmbd: no response from compound read Greg Kroah-Hartman
` (593 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Namjae Jeon, Steve French,
Sasha Levin, zdi-disclosures
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <linkinjeon@kernel.org>
[ Upstream commit 3df0411e132ee74a87aa13142dfd2b190275332e ]
`smb2_get_msg()` in smb2_get_ksmbd_tcon() and smb2_check_user_session()
will always return the first request smb2 header in a compound request.
if `SMB2_TREE_CONNECT_HE` is the first command in compound request, will
return 0, i.e. The tree id check is skipped.
This patch use ksmbd_req_buf_next() to get current command in compound.
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21506
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/server/smb2pdu.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index ee954c5ab9c2b..74c245809772e 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -86,9 +86,9 @@ struct channel *lookup_chann_list(struct ksmbd_session *sess, struct ksmbd_conn
*/
int smb2_get_ksmbd_tcon(struct ksmbd_work *work)
{
- struct smb2_hdr *req_hdr = smb2_get_msg(work->request_buf);
+ struct smb2_hdr *req_hdr = ksmbd_req_buf_next(work);
unsigned int cmd = le16_to_cpu(req_hdr->Command);
- int tree_id;
+ unsigned int tree_id;
if (cmd == SMB2_TREE_CONNECT_HE ||
cmd == SMB2_CANCEL_HE ||
@@ -113,7 +113,7 @@ int smb2_get_ksmbd_tcon(struct ksmbd_work *work)
pr_err("The first operation in the compound does not have tcon\n");
return -EINVAL;
}
- if (work->tcon->id != tree_id) {
+ if (tree_id != UINT_MAX && work->tcon->id != tree_id) {
pr_err("tree id(%u) is different with id(%u) in first operation\n",
tree_id, work->tcon->id);
return -EINVAL;
@@ -565,9 +565,9 @@ int smb2_allocate_rsp_buf(struct ksmbd_work *work)
*/
int smb2_check_user_session(struct ksmbd_work *work)
{
- struct smb2_hdr *req_hdr = smb2_get_msg(work->request_buf);
+ struct smb2_hdr *req_hdr = ksmbd_req_buf_next(work);
struct ksmbd_conn *conn = work->conn;
- unsigned int cmd = conn->ops->get_cmd_val(work);
+ unsigned int cmd = le16_to_cpu(req_hdr->Command);
unsigned long long sess_id;
/*
@@ -593,7 +593,7 @@ int smb2_check_user_session(struct ksmbd_work *work)
pr_err("The first operation in the compound does not have sess\n");
return -EINVAL;
}
- if (work->sess->id != sess_id) {
+ if (sess_id != ULLONG_MAX && work->sess->id != sess_id) {
pr_err("session id(%llu) is different with the first operation(%lld)\n",
sess_id, work->sess->id);
return -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 018/600] ksmbd: no response from compound read
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (16 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 017/600] ksmbd: validate session id and tree id in compound request Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 019/600] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Greg Kroah-Hartman
` (592 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Namjae Jeon, Steve French,
Sasha Levin, zdi-disclosures
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <linkinjeon@kernel.org>
[ Upstream commit e202a1e8634b186da38cbbff85382ea2b9e297cf ]
ksmbd doesn't support compound read. If client send read-read in
compound to ksmbd, there can be memory leak from read buffer.
Windows and linux clients doesn't send it to server yet. For now,
No response from compound read. compound read will be supported soon.
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21587, ZDI-CAN-21588
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/server/smb2pdu.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/smb/server/smb2pdu.c b/fs/smb/server/smb2pdu.c
index 74c245809772e..f6fd5cf976a50 100644
--- a/fs/smb/server/smb2pdu.c
+++ b/fs/smb/server/smb2pdu.c
@@ -6314,6 +6314,11 @@ int smb2_read(struct ksmbd_work *work)
unsigned int max_read_size = conn->vals->max_read_size;
WORK_BUFFERS(work, req, rsp);
+ if (work->next_smb2_rcv_hdr_off) {
+ work->send_no_response = 1;
+ err = -EOPNOTSUPP;
+ goto out;
+ }
if (test_share_config_flag(work->tcon->share_conf,
KSMBD_SHARE_FLAG_PIPE)) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 019/600] ksmbd: fix out of bounds in init_smb2_rsp_hdr()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (17 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 018/600] ksmbd: no response from compound read Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 020/600] ASoC: da7219: Flush pending AAD IRQ when suspending Greg Kroah-Hartman
` (591 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Namjae Jeon, Steve French,
Sasha Levin, zdi-disclosures
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <linkinjeon@kernel.org>
[ Upstream commit 536bb492d39bb6c080c92f31e8a55fe9934f452b ]
If client send smb2 negotiate request and then send smb1 negotiate
request, init_smb2_rsp_hdr is called for smb1 negotiate request since
need_neg is set to false. This patch ignore smb1 packets after ->need_neg
is set to false.
Reported-by: zdi-disclosures@trendmicro.com # ZDI-CAN-21541
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/server/server.c | 7 ++++++-
fs/smb/server/smb_common.c | 19 +++++++++++--------
fs/smb/server/smb_common.h | 2 +-
3 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c
index 847ee62afb8a1..9804cabe72a84 100644
--- a/fs/smb/server/server.c
+++ b/fs/smb/server/server.c
@@ -286,6 +286,7 @@ static void handle_ksmbd_work(struct work_struct *wk)
static int queue_ksmbd_work(struct ksmbd_conn *conn)
{
struct ksmbd_work *work;
+ int err;
work = ksmbd_alloc_work_struct();
if (!work) {
@@ -297,7 +298,11 @@ static int queue_ksmbd_work(struct ksmbd_conn *conn)
work->request_buf = conn->request_buf;
conn->request_buf = NULL;
- ksmbd_init_smb_server(work);
+ err = ksmbd_init_smb_server(work);
+ if (err) {
+ ksmbd_free_work_struct(work);
+ return 0;
+ }
ksmbd_conn_enqueue_request(work);
atomic_inc(&conn->r_count);
diff --git a/fs/smb/server/smb_common.c b/fs/smb/server/smb_common.c
index d937e2f45c829..a4421d9458d90 100644
--- a/fs/smb/server/smb_common.c
+++ b/fs/smb/server/smb_common.c
@@ -388,26 +388,29 @@ static struct smb_version_cmds smb1_server_cmds[1] = {
[SMB_COM_NEGOTIATE_EX] = { .proc = smb1_negotiate, },
};
-static void init_smb1_server(struct ksmbd_conn *conn)
+static int init_smb1_server(struct ksmbd_conn *conn)
{
conn->ops = &smb1_server_ops;
conn->cmds = smb1_server_cmds;
conn->max_cmds = ARRAY_SIZE(smb1_server_cmds);
+ return 0;
}
-void ksmbd_init_smb_server(struct ksmbd_work *work)
+int ksmbd_init_smb_server(struct ksmbd_work *work)
{
struct ksmbd_conn *conn = work->conn;
__le32 proto;
- if (conn->need_neg == false)
- return;
-
proto = *(__le32 *)((struct smb_hdr *)work->request_buf)->Protocol;
+ if (conn->need_neg == false) {
+ if (proto == SMB1_PROTO_NUMBER)
+ return -EINVAL;
+ return 0;
+ }
+
if (proto == SMB1_PROTO_NUMBER)
- init_smb1_server(conn);
- else
- init_smb3_11_server(conn);
+ return init_smb1_server(conn);
+ return init_smb3_11_server(conn);
}
int ksmbd_populate_dot_dotdot_entries(struct ksmbd_work *work, int info_level,
diff --git a/fs/smb/server/smb_common.h b/fs/smb/server/smb_common.h
index e63d2a4f466b5..1cbb492cdefec 100644
--- a/fs/smb/server/smb_common.h
+++ b/fs/smb/server/smb_common.h
@@ -427,7 +427,7 @@ bool ksmbd_smb_request(struct ksmbd_conn *conn);
int ksmbd_lookup_dialect_by_id(__le16 *cli_dialects, __le16 dialects_count);
-void ksmbd_init_smb_server(struct ksmbd_work *work);
+int ksmbd_init_smb_server(struct ksmbd_work *work);
struct ksmbd_kstat;
int ksmbd_populate_dot_dotdot_entries(struct ksmbd_work *work,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 020/600] ASoC: da7219: Flush pending AAD IRQ when suspending
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (18 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 019/600] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 021/600] ASoC: da7219: Check for failure reading AAD IRQ events Greg Kroah-Hartman
` (590 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dmytro Maluka, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmytro Maluka <dmy@semihalf.com>
[ Upstream commit 91e292917dad64ab8d1d5ca2ab3069ad9dac6f72 ]
da7219_aad_suspend() disables jack detection, which should prevent
generating new interrupts by DA7219 while suspended. However, there is a
theoretical possibility that there is a pending interrupt generated just
before suspending DA7219 and not handled yet, so the IRQ handler may
still run after DA7219 is suspended. To prevent that, wait until the
pending IRQ handling is done.
This patch arose as an attempt to fix the following I2C failure
occurring sometimes during system suspend or resume:
[ 355.876211] i2c_designware i2c_designware.3: Transfer while suspended
[ 355.876245] WARNING: CPU: 2 PID: 3576 at drivers/i2c/busses/i2c-designware-master.c:570 i2c_dw_xfer+0x411/0x440
...
[ 355.876462] Call Trace:
[ 355.876468] <TASK>
[ 355.876475] ? update_load_avg+0x1b3/0x615
[ 355.876484] __i2c_transfer+0x101/0x1d8
[ 355.876494] i2c_transfer+0x74/0x10d
[ 355.876504] regmap_i2c_read+0x6a/0x9c
[ 355.876513] _regmap_raw_read+0x179/0x223
[ 355.876521] regmap_raw_read+0x1e1/0x28e
[ 355.876527] regmap_bulk_read+0x17d/0x1ba
[ 355.876532] ? __wake_up+0xed/0x1bb
[ 355.876542] da7219_aad_irq_thread+0x54/0x2c9 [snd_soc_da7219 5fb8ebb2179cf2fea29af090f3145d68ed8e2184]
[ 355.876556] irq_thread+0x13c/0x231
[ 355.876563] ? irq_forced_thread_fn+0x5f/0x5f
[ 355.876570] ? irq_thread_fn+0x4d/0x4d
[ 355.876576] kthread+0x13a/0x152
[ 355.876581] ? synchronize_irq+0xc3/0xc3
[ 355.876587] ? kthread_blkcg+0x31/0x31
[ 355.876592] ret_from_fork+0x1f/0x30
[ 355.876601] </TASK>
which indicates that the AAD IRQ handler is unexpectedly running when
DA7219 is suspended, and as a result, is trying to read data from DA7219
over I2C and is hitting the I2C driver "Transfer while suspended"
failure.
However, with this patch the above failure is still reproducible. So
this patch does not fix any real observed issue so far, but at least is
useful for confirming that the above issue is not caused by a pending
IRQ but rather looks like a DA7219 hardware issue with an IRQ
unexpectedly generated after jack detection is already disabled.
Signed-off-by: Dmytro Maluka <dmy@semihalf.com>
Link: https://lore.kernel.org/r/20230717193737.161784-2-dmy@semihalf.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/da7219-aad.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/codecs/da7219-aad.c b/sound/soc/codecs/da7219-aad.c
index bba73c44c219f..49b1622e7bada 100644
--- a/sound/soc/codecs/da7219-aad.c
+++ b/sound/soc/codecs/da7219-aad.c
@@ -863,6 +863,8 @@ void da7219_aad_suspend(struct snd_soc_component *component)
}
}
}
+
+ synchronize_irq(da7219_aad->irq);
}
void da7219_aad_resume(struct snd_soc_component *component)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 021/600] ASoC: da7219: Check for failure reading AAD IRQ events
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (19 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 020/600] ASoC: da7219: Flush pending AAD IRQ when suspending Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 022/600] ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect Greg Kroah-Hartman
` (589 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dmytro Maluka, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmytro Maluka <dmy@semihalf.com>
[ Upstream commit f0691dc16206f21b13c464434366e2cd632b8ed7 ]
When handling an AAD interrupt, if IRQ events read failed (for example,
due to i2c "Transfer while suspended" failure, i.e. when attempting to
read it while DA7219 is suspended, which may happen due to a spurious
AAD interrupt), the events array contains garbage uninitialized values.
So instead of trying to interprete those values and doing any actions
based on them (potentially resulting in misbehavior, e.g. reporting
bogus events), refuse to handle the interrupt.
Signed-off-by: Dmytro Maluka <dmy@semihalf.com>
Link: https://lore.kernel.org/r/20230717193737.161784-3-dmy@semihalf.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/da7219-aad.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/sound/soc/codecs/da7219-aad.c b/sound/soc/codecs/da7219-aad.c
index 49b1622e7bada..9251490548e8c 100644
--- a/sound/soc/codecs/da7219-aad.c
+++ b/sound/soc/codecs/da7219-aad.c
@@ -353,11 +353,15 @@ static irqreturn_t da7219_aad_irq_thread(int irq, void *data)
struct da7219_priv *da7219 = snd_soc_component_get_drvdata(component);
u8 events[DA7219_AAD_IRQ_REG_MAX];
u8 statusa;
- int i, report = 0, mask = 0;
+ int i, ret, report = 0, mask = 0;
/* Read current IRQ events */
- regmap_bulk_read(da7219->regmap, DA7219_ACCDET_IRQ_EVENT_A,
- events, DA7219_AAD_IRQ_REG_MAX);
+ ret = regmap_bulk_read(da7219->regmap, DA7219_ACCDET_IRQ_EVENT_A,
+ events, DA7219_AAD_IRQ_REG_MAX);
+ if (ret) {
+ dev_warn_ratelimited(component->dev, "Failed to read IRQ events: %d\n", ret);
+ return IRQ_NONE;
+ }
if (!events[DA7219_AAD_IRQ_REG_A] && !events[DA7219_AAD_IRQ_REG_B])
return IRQ_NONE;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 022/600] ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (20 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 021/600] ASoC: da7219: Check for failure reading AAD IRQ events Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 023/600] ethernet: atheros: fix return value check in atl1c_tso_csum() Greg Kroah-Hartman
` (588 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Edson Juliano Drosdeck, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
[ Upstream commit 1bc40efdaf4a0ccfdb10a1c8e4b458f4764e8e5f ]
Add a quirk mechanism to allow specifying that active-high jack-detection
should be used on platforms where this info is not available in devicetree.
And add an entry for the Positivo CW14Q01P-V2 to the DMI table, so that
jack-detection will work properly on this laptop.
Signed-off-by: Edson Juliano Drosdeck <edson.drosdeck@gmail.com>
Link: https://lore.kernel.org/r/20230719200241.4865-1-edson.drosdeck@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/nau8821.c | 41 ++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/sound/soc/codecs/nau8821.c b/sound/soc/codecs/nau8821.c
index 4a72b94e84104..efd92656a060d 100644
--- a/sound/soc/codecs/nau8821.c
+++ b/sound/soc/codecs/nau8821.c
@@ -10,6 +10,7 @@
#include <linux/acpi.h>
#include <linux/clk.h>
#include <linux/delay.h>
+#include <linux/dmi.h>
#include <linux/init.h>
#include <linux/i2c.h>
#include <linux/module.h>
@@ -25,6 +26,13 @@
#include <sound/tlv.h>
#include "nau8821.h"
+#define NAU8821_JD_ACTIVE_HIGH BIT(0)
+
+static int nau8821_quirk;
+static int quirk_override = -1;
+module_param_named(quirk, quirk_override, uint, 0444);
+MODULE_PARM_DESC(quirk, "Board-specific quirk override");
+
#define NAU_FREF_MAX 13500000
#define NAU_FVCO_MAX 100000000
#define NAU_FVCO_MIN 90000000
@@ -1696,6 +1704,33 @@ static int nau8821_setup_irq(struct nau8821 *nau8821)
return 0;
}
+/* Please keep this list alphabetically sorted */
+static const struct dmi_system_id nau8821_quirk_table[] = {
+ {
+ /* Positivo CW14Q01P-V2 */
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"),
+ DMI_MATCH(DMI_BOARD_NAME, "CW14Q01P-V2"),
+ },
+ .driver_data = (void *)(NAU8821_JD_ACTIVE_HIGH),
+ },
+ {}
+};
+
+static void nau8821_check_quirks(void)
+{
+ const struct dmi_system_id *dmi_id;
+
+ if (quirk_override != -1) {
+ nau8821_quirk = quirk_override;
+ return;
+ }
+
+ dmi_id = dmi_first_match(nau8821_quirk_table);
+ if (dmi_id)
+ nau8821_quirk = (unsigned long)dmi_id->driver_data;
+}
+
static int nau8821_i2c_probe(struct i2c_client *i2c)
{
struct device *dev = &i2c->dev;
@@ -1716,6 +1751,12 @@ static int nau8821_i2c_probe(struct i2c_client *i2c)
nau8821->dev = dev;
nau8821->irq = i2c->irq;
+
+ nau8821_check_quirks();
+
+ if (nau8821_quirk & NAU8821_JD_ACTIVE_HIGH)
+ nau8821->jkdet_polarity = 0;
+
nau8821_print_device_properties(nau8821);
nau8821_reset_chip(nau8821->regmap);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 023/600] ethernet: atheros: fix return value check in atl1c_tso_csum()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (21 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 022/600] ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 024/600] m68k: Fix invalid .section syntax Greg Kroah-Hartman
` (587 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yuanjun Gong, Simon Horman,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuanjun Gong <ruc_gongyuanjun@163.com>
[ Upstream commit 8d01da0a1db237c44c92859ce3612df7af8d3a53 ]
in atl1c_tso_csum, it should check the return value of pskb_trim(),
and return an error code if an unexpected value is returned
by pskb_trim().
Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/atheros/atl1c/atl1c_main.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
index 40c781695d581..7762e532c6a4f 100644
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
@@ -2104,8 +2104,11 @@ static int atl1c_tso_csum(struct atl1c_adapter *adapter,
real_len = (((unsigned char *)ip_hdr(skb) - skb->data)
+ ntohs(ip_hdr(skb)->tot_len));
- if (real_len < skb->len)
- pskb_trim(skb, real_len);
+ if (real_len < skb->len) {
+ err = pskb_trim(skb, real_len);
+ if (err)
+ return err;
+ }
hdr_len = skb_tcp_all_headers(skb);
if (unlikely(skb->len == hdr_len)) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 024/600] m68k: Fix invalid .section syntax
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (22 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 023/600] ethernet: atheros: fix return value check in atl1c_tso_csum() Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 025/600] s390/dasd: use correct number of retries for ERP requests Greg Kroah-Hartman
` (586 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ben Hutchings, Jan-Benedict Glaw,
Geert Uytterhoeven, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Hutchings <benh@debian.org>
[ Upstream commit 922a9bd138101e3e5718f0f4d40dba68ef89bb43 ]
gas supports several different forms for .section for ELF targets,
including:
.section NAME [, "FLAGS"[, @TYPE[,FLAG_SPECIFIC_ARGUMENTS]]]
and:
.section "NAME"[, #FLAGS...]
In several places we use a mix of these two forms:
.section NAME, #FLAGS...
A current development snapshot of binutils (2.40.50.20230611) treats
this mixed syntax as an error.
Change to consistently use:
.section NAME, "FLAGS"
as is used elsewhere in the kernel.
Link: https://buildd.debian.org/status/fetch.php?pkg=linux&arch=m68k&ver=6.4%7Erc6-1%7Eexp1&stamp=1686907300&raw=1
Signed-off-by: Ben Hutchings <benh@debian.org>
Tested-by: Jan-Benedict Glaw <jbglaw@lug-owl.de>
Link: https://lore.kernel.org/r/ZIyBaueWT9jnTwRC@decadent.org.uk
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/m68k/fpsp040/skeleton.S | 4 ++--
arch/m68k/ifpsp060/os.S | 4 ++--
arch/m68k/kernel/relocate_kernel.S | 4 ++--
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/m68k/fpsp040/skeleton.S b/arch/m68k/fpsp040/skeleton.S
index 439395aa6fb42..081922c72daaa 100644
--- a/arch/m68k/fpsp040/skeleton.S
+++ b/arch/m68k/fpsp040/skeleton.S
@@ -499,13 +499,13 @@ in_ea:
dbf %d0,morein
rts
- .section .fixup,#alloc,#execinstr
+ .section .fixup,"ax"
.even
1:
jbsr fpsp040_die
jbra .Lnotkern
- .section __ex_table,#alloc
+ .section __ex_table,"a"
.align 4
.long in_ea,1b
diff --git a/arch/m68k/ifpsp060/os.S b/arch/m68k/ifpsp060/os.S
index 7a0d6e4280665..89e2ec224ab6c 100644
--- a/arch/m68k/ifpsp060/os.S
+++ b/arch/m68k/ifpsp060/os.S
@@ -379,11 +379,11 @@ _060_real_access:
| Execption handling for movs access to illegal memory
- .section .fixup,#alloc,#execinstr
+ .section .fixup,"ax"
.even
1: moveq #-1,%d1
rts
-.section __ex_table,#alloc
+.section __ex_table,"a"
.align 4
.long dmrbuae,1b
.long dmrwuae,1b
diff --git a/arch/m68k/kernel/relocate_kernel.S b/arch/m68k/kernel/relocate_kernel.S
index ab0f1e7d46535..f7667079e08e9 100644
--- a/arch/m68k/kernel/relocate_kernel.S
+++ b/arch/m68k/kernel/relocate_kernel.S
@@ -26,7 +26,7 @@ ENTRY(relocate_new_kernel)
lea %pc@(.Lcopy),%a4
2: addl #0x00000000,%a4 /* virt_to_phys() */
- .section ".m68k_fixup","aw"
+ .section .m68k_fixup,"aw"
.long M68K_FIXUP_MEMOFFSET, 2b+2
.previous
@@ -49,7 +49,7 @@ ENTRY(relocate_new_kernel)
lea %pc@(.Lcont040),%a4
5: addl #0x00000000,%a4 /* virt_to_phys() */
- .section ".m68k_fixup","aw"
+ .section .m68k_fixup,"aw"
.long M68K_FIXUP_MEMOFFSET, 5b+2
.previous
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 025/600] s390/dasd: use correct number of retries for ERP requests
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (23 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 024/600] m68k: Fix invalid .section syntax Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 026/600] s390/dasd: fix hanging device after request requeue Greg Kroah-Hartman
` (585 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stefan Haberland, Jan Hoeppner,
Jens Axboe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Haberland <sth@linux.ibm.com>
[ Upstream commit acea28a6b74f458defda7417d2217b051ba7d444 ]
If a DASD request fails an error recovery procedure (ERP) request might
be built as a copy of the original request to do error recovery.
The ERP request gets a number of retries assigned.
This number is always 256 no matter what other value might have been set
for the original request. This is not what is expected when a user
specifies a certain amount of retries for the device via sysfs.
Correctly use the number of retries of the original request for ERP
requests.
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Link: https://lore.kernel.org/r/20230721193647.3889634-3-sth@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/block/dasd_3990_erp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/s390/block/dasd_3990_erp.c b/drivers/s390/block/dasd_3990_erp.c
index d030fe2e29643..91cb9d52a4250 100644
--- a/drivers/s390/block/dasd_3990_erp.c
+++ b/drivers/s390/block/dasd_3990_erp.c
@@ -2441,7 +2441,7 @@ static struct dasd_ccw_req *dasd_3990_erp_add_erp(struct dasd_ccw_req *cqr)
erp->block = cqr->block;
erp->magic = cqr->magic;
erp->expires = cqr->expires;
- erp->retries = 256;
+ erp->retries = device->default_retries;
erp->buildclk = get_tod_clock();
erp->status = DASD_CQR_FILLED;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 026/600] s390/dasd: fix hanging device after request requeue
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (24 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 025/600] s390/dasd: use correct number of retries for ERP requests Greg Kroah-Hartman
@ 2023-09-11 13:40 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 027/600] fs/nls: make load_nls() take a const parameter Greg Kroah-Hartman
` (584 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:40 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stefan Haberland, Jan Hoeppner,
Jens Axboe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Haberland <sth@linux.ibm.com>
[ Upstream commit 8a2278ce9c25048d999fe1a3561def75d963f471 ]
The DASD device driver has a function to requeue requests to the
blocklayer.
This function is used in various cases when basic settings for the device
have to be changed like High Performance Ficon related parameters or copy
pair settings.
The functions iterates over the device->ccw_queue and also removes the
requests from the block->ccw_queue.
In case the device is started on an alias device instead of the base
device it might be removed from the block->ccw_queue without having it
canceled properly before. This might lead to a hanging device since the
request is no longer on a queue and can not be handled properly.
Fix by iterating over the block->ccw_queue instead of the
device->ccw_queue. This will take care of all blocklayer related requests
and handle them on all associated DASD devices.
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Link: https://lore.kernel.org/r/20230721193647.3889634-4-sth@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/block/dasd.c | 125 +++++++++++++++-----------------------
1 file changed, 48 insertions(+), 77 deletions(-)
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index bce3422d85640..04d9b1d4b1ba9 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2926,41 +2926,32 @@ static void _dasd_wake_block_flush_cb(struct dasd_ccw_req *cqr, void *data)
* Requeue a request back to the block request queue
* only works for block requests
*/
-static int _dasd_requeue_request(struct dasd_ccw_req *cqr)
+static void _dasd_requeue_request(struct dasd_ccw_req *cqr)
{
- struct dasd_block *block = cqr->block;
struct request *req;
- if (!block)
- return -EINVAL;
/*
* If the request is an ERP request there is nothing to requeue.
* This will be done with the remaining original request.
*/
if (cqr->refers)
- return 0;
+ return;
spin_lock_irq(&cqr->dq->lock);
req = (struct request *) cqr->callback_data;
blk_mq_requeue_request(req, true);
spin_unlock_irq(&cqr->dq->lock);
- return 0;
+ return;
}
-/*
- * Go through all request on the dasd_block request queue, cancel them
- * on the respective dasd_device, and return them to the generic
- * block layer.
- */
-static int dasd_flush_block_queue(struct dasd_block *block)
+static int _dasd_requests_to_flushqueue(struct dasd_block *block,
+ struct list_head *flush_queue)
{
struct dasd_ccw_req *cqr, *n;
- int rc, i;
- struct list_head flush_queue;
unsigned long flags;
+ int rc, i;
- INIT_LIST_HEAD(&flush_queue);
- spin_lock_bh(&block->queue_lock);
+ spin_lock_irqsave(&block->queue_lock, flags);
rc = 0;
restart:
list_for_each_entry_safe(cqr, n, &block->ccw_queue, blocklist) {
@@ -2975,13 +2966,32 @@ static int dasd_flush_block_queue(struct dasd_block *block)
* is returned from the dasd_device layer.
*/
cqr->callback = _dasd_wake_block_flush_cb;
- for (i = 0; cqr != NULL; cqr = cqr->refers, i++)
- list_move_tail(&cqr->blocklist, &flush_queue);
+ for (i = 0; cqr; cqr = cqr->refers, i++)
+ list_move_tail(&cqr->blocklist, flush_queue);
if (i > 1)
/* moved more than one request - need to restart */
goto restart;
}
- spin_unlock_bh(&block->queue_lock);
+ spin_unlock_irqrestore(&block->queue_lock, flags);
+
+ return rc;
+}
+
+/*
+ * Go through all request on the dasd_block request queue, cancel them
+ * on the respective dasd_device, and return them to the generic
+ * block layer.
+ */
+static int dasd_flush_block_queue(struct dasd_block *block)
+{
+ struct dasd_ccw_req *cqr, *n;
+ struct list_head flush_queue;
+ unsigned long flags;
+ int rc;
+
+ INIT_LIST_HEAD(&flush_queue);
+ rc = _dasd_requests_to_flushqueue(block, &flush_queue);
+
/* Now call the callback function of flushed requests */
restart_cb:
list_for_each_entry_safe(cqr, n, &flush_queue, blocklist) {
@@ -3864,75 +3874,36 @@ EXPORT_SYMBOL_GPL(dasd_generic_space_avail);
*/
int dasd_generic_requeue_all_requests(struct dasd_device *device)
{
+ struct dasd_block *block = device->block;
struct list_head requeue_queue;
struct dasd_ccw_req *cqr, *n;
- struct dasd_ccw_req *refers;
int rc;
- INIT_LIST_HEAD(&requeue_queue);
- spin_lock_irq(get_ccwdev_lock(device->cdev));
- rc = 0;
- list_for_each_entry_safe(cqr, n, &device->ccw_queue, devlist) {
- /* Check status and move request to flush_queue */
- if (cqr->status == DASD_CQR_IN_IO) {
- rc = device->discipline->term_IO(cqr);
- if (rc) {
- /* unable to terminate requeust */
- dev_err(&device->cdev->dev,
- "Unable to terminate request %p "
- "on suspend\n", cqr);
- spin_unlock_irq(get_ccwdev_lock(device->cdev));
- dasd_put_device(device);
- return rc;
- }
- }
- list_move_tail(&cqr->devlist, &requeue_queue);
- }
- spin_unlock_irq(get_ccwdev_lock(device->cdev));
-
- list_for_each_entry_safe(cqr, n, &requeue_queue, devlist) {
- wait_event(dasd_flush_wq,
- (cqr->status != DASD_CQR_CLEAR_PENDING));
+ if (!block)
+ return 0;
- /*
- * requeue requests to blocklayer will only work
- * for block device requests
- */
- if (_dasd_requeue_request(cqr))
- continue;
+ INIT_LIST_HEAD(&requeue_queue);
+ rc = _dasd_requests_to_flushqueue(block, &requeue_queue);
- /* remove requests from device and block queue */
- list_del_init(&cqr->devlist);
- while (cqr->refers != NULL) {
- refers = cqr->refers;
- /* remove the request from the block queue */
- list_del(&cqr->blocklist);
- /* free the finished erp request */
- dasd_free_erp_request(cqr, cqr->memdev);
- cqr = refers;
+ /* Now call the callback function of flushed requests */
+restart_cb:
+ list_for_each_entry_safe(cqr, n, &requeue_queue, blocklist) {
+ wait_event(dasd_flush_wq, (cqr->status < DASD_CQR_QUEUED));
+ /* Process finished ERP request. */
+ if (cqr->refers) {
+ spin_lock_bh(&block->queue_lock);
+ __dasd_process_erp(block->base, cqr);
+ spin_unlock_bh(&block->queue_lock);
+ /* restart list_for_xx loop since dasd_process_erp
+ * might remove multiple elements
+ */
+ goto restart_cb;
}
-
- /*
- * _dasd_requeue_request already checked for a valid
- * blockdevice, no need to check again
- * all erp requests (cqr->refers) have a cqr->block
- * pointer copy from the original cqr
- */
+ _dasd_requeue_request(cqr);
list_del_init(&cqr->blocklist);
cqr->block->base->discipline->free_cp(
cqr, (struct request *) cqr->callback_data);
}
-
- /*
- * if requests remain then they are internal request
- * and go back to the device queue
- */
- if (!list_empty(&requeue_queue)) {
- /* move freeze_queue to start of the ccw_queue */
- spin_lock_irq(get_ccwdev_lock(device->cdev));
- list_splice_tail(&requeue_queue, &device->ccw_queue);
- spin_unlock_irq(get_ccwdev_lock(device->cdev));
- }
dasd_schedule_device_bh(device);
return rc;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 027/600] fs/nls: make load_nls() take a const parameter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (25 preceding siblings ...)
2023-09-11 13:40 ` [PATCH 6.1 026/600] s390/dasd: fix hanging device after request requeue Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 028/600] ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
` (583 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stephen Rothwell, Winston Wen,
Paulo Alcantara, Christian Brauner, Steve French, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Winston Wen <wentao@uniontech.com>
[ Upstream commit c1ed39ec116272935528ca9b348b8ee79b0791da ]
load_nls() take a char * parameter, use it to find nls module in list or
construct the module name to load it.
This change make load_nls() take a const parameter, so we don't need do
some cast like this:
ses->local_nls = load_nls((char *)ctx->local_nls->charset);
Suggested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Winston Wen <wentao@uniontech.com>
Reviewed-by: Paulo Alcantara <pc@manguebit.com>
Reviewed-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nls/nls_base.c | 4 ++--
include/linux/nls.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
index 52ccd34b1e792..a026dbd3593f6 100644
--- a/fs/nls/nls_base.c
+++ b/fs/nls/nls_base.c
@@ -272,7 +272,7 @@ int unregister_nls(struct nls_table * nls)
return -EINVAL;
}
-static struct nls_table *find_nls(char *charset)
+static struct nls_table *find_nls(const char *charset)
{
struct nls_table *nls;
spin_lock(&nls_lock);
@@ -288,7 +288,7 @@ static struct nls_table *find_nls(char *charset)
return nls;
}
-struct nls_table *load_nls(char *charset)
+struct nls_table *load_nls(const char *charset)
{
return try_then_request_module(find_nls(charset), "nls_%s", charset);
}
diff --git a/include/linux/nls.h b/include/linux/nls.h
index 499e486b3722d..e0bf8367b274a 100644
--- a/include/linux/nls.h
+++ b/include/linux/nls.h
@@ -47,7 +47,7 @@ enum utf16_endian {
/* nls_base.c */
extern int __register_nls(struct nls_table *, struct module *);
extern int unregister_nls(struct nls_table *);
-extern struct nls_table *load_nls(char *);
+extern struct nls_table *load_nls(const char *charset);
extern void unload_nls(struct nls_table *);
extern struct nls_table *load_nls_default(void);
#define register_nls(nls) __register_nls((nls), THIS_MODULE)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 028/600] ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (26 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 027/600] fs/nls: make load_nls() take a const parameter Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 029/600] ASoc: codecs: ES8316: Fix DMIC config Greg Kroah-Hartman
` (582 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shuming Fan, Vijendar Mukunda,
Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shuming Fan <shumingf@realtek.com>
[ Upstream commit 02fb23d72720df2b6be3f29fc5787ca018eb92c3 ]
When the system suspends, peripheral Imp-defined interrupt is disabled.
When system level resume is invoked, the peripheral Imp-defined interrupts
should be enabled to handle JD events.
Signed-off-by: Shuming Fan <shumingf@realtek.com>
Reported-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230721090643.128213-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/rt5682-sdw.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt5682-sdw.c b/sound/soc/codecs/rt5682-sdw.c
index c1a94229dc7e3..868a61c8b0608 100644
--- a/sound/soc/codecs/rt5682-sdw.c
+++ b/sound/soc/codecs/rt5682-sdw.c
@@ -786,8 +786,15 @@ static int __maybe_unused rt5682_dev_resume(struct device *dev)
if (!rt5682->first_hw_init)
return 0;
- if (!slave->unattach_request)
+ if (!slave->unattach_request) {
+ if (rt5682->disable_irq == true) {
+ mutex_lock(&rt5682->disable_irq_lock);
+ sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF);
+ rt5682->disable_irq = false;
+ mutex_unlock(&rt5682->disable_irq_lock);
+ }
goto regmap_sync;
+ }
time = wait_for_completion_timeout(&slave->initialization_complete,
msecs_to_jiffies(RT5682_PROBE_TIMEOUT));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 029/600] ASoc: codecs: ES8316: Fix DMIC config
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (27 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 028/600] ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 030/600] ASoC: rt711: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
` (581 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Edgar, Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Edgar <ljijcj@163.com>
[ Upstream commit d20d35d1ad62c6cca36368c1e8f29335a068659e ]
According to the datasheet, the DMIC config should
be changed to { 0, 2 ,3 }
Signed-off-by: Edgar <ljijcj@163.com>
Link: https://lore.kernel.org/r/20230719054722.401954-1-ljijcj@163.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/es8316.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c
index 87775378362e7..c4e4ab93fdb6d 100644
--- a/sound/soc/codecs/es8316.c
+++ b/sound/soc/codecs/es8316.c
@@ -153,7 +153,7 @@ static const char * const es8316_dmic_txt[] = {
"dmic data at high level",
"dmic data at low level",
};
-static const unsigned int es8316_dmic_values[] = { 0, 1, 2 };
+static const unsigned int es8316_dmic_values[] = { 0, 2, 3 };
static const struct soc_enum es8316_dmic_src_enum =
SOC_VALUE_ENUM_SINGLE(ES8316_ADC_DMIC, 0, 3,
ARRAY_SIZE(es8316_dmic_txt),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 030/600] ASoC: rt711: fix for JD event handling in ClockStop Mode0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (28 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 029/600] ASoc: codecs: ES8316: Fix DMIC config Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 031/600] ASoC: rt711-sdca: " Greg Kroah-Hartman
` (580 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shuming Fan, Vijendar Mukunda,
Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shuming Fan <shumingf@realtek.com>
[ Upstream commit b69de265bd0e877015a00fbba453ef72af162e0f ]
When the system suspends, peripheral Imp-defined interrupt is disabled.
When system level resume is invoked, the peripheral Imp-defined interrupts
should be enabled to handle JD events.
Signed-off-by: Shuming Fan <shumingf@realtek.com>
Reported-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230721090654.128230-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/rt711-sdw.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt711-sdw.c b/sound/soc/codecs/rt711-sdw.c
index 4fe68bcf2a7c2..9545b8a7eb192 100644
--- a/sound/soc/codecs/rt711-sdw.c
+++ b/sound/soc/codecs/rt711-sdw.c
@@ -541,8 +541,15 @@ static int __maybe_unused rt711_dev_resume(struct device *dev)
if (!rt711->first_hw_init)
return 0;
- if (!slave->unattach_request)
+ if (!slave->unattach_request) {
+ if (rt711->disable_irq == true) {
+ mutex_lock(&rt711->disable_irq_lock);
+ sdw_write_no_pm(slave, SDW_SCP_INTMASK1, SDW_SCP_INT1_IMPL_DEF);
+ rt711->disable_irq = false;
+ mutex_unlock(&rt711->disable_irq_lock);
+ }
goto regmap_sync;
+ }
time = wait_for_completion_timeout(&slave->initialization_complete,
msecs_to_jiffies(RT711_PROBE_TIMEOUT));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 031/600] ASoC: rt711-sdca: fix for JD event handling in ClockStop Mode0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (29 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 030/600] ASoC: rt711: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 032/600] ASoC: atmel: Fix the 8K sample parameter in I2SC master Greg Kroah-Hartman
` (579 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shuming Fan, Vijendar Mukunda,
Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shuming Fan <shumingf@realtek.com>
[ Upstream commit 23adeb7056acd4fd866969f4afb91441776cc4f5 ]
When the system suspends, peripheral SDCA interrupts are disabled.
When system level resume is invoked, the peripheral SDCA interrupts
should be enabled to handle JD events.
Enable SDCA interrupts in resume sequence when ClockStop Mode0 is applied.
Signed-off-by: Shuming Fan <shumingf@realtek.com>
Reported-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230721090711.128247-1-shumingf@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/rt711-sdca-sdw.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/sound/soc/codecs/rt711-sdca-sdw.c b/sound/soc/codecs/rt711-sdca-sdw.c
index e23cec4c457de..487d3010ddc19 100644
--- a/sound/soc/codecs/rt711-sdca-sdw.c
+++ b/sound/soc/codecs/rt711-sdca-sdw.c
@@ -442,8 +442,16 @@ static int __maybe_unused rt711_sdca_dev_resume(struct device *dev)
if (!rt711->first_hw_init)
return 0;
- if (!slave->unattach_request)
+ if (!slave->unattach_request) {
+ if (rt711->disable_irq == true) {
+ mutex_lock(&rt711->disable_irq_lock);
+ sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK1, SDW_SCP_SDCA_INTMASK_SDCA_0);
+ sdw_write_no_pm(slave, SDW_SCP_SDCA_INTMASK2, SDW_SCP_SDCA_INTMASK_SDCA_8);
+ rt711->disable_irq = false;
+ mutex_unlock(&rt711->disable_irq_lock);
+ }
goto regmap_sync;
+ }
time = wait_for_completion_timeout(&slave->initialization_complete,
msecs_to_jiffies(RT711_PROBE_TIMEOUT));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 032/600] ASoC: atmel: Fix the 8K sample parameter in I2SC master
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (30 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 031/600] ASoC: rt711-sdca: " Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 033/600] ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset Greg Kroah-Hartman
` (578 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Guiting Shen, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guiting Shen <aarongt.shen@gmail.com>
[ Upstream commit f85739c0b2b0d98a32f5ca4fcc5501d2b76df4f6 ]
The 8K sample parameter of 12.288Mhz main system bus clock doesn't work
because the I2SC_MR.IMCKDIV must not be 0 according to the sama5d2
series datasheet(I2SC Mode Register of Register Summary).
So use the 6.144Mhz instead of 12.288Mhz to support 8K sample.
Signed-off-by: Guiting Shen <aarongt.shen@gmail.com>
Link: https://lore.kernel.org/r/20230715030620.62328-1-aarongt.shen@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/atmel/atmel-i2s.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/soc/atmel/atmel-i2s.c b/sound/soc/atmel/atmel-i2s.c
index 425d66edbf867..5e43ff0b537a3 100644
--- a/sound/soc/atmel/atmel-i2s.c
+++ b/sound/soc/atmel/atmel-i2s.c
@@ -163,11 +163,14 @@ struct atmel_i2s_gck_param {
#define I2S_MCK_12M288 12288000UL
#define I2S_MCK_11M2896 11289600UL
+#define I2S_MCK_6M144 6144000UL
/* mck = (32 * (imckfs+1) / (imckdiv+1)) * fs */
static const struct atmel_i2s_gck_param gck_params[] = {
+ /* mck = 6.144Mhz */
+ { 8000, I2S_MCK_6M144, 1, 47}, /* mck = 768 fs */
+
/* mck = 12.288MHz */
- { 8000, I2S_MCK_12M288, 0, 47}, /* mck = 1536 fs */
{ 16000, I2S_MCK_12M288, 1, 47}, /* mck = 768 fs */
{ 24000, I2S_MCK_12M288, 3, 63}, /* mck = 512 fs */
{ 32000, I2S_MCK_12M288, 3, 47}, /* mck = 384 fs */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 033/600] ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (31 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 032/600] ASoC: atmel: Fix the 8K sample parameter in I2SC master Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 034/600] platform/x86: intel: hid: Always call BTNL ACPI method Greg Kroah-Hartman
` (577 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Takashi Iwai, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <tiwai@suse.de>
[ Upstream commit 3da435063777f8d861ba5a165344e3f75f839357 ]
Microsoft Modern Wireless Headset (appearing on the host as "Microsoft
USB Link") has a playback and a capture mixer volume/switch, but they
are fairly broken. The descriptor reports wrong dB ranges for
playback, and the capture volume/switch don't influence on the actual
recording at all. Moreover, there seem instabilities in the
connection, and at best, we should disable the runtime PM.
So this ended up with a quirk entry for:
- Correct the playback dB range;
I picked up some reasonable values but it's a guess work
- Disable the capture mixer;
it's completely useless and confuses PA/PW
- Suppress get-sample-rate, apply the delay for message handling,
and suppress the auto-suspend
The behavior of the wheel control on the headset is somehow flaky,
too, but it's an issue of HID.
Link: https://bugzilla.suse.com/show_bug.cgi?id=1207129
Link: https://lore.kernel.org/r/20230725092057.15115-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/usb/mixer_maps.c | 14 ++++++++++++++
sound/usb/quirks.c | 3 +++
2 files changed, 17 insertions(+)
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
index f4bd1e8ae4b6c..23260aa1919d3 100644
--- a/sound/usb/mixer_maps.c
+++ b/sound/usb/mixer_maps.c
@@ -374,6 +374,15 @@ static const struct usbmix_name_map corsair_virtuoso_map[] = {
{ 0 }
};
+/* Microsoft USB Link headset */
+/* a guess work: raw playback volume values are from 2 to 129 */
+static const struct usbmix_dB_map ms_usb_link_dB = { -3225, 0, true };
+static const struct usbmix_name_map ms_usb_link_map[] = {
+ { 9, NULL, .dB = &ms_usb_link_dB },
+ { 10, NULL }, /* Headset Capture volume; seems non-working, disabled */
+ { 0 } /* terminator */
+};
+
/* ASUS ROG Zenith II with Realtek ALC1220-VB */
static const struct usbmix_name_map asus_zenith_ii_map[] = {
{ 19, NULL, 12 }, /* FU, Input Gain Pad - broken response, disabled */
@@ -668,6 +677,11 @@ static const struct usbmix_ctl_map usbmix_ctl_maps[] = {
.id = USB_ID(0x1395, 0x0025),
.map = sennheiser_pc8_map,
},
+ {
+ /* Microsoft USB Link headset */
+ .id = USB_ID(0x045e, 0x083c),
+ .map = ms_usb_link_map,
+ },
{ 0 } /* terminator */
};
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index 6cf55b7f7a041..d4a7ffef82194 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -2011,6 +2011,9 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_IGNORE_CTL_ERROR),
DEVICE_FLG(0x041e, 0x4080, /* Creative Live Cam VF0610 */
QUIRK_FLAG_GET_SAMPLE_RATE),
+ DEVICE_FLG(0x045e, 0x083c, /* MS USB Link headset */
+ QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_CTL_MSG_DELAY |
+ QUIRK_FLAG_DISABLE_AUTOSUSPEND),
DEVICE_FLG(0x046d, 0x084c, /* Logitech ConferenceCam Connect */
QUIRK_FLAG_GET_SAMPLE_RATE | QUIRK_FLAG_CTL_MSG_DELAY_1M),
DEVICE_FLG(0x046d, 0x0991, /* Logitech QuickCam Pro */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 034/600] platform/x86: intel: hid: Always call BTNL ACPI method
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (32 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 033/600] ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 035/600] platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks Greg Kroah-Hartman
` (576 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maxim Mikityanskiy, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit e3ab18de2b09361d6f0e4aafb9cfd6d002ce43a1 ]
On a HP Elite Dragonfly G2 the 0xcc and 0xcd events for SW_TABLET_MODE
are only send after the BTNL ACPI method has been called.
Likely more devices need this, so make the BTNL ACPI method unconditional
instead of only doing it on devices with a 5 button array.
Note this also makes the intel_button_array_enable() call in probe()
unconditional, that function does its own priv->array check. This makes
the intel_button_array_enable() call in probe() consistent with the calls
done on suspend/resume which also rely on the priv->array check inside
the function.
Reported-by: Maxim Mikityanskiy <maxtram95@gmail.com>
Closes: https://lore.kernel.org/platform-driver-x86/20230712175023.31651-1-maxtram95@gmail.com/
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230715181516.5173-1-hdegoede@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/intel/hid.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c
index b6313ecd190c0..df533b277b999 100644
--- a/drivers/platform/x86/intel/hid.c
+++ b/drivers/platform/x86/intel/hid.c
@@ -601,7 +601,7 @@ static bool button_array_present(struct platform_device *device)
static int intel_hid_probe(struct platform_device *device)
{
acpi_handle handle = ACPI_HANDLE(&device->dev);
- unsigned long long mode;
+ unsigned long long mode, dummy;
struct intel_hid_priv *priv;
acpi_status status;
int err;
@@ -666,18 +666,15 @@ static int intel_hid_probe(struct platform_device *device)
if (err)
goto err_remove_notify;
- if (priv->array) {
- unsigned long long dummy;
+ intel_button_array_enable(&device->dev, true);
- intel_button_array_enable(&device->dev, true);
-
- /* Call button load method to enable HID power button */
- if (!intel_hid_evaluate_method(handle, INTEL_HID_DSM_BTNL_FN,
- &dummy)) {
- dev_warn(&device->dev,
- "failed to enable HID power button\n");
- }
- }
+ /*
+ * Call button load method to enable HID power button
+ * Always do this since it activates events on some devices without
+ * a button array too.
+ */
+ if (!intel_hid_evaluate_method(handle, INTEL_HID_DSM_BTNL_FN, &dummy))
+ dev_warn(&device->dev, "failed to enable HID power button\n");
device_init_wakeup(&device->dev, true);
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 035/600] platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (33 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 034/600] platform/x86: intel: hid: Always call BTNL ACPI method Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 036/600] platform/x86: think-lmi: Use kfree_sensitive instead of kfree Greg Kroah-Hartman
` (575 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maxim Mikityanskiy, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maxim Mikityanskiy <maxtram95@gmail.com>
[ Upstream commit 7783e97f8558ad7a4d1748922461bc88483fbcdf ]
HP Elite Dragonfly G2 (a convertible laptop/tablet) has a reliable VGBS
method. If VGBS is not called on boot, the firmware sends an initial
0xcd event shortly after calling the BTNL method, but only if the device
is booted in the laptop mode. However, if the device is booted in the
tablet mode and VGBS is not called, there is no initial 0xcc event, and
the input device for SW_TABLET_MODE is not registered up until the user
turns the device into the laptop mode.
Call VGBS on boot on this device to get the initial state of
SW_TABLET_MODE in a reliable way.
Tested with BIOS 1.13.1.
Signed-off-by: Maxim Mikityanskiy <maxtram95@gmail.com>
Link: https://lore.kernel.org/r/20230716183213.64173-1-maxtram95@gmail.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/intel/hid.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c
index df533b277b999..b96ef0eb82aff 100644
--- a/drivers/platform/x86/intel/hid.c
+++ b/drivers/platform/x86/intel/hid.c
@@ -131,6 +131,12 @@ static const struct dmi_system_id dmi_vgbs_allow_list[] = {
DMI_MATCH(DMI_PRODUCT_NAME, "Surface Go"),
},
},
+ {
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "HP"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "HP Elite Dragonfly G2 Notebook PC"),
+ },
+ },
{ }
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 036/600] platform/x86: think-lmi: Use kfree_sensitive instead of kfree
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (34 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 035/600] platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 037/600] platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops Greg Kroah-Hartman
` (574 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Wang Ming, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wang Ming <machel@vivo.com>
[ Upstream commit 1da0893aed2e48e2bdf37c29b029f2e060d25927 ]
key might contain private part of the key, so better use
kfree_sensitive to free it.
Signed-off-by: Wang Ming <machel@vivo.com>
Link: https://lore.kernel.org/r/20230717101114.18966-1-machel@vivo.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/think-lmi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/think-lmi.c b/drivers/platform/x86/think-lmi.c
index 3cbb92b6c5215..f6290221d139d 100644
--- a/drivers/platform/x86/think-lmi.c
+++ b/drivers/platform/x86/think-lmi.c
@@ -719,12 +719,12 @@ static ssize_t cert_to_password_store(struct kobject *kobj,
/* Format: 'Password,Signature' */
auth_str = kasprintf(GFP_KERNEL, "%s,%s", passwd, setting->signature);
if (!auth_str) {
- kfree(passwd);
+ kfree_sensitive(passwd);
return -ENOMEM;
}
ret = tlmi_simple_call(LENOVO_CERT_TO_PASSWORD_GUID, auth_str);
kfree(auth_str);
- kfree(passwd);
+ kfree_sensitive(passwd);
return ret ?: count;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 037/600] platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (35 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 036/600] platform/x86: think-lmi: Use kfree_sensitive instead of kfree Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 038/600] platform/x86: huawei-wmi: Silence ambient light sensor Greg Kroah-Hartman
` (573 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kristian Angelov, Luke D. Jones,
Hans de Goede, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kristian Angelov <kristiana2000@abv.bg>
[ Upstream commit 6a758a3e831ce1a84c9c209ac6dc755f4c8ce77a ]
This patch fixes setting the cmd values to 0xb3 and 0xb4.
This is necessary on some TUF laptops in order to set the RGB mode.
Closes: https://lore.kernel.org/platform-driver-x86/443078148.491022.1677576298133@nm83.abv.bg
Signed-off-by: Kristian Angelov <kristiana2000@abv.bg>
Reviewed-by: Luke D. Jones <luke@ljones.dev>
Link: https://lore.kernel.org/r/ZLlS7o6UdTUBkyqa@wyvern.localdomain
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/asus-wmi.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c
index 02bf286924183..36effe04c6f33 100644
--- a/drivers/platform/x86/asus-wmi.c
+++ b/drivers/platform/x86/asus-wmi.c
@@ -738,13 +738,23 @@ static ssize_t kbd_rgb_mode_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{
- u32 cmd, mode, r, g, b, speed;
+ u32 cmd, mode, r, g, b, speed;
int err;
if (sscanf(buf, "%d %d %d %d %d %d", &cmd, &mode, &r, &g, &b, &speed) != 6)
return -EINVAL;
- cmd = !!cmd;
+ /* B3 is set and B4 is save to BIOS */
+ switch (cmd) {
+ case 0:
+ cmd = 0xb3;
+ break;
+ case 1:
+ cmd = 0xb4;
+ break;
+ default:
+ return -EINVAL;
+ }
/* These are the known usable modes across all TUF/ROG */
if (mode >= 12 || mode == 9)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 038/600] platform/x86: huawei-wmi: Silence ambient light sensor
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (36 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 037/600] platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 039/600] drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock Greg Kroah-Hartman
` (572 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konstantin Shelekhin, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Shelekhin <k.shelekhin@ftml.net>
[ Upstream commit c21733754cd6ecbca346f2adf9b17d4cfa50504f ]
Currently huawei-wmi causes a lot of spam in dmesg on my
Huawei MateBook X Pro 2022:
...
[36409.328463] input input9: Unknown key pressed, code: 0x02c1
[36411.335104] input input9: Unknown key pressed, code: 0x02c1
[36412.338674] input input9: Unknown key pressed, code: 0x02c1
[36414.848564] input input9: Unknown key pressed, code: 0x02c1
[36416.858706] input input9: Unknown key pressed, code: 0x02c1
...
Fix that by ignoring events generated by ambient light sensor.
This issue was reported on GitHub and resolved with the following merge
request:
https://github.com/aymanbagabas/Huawei-WMI/pull/70
I've contacted the mainter of this repo and he gave me the "go ahead" to
send this patch to the maling list.
Signed-off-by: Konstantin Shelekhin <k.shelekhin@ftml.net>
Link: https://lore.kernel.org/r/20230722155922.173856-1-k.shelekhin@ftml.net
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/huawei-wmi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/platform/x86/huawei-wmi.c b/drivers/platform/x86/huawei-wmi.c
index b85050e4a0d65..ae5daecff1771 100644
--- a/drivers/platform/x86/huawei-wmi.c
+++ b/drivers/platform/x86/huawei-wmi.c
@@ -86,6 +86,8 @@ static const struct key_entry huawei_wmi_keymap[] = {
{ KE_IGNORE, 0x293, { KEY_KBDILLUMTOGGLE } },
{ KE_IGNORE, 0x294, { KEY_KBDILLUMUP } },
{ KE_IGNORE, 0x295, { KEY_KBDILLUMUP } },
+ // Ignore Ambient Light Sensoring
+ { KE_KEY, 0x2c1, { KEY_RESERVED } },
{ KE_END, 0 }
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 039/600] drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (37 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 038/600] platform/x86: huawei-wmi: Silence ambient light sensor Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 040/600] drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family Greg Kroah-Hartman
` (571 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jane Jian, Lijo Lazar, Alex Deucher,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jane Jian <Jane.Jian@amd.com>
[ Upstream commit 4a37c55b859a69f429bfa7fab4fc43ee470b60ed ]
Report current GFX clock also from average clock value as the original
CurrClock data is not valid/accurate any more as per FW team
Signed-off-by: Jane Jian <Jane.Jian@amd.com>
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
index f7ac488a3da20..503e844baede2 100644
--- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
+++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c
@@ -1305,7 +1305,7 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu,
gpu_metrics->average_vclk1_frequency = metrics->AverageVclk1Frequency;
gpu_metrics->average_dclk1_frequency = metrics->AverageDclk1Frequency;
- gpu_metrics->current_gfxclk = metrics->CurrClock[PPCLK_GFXCLK];
+ gpu_metrics->current_gfxclk = gpu_metrics->average_gfxclk_frequency;
gpu_metrics->current_socclk = metrics->CurrClock[PPCLK_SOCCLK];
gpu_metrics->current_uclk = metrics->CurrClock[PPCLK_UCLK];
gpu_metrics->current_vclk0 = metrics->CurrClock[PPCLK_VCLK_0];
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 040/600] drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (38 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 039/600] drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 041/600] drm/amd/display: Exit idle optimizations before attempt to access PHY Greg Kroah-Hartman
` (570 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hansen Dsouza, Alex Hung,
George Shen, Daniel Wheeler, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: George Shen <george.shen@amd.com>
[ Upstream commit 25b054c3c89cb6a7106a7982f0f70e83d0797dab ]
[Why]
Current yellow carp B0 PHYD32CLK logic is incorrectly applied to other
ASICs.
[How]
Add guard to check chip family is yellow carp before applying logic.
Reviewed-by: Hansen Dsouza <hansen.dsouza@amd.com>
Acked-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: George Shen <george.shen@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c
index cef32a1f91cdc..b735e548e26dc 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_dccg.c
@@ -84,7 +84,8 @@ static enum phyd32clk_clock_source get_phy_mux_symclk(
struct dcn_dccg *dccg_dcn,
enum phyd32clk_clock_source src)
{
- if (dccg_dcn->base.ctx->asic_id.hw_internal_rev == YELLOW_CARP_B0) {
+ if (dccg_dcn->base.ctx->asic_id.chip_family == FAMILY_YELLOW_CARP &&
+ dccg_dcn->base.ctx->asic_id.hw_internal_rev == YELLOW_CARP_B0) {
if (src == PHYD32CLKC)
src = PHYD32CLKF;
if (src == PHYD32CLKD)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 041/600] drm/amd/display: Exit idle optimizations before attempt to access PHY
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (39 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 040/600] drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 042/600] ovl: Always reevaluate the file signature for IMA Greg Kroah-Hartman
` (569 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicholas Kazlauskas, Alex Hung,
Leo Chen, Daniel Wheeler, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leo Chen <sancchen@amd.com>
[ Upstream commit de612738e9771bd66aeb20044486c457c512f684 ]
[Why & How]
DMUB may hang when powering down pixel clocks due to no dprefclk.
It is fixed by exiting idle optimization before the attempt to access PHY.
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Leo Chen <sancchen@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
index d260eaa1509ed..9378c98d02cfe 100644
--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_hw_sequencer.c
@@ -1813,10 +1813,13 @@ void dce110_enable_accelerated_mode(struct dc *dc, struct dc_state *context)
hws->funcs.edp_backlight_control(edp_link_with_sink, false);
}
/*resume from S3, no vbios posting, no need to power down again*/
+ clk_mgr_exit_optimized_pwr_state(dc, dc->clk_mgr);
+
power_down_all_hw_blocks(dc);
disable_vga_and_power_gate_all_controllers(dc);
if (edp_link_with_sink && !keep_edp_vdd_on)
dc->hwss.edp_power_control(edp_link_with_sink, false);
+ clk_mgr_optimize_pwr_state(dc, dc->clk_mgr);
}
bios_set_scratch_acc_mode_change(dc->ctx->dc_bios, 1);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 042/600] ovl: Always reevaluate the file signature for IMA
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (40 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 041/600] drm/amd/display: Exit idle optimizations before attempt to access PHY Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 043/600] ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() Greg Kroah-Hartman
` (568 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Eric Snowberg, Mimi Zohar,
Linus Torvalds, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Snowberg <eric.snowberg@oracle.com>
[ Upstream commit 18b44bc5a67275641fb26f2c54ba7eef80ac5950 ]
Commit db1d1e8b9867 ("IMA: use vfs_getattr_nosec to get the i_version")
partially closed an IMA integrity issue when directly modifying a file
on the lower filesystem. If the overlay file is first opened by a user
and later the lower backing file is modified by root, but the extended
attribute is NOT updated, the signature validation succeeds with the old
original signature.
Update the super_block s_iflags to SB_I_IMA_UNVERIFIABLE_SIGNATURE to
force signature reevaluation on every file access until a fine grained
solution can be found.
Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/overlayfs/super.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 51eec4a8e82b2..08d3a1f34ac6c 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -2155,7 +2155,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
ovl_trusted_xattr_handlers;
sb->s_fs_info = ofs;
sb->s_flags |= SB_POSIXACL;
- sb->s_iflags |= SB_I_SKIP_SYNC;
+ sb->s_iflags |= SB_I_SKIP_SYNC | SB_I_IMA_UNVERIFIABLE_SIGNATURE;
err = -ENOMEM;
root_dentry = ovl_get_root(sb, upperpath.dentry, oe);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 043/600] ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (41 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 042/600] ovl: Always reevaluate the file signature for IMA Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 044/600] ALSA: usb-audio: Update for native DSD support quirks Greg Kroah-Hartman
` (567 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Minjie Du, Viresh Kumar,
Sergey Shtylyov, Damien Le Moal, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Minjie Du <duminjie@vivo.com>
[ Upstream commit 4139f992c49356391fb086c0c8ce51f66c26d623 ]
It is possible for dma_request_chan() to return EPROBE_DEFER, which
means acdev->host->dev is not ready yet. At this point dev_err() will
have no output. Use dev_err_probe() instead.
Signed-off-by: Minjie Du <duminjie@vivo.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/ata/pata_arasan_cf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/pata_arasan_cf.c b/drivers/ata/pata_arasan_cf.c
index e89617ed9175b..46588fc829432 100644
--- a/drivers/ata/pata_arasan_cf.c
+++ b/drivers/ata/pata_arasan_cf.c
@@ -529,7 +529,8 @@ static void data_xfer(struct work_struct *work)
/* dma_request_channel may sleep, so calling from process context */
acdev->dma_chan = dma_request_chan(acdev->host->dev, "data");
if (IS_ERR(acdev->dma_chan)) {
- dev_err(acdev->host->dev, "Unable to get dma_chan\n");
+ dev_err_probe(acdev->host->dev, PTR_ERR(acdev->dma_chan),
+ "Unable to get dma_chan\n");
acdev->dma_chan = NULL;
goto chan_request_fail;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 044/600] ALSA: usb-audio: Update for native DSD support quirks
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (42 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 043/600] ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 045/600] staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER Greg Kroah-Hartman
` (566 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jussi Laako, Takashi Iwai,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jussi Laako <jussi@sonarnerd.net>
[ Upstream commit f7fea075edfa085c25eb34c44ceacf3602537f98 ]
Maintenance patch for native DSD support.
Remove incorrect T+A device quirks. Move set of device quirks to vendor
quirks. Add set of missing device and vendor quirks.
Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
Link: https://lore.kernel.org/r/20230726165645.404311-1-jussi@sonarnerd.net
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/usb/quirks.c | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index d4a7ffef82194..4667d543f7481 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1874,8 +1874,10 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
/* XMOS based USB DACs */
switch (chip->usb_id) {
- case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */
- case USB_ID(0x21ed, 0xd75a): /* Accuphase DAC-60 option card */
+ case USB_ID(0x139f, 0x5504): /* Nagra DAC */
+ case USB_ID(0x20b1, 0x3089): /* Mola-Mola DAC */
+ case USB_ID(0x2522, 0x0007): /* LH Labs Geek Out 1V5 */
+ case USB_ID(0x2522, 0x0009): /* LH Labs Geek Pulse X Inifinity 2V0 */
case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */
case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */
if (fp->altsetting == 2)
@@ -1885,14 +1887,18 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
case USB_ID(0x0d8c, 0x0316): /* Hegel HD12 DSD */
case USB_ID(0x10cb, 0x0103): /* The Bit Opus #3; with fp->dsd_raw */
case USB_ID(0x16d0, 0x06b2): /* NuPrime DAC-10 */
- case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
+ case USB_ID(0x16d0, 0x06b4): /* NuPrime Audio HD-AVP/AVA */
case USB_ID(0x16d0, 0x0733): /* Furutech ADL Stratos */
+ case USB_ID(0x16d0, 0x09d8): /* NuPrime IDA-8 */
case USB_ID(0x16d0, 0x09db): /* NuPrime Audio DAC-9 */
+ case USB_ID(0x16d0, 0x09dd): /* Encore mDSD */
case USB_ID(0x1db5, 0x0003): /* Bryston BDA3 */
+ case USB_ID(0x20a0, 0x4143): /* WaveIO USB Audio 2.0 */
case USB_ID(0x22e1, 0xca01): /* HDTA Serenade DSD */
case USB_ID(0x249c, 0x9326): /* M2Tech Young MkIII */
case USB_ID(0x2616, 0x0106): /* PS Audio NuWave DAC */
case USB_ID(0x2622, 0x0041): /* Audiolab M-DAC+ */
+ case USB_ID(0x278b, 0x5100): /* Rotel RC-1590 */
case USB_ID(0x27f7, 0x3002): /* W4S DAC-2v2SE */
case USB_ID(0x29a2, 0x0086): /* Mutec MC3+ USB */
case USB_ID(0x6b42, 0x0042): /* MSB Technology */
@@ -1902,9 +1908,6 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
/* Amanero Combo384 USB based DACs with native DSD support */
case USB_ID(0x16d0, 0x071a): /* Amanero - Combo384 */
- case USB_ID(0x2ab6, 0x0004): /* T+A DAC8DSD-V2.0, MP1000E-V2.0, MP2000R-V2.0, MP2500R-V2.0, MP3100HV-V2.0 */
- case USB_ID(0x2ab6, 0x0005): /* T+A USB HD Audio 1 */
- case USB_ID(0x2ab6, 0x0006): /* T+A USB HD Audio 2 */
if (fp->altsetting == 2) {
switch (le16_to_cpu(chip->dev->descriptor.bcdDevice)) {
case 0x199:
@@ -2049,6 +2052,9 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_IFACE_DELAY),
DEVICE_FLG(0x0644, 0x805f, /* TEAC Model 12 */
QUIRK_FLAG_FORCE_IFACE_RESET),
+ DEVICE_FLG(0x0644, 0x806b, /* TEAC UD-701 */
+ QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
+ QUIRK_FLAG_IFACE_DELAY),
DEVICE_FLG(0x06f8, 0xb000, /* Hercules DJ Console (Windows Edition) */
QUIRK_FLAG_IGNORE_CTL_ERROR),
DEVICE_FLG(0x06f8, 0xd002, /* Hercules DJ Console (Macintosh Edition) */
@@ -2087,6 +2093,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY),
DEVICE_FLG(0x154e, 0x3006, /* Marantz SA-14S1 */
QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY),
+ DEVICE_FLG(0x154e, 0x300b, /* Marantz SA-KI RUBY / SA-12 */
+ QUIRK_FLAG_DSD_RAW),
DEVICE_FLG(0x154e, 0x500e, /* Denon DN-X1600 */
QUIRK_FLAG_IGNORE_CLOCK_SOURCE),
DEVICE_FLG(0x1686, 0x00dd, /* Zoom R16/24 */
@@ -2131,6 +2139,10 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_SHARE_MEDIA_DEVICE | QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x21b4, 0x0081, /* AudioQuest DragonFly */
QUIRK_FLAG_GET_SAMPLE_RATE),
+ DEVICE_FLG(0x21b4, 0x0230, /* Ayre QB-9 Twenty */
+ QUIRK_FLAG_DSD_RAW),
+ DEVICE_FLG(0x21b4, 0x0232, /* Ayre QX-5 Twenty */
+ QUIRK_FLAG_DSD_RAW),
DEVICE_FLG(0x2522, 0x0007, /* LH Labs Geek Out HD Audio 1V5 */
QUIRK_FLAG_SET_IFACE_FIRST),
DEVICE_FLG(0x2708, 0x0002, /* Audient iD14 */
@@ -2173,12 +2185,18 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_VALIDATE_RATES),
VENDOR_FLG(0x1235, /* Focusrite Novation */
QUIRK_FLAG_VALIDATE_RATES),
+ VENDOR_FLG(0x1511, /* AURALiC */
+ QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x152a, /* Thesycon devices */
QUIRK_FLAG_DSD_RAW),
+ VENDOR_FLG(0x18d1, /* iBasso devices */
+ QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x1de7, /* Phoenix Audio */
QUIRK_FLAG_GET_SAMPLE_RATE),
VENDOR_FLG(0x20b1, /* XMOS based devices */
QUIRK_FLAG_DSD_RAW),
+ VENDOR_FLG(0x21ed, /* Accuphase Laboratory */
+ QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x22d9, /* Oppo */
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x23ba, /* Playback Design */
@@ -2194,10 +2212,14 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x2ab6, /* T+A devices */
QUIRK_FLAG_DSD_RAW),
+ VENDOR_FLG(0x2d87, /* Cayin device */
+ QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x3336, /* HEM devices */
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x3353, /* Khadas devices */
QUIRK_FLAG_DSD_RAW),
+ VENDOR_FLG(0x35f4, /* MSB Technology */
+ QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0x3842, /* EVGA */
QUIRK_FLAG_DSD_RAW),
VENDOR_FLG(0xc502, /* HiBy devices */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 045/600] staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (43 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 044/600] ALSA: usb-audio: Update for native DSD support quirks Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 046/600] security: keys: perform capable check only on privileged operations Greg Kroah-Hartman
` (565 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Raphael Gallais-Pou, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Raphael Gallais-Pou <rgallaispou@gmail.com>
[ Upstream commit 4912649e1cf0317bf563f91655e04a303cacaf8d ]
Using FBTFT_REGISTER_DRIVER resolves to a NULL struct spi_device_id. This
ultimately causes a warning when the module probes. Fixes it.
Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com>
Link: https://lore.kernel.org/r/20230718172024.67488-1-rgallaispou@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/staging/fbtft/fb_ili9341.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/fbtft/fb_ili9341.c b/drivers/staging/fbtft/fb_ili9341.c
index 9ccd0823c3ab3..47e72b87d76d9 100644
--- a/drivers/staging/fbtft/fb_ili9341.c
+++ b/drivers/staging/fbtft/fb_ili9341.c
@@ -145,7 +145,7 @@ static struct fbtft_display display = {
},
};
-FBTFT_REGISTER_DRIVER(DRVNAME, "ilitek,ili9341", &display);
+FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "ilitek", "ili9341", &display);
MODULE_ALIAS("spi:" DRVNAME);
MODULE_ALIAS("platform:" DRVNAME);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 046/600] security: keys: perform capable check only on privileged operations
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (44 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 045/600] staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 047/600] kprobes: Prohibit probing on CFI preamble symbol Greg Kroah-Hartman
` (564 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christian Göttsche,
Jarkko Sakkinen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christian Göttsche <cgzones@googlemail.com>
[ Upstream commit 2d7f105edbb3b2be5ffa4d833abbf9b6965e9ce7 ]
If the current task fails the check for the queried capability via
`capable(CAP_SYS_ADMIN)` LSMs like SELinux generate a denial message.
Issuing such denial messages unnecessarily can lead to a policy author
granting more privileges to a subject than needed to silence them.
Reorder CAP_SYS_ADMIN checks after the check whether the operation is
actually privileged.
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
security/keys/keyctl.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c
index d54f73c558f72..19be69fa4d052 100644
--- a/security/keys/keyctl.c
+++ b/security/keys/keyctl.c
@@ -980,14 +980,19 @@ long keyctl_chown_key(key_serial_t id, uid_t user, gid_t group)
ret = -EACCES;
down_write(&key->sem);
- if (!capable(CAP_SYS_ADMIN)) {
+ {
+ bool is_privileged_op = false;
+
/* only the sysadmin can chown a key to some other UID */
if (user != (uid_t) -1 && !uid_eq(key->uid, uid))
- goto error_put;
+ is_privileged_op = true;
/* only the sysadmin can set the key's GID to a group other
* than one of those that the current process subscribes to */
if (group != (gid_t) -1 && !gid_eq(gid, key->gid) && !in_group_p(gid))
+ is_privileged_op = true;
+
+ if (is_privileged_op && !capable(CAP_SYS_ADMIN))
goto error_put;
}
@@ -1088,7 +1093,7 @@ long keyctl_setperm_key(key_serial_t id, key_perm_t perm)
down_write(&key->sem);
/* if we're not the sysadmin, we can only change a key that we own */
- if (capable(CAP_SYS_ADMIN) || uid_eq(key->uid, current_fsuid())) {
+ if (uid_eq(key->uid, current_fsuid()) || capable(CAP_SYS_ADMIN)) {
key->perm = perm;
notify_key(key, NOTIFY_KEY_SETATTR, 0);
ret = 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 047/600] kprobes: Prohibit probing on CFI preamble symbol
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (45 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 046/600] security: keys: perform capable check only on privileged operations Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 048/600] clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM Greg Kroah-Hartman
` (563 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Masami Hiramatsu (Google),
Steven Rostedt (Google), Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Masami Hiramatsu (Google) <mhiramat@kernel.org>
[ Upstream commit de02f2ac5d8cfb311f44f2bf144cc20002f1fbbd ]
Do not allow to probe on "__cfi_" or "__pfx_" started symbol, because those
are used for CFI and not executed. Probing it will break the CFI.
Link: https://lore.kernel.org/all/168904024679.116016.18089228029322008512.stgit@devnote2/
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/kprobes.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 00e177de91ccd..3da9726232ff9 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -1545,6 +1545,17 @@ static int check_ftrace_location(struct kprobe *p)
return 0;
}
+static bool is_cfi_preamble_symbol(unsigned long addr)
+{
+ char symbuf[KSYM_NAME_LEN];
+
+ if (lookup_symbol_name(addr, symbuf))
+ return false;
+
+ return str_has_prefix("__cfi_", symbuf) ||
+ str_has_prefix("__pfx_", symbuf);
+}
+
static int check_kprobe_address_safe(struct kprobe *p,
struct module **probed_mod)
{
@@ -1563,7 +1574,8 @@ static int check_kprobe_address_safe(struct kprobe *p,
within_kprobe_blacklist((unsigned long) p->addr) ||
jump_label_text_reserved(p->addr, p->addr) ||
static_call_text_reserved(p->addr, p->addr) ||
- find_bug((unsigned long)p->addr)) {
+ find_bug((unsigned long)p->addr) ||
+ is_cfi_preamble_symbol((unsigned long)p->addr)) {
ret = -EINVAL;
goto out;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 048/600] clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (46 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 047/600] kprobes: Prohibit probing on CFI preamble symbol Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 049/600] vmbus_testing: fix wrong python syntax for integer value comparison Greg Kroah-Hartman
` (562 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Baoquan He,
Michael Turquette, Stephen Boyd, linux-clk, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baoquan He <bhe@redhat.com>
[ Upstream commit e7dd44f4f3166db45248414f5df8f615392de47a ]
On s390 systems (aka mainframes), it has classic channel devices for
networking and permanent storage that are currently even more common
than PCI devices. Hence it could have a fully functional s390 kernel
with CONFIG_PCI=n, then the relevant iomem mapping functions
[including ioremap(), devm_ioremap(), etc.] are not available.
Here let COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM so that it won't
be built to cause below compiling error if PCI is unset:
------
ld: drivers/clk/clk-fixed-mmio.o: in function `fixed_mmio_clk_setup':
clk-fixed-mmio.c:(.text+0x5e): undefined reference to `of_iomap'
ld: clk-fixed-mmio.c:(.text+0xba): undefined reference to `iounmap'
------
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202306211329.ticOJCSv-lkp@intel.com/
Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: linux-clk@vger.kernel.org
Link: https://lore.kernel.org/r/20230707135852.24292-8-bhe@redhat.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 5da82f2bdd211..a5dcc7293a836 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -427,6 +427,7 @@ config COMMON_CLK_BD718XX
config COMMON_CLK_FIXED_MMIO
bool "Clock driver for Memory Mapped Fixed values"
depends on COMMON_CLK && OF
+ depends on HAS_IOMEM
help
Support for Memory Mapped IO Fixed clocks
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 049/600] vmbus_testing: fix wrong python syntax for integer value comparison
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (47 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 048/600] clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 050/600] Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12" Greg Kroah-Hartman
` (561 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Ani Sinha, Wei Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ani Sinha <anisinha@redhat.com>
[ Upstream commit ed0cf84e9cc42e6310961c87709621f1825c2bb8 ]
It is incorrect in python to compare integer values using the "is" keyword.
The "is" keyword in python is used to compare references to two objects,
not their values. Newer version of python3 (version 3.8) throws a warning
when such incorrect comparison is made. For value comparison, "==" should
be used.
Fix this in the code and suppress the following warning:
/usr/sbin/vmbus_testing:167: SyntaxWarning: "is" with a literal. Did you mean "=="?
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Link: https://lore.kernel.org/r/20230705134408.6302-1-anisinha@redhat.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/hv/vmbus_testing | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tools/hv/vmbus_testing b/tools/hv/vmbus_testing
index e7212903dd1d9..4467979d8f699 100755
--- a/tools/hv/vmbus_testing
+++ b/tools/hv/vmbus_testing
@@ -164,7 +164,7 @@ def recursive_file_lookup(path, file_map):
def get_all_devices_test_status(file_map):
for device in file_map:
- if (get_test_state(locate_state(device, file_map)) is 1):
+ if (get_test_state(locate_state(device, file_map)) == 1):
print("Testing = ON for: {}"
.format(device.split("/")[5]))
else:
@@ -203,7 +203,7 @@ def write_test_files(path, value):
def set_test_state(state_path, state_value, quiet):
write_test_files(state_path, state_value)
- if (get_test_state(state_path) is 1):
+ if (get_test_state(state_path) == 1):
if (not quiet):
print("Testing = ON for device: {}"
.format(state_path.split("/")[5]))
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 050/600] Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (48 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 049/600] vmbus_testing: fix wrong python syntax for integer value comparison Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 051/600] net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries Greg Kroah-Hartman
` (560 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kalle Valo <kvalo@kernel.org>
[ Upstream commit a1ce186db7f0e449f35d12fb55ae0da2a1b400e2 ]
This reverts commit bd1d129daa3ede265a880e2c6a7f91eab0f4dc62.
The dangling-pointer warnings were disabled kernel-wide by commit 49beadbd47c2
("gcc-12: disable '-Wdangling-pointer' warning for now") for v5.19. So this
hack in ath6kl is not needed anymore.
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230724100823.2948804-1-kvalo@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath6kl/Makefile | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/Makefile b/drivers/net/wireless/ath/ath6kl/Makefile
index a75bfa9fd1cfd..dc2b3b46781e1 100644
--- a/drivers/net/wireless/ath/ath6kl/Makefile
+++ b/drivers/net/wireless/ath/ath6kl/Makefile
@@ -36,11 +36,6 @@ ath6kl_core-y += wmi.o
ath6kl_core-y += core.o
ath6kl_core-y += recovery.o
-# FIXME: temporarily silence -Wdangling-pointer on non W=1+ builds
-ifndef KBUILD_EXTRA_WARN
-CFLAGS_htc_mbox.o += $(call cc-disable-warning, dangling-pointer)
-endif
-
ath6kl_core-$(CONFIG_NL80211_TESTMODE) += testmode.o
ath6kl_core-$(CONFIG_ATH6KL_TRACING) += trace.o
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 051/600] net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (49 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 050/600] Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12" Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 052/600] net: annotate data-races around sk->sk_{rcv|snd}timeo Greg Kroah-Hartman
` (559 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukasz Majewski, Simon Horman,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lukasz Majewski <lukma@denx.de>
[ Upstream commit 8d7ae22ae9f8c8a4407f8e993df64440bdbd0cee ]
The commit (SHA1: 5c844d57aa7894154e49cf2fc648bfe2f1aefc1c) provided code
to apply "Module 6: Certain PHY registers must be written as pairs instead
of singly" errata for KSZ9477 as this chip for certain PHY registers
(0xN120 to 0xN13F, N=1,2,3,4,5) must be accesses as 32 bit words instead
of 16 or 8 bit access.
Otherwise, adjacent registers (no matter if reserved or not) are
overwritten with 0x0.
Without this patch some registers (e.g. 0x113c or 0x1134) required for 32
bit access are out of valid regmap ranges.
As a result, following error is observed and KSZ9477 is not properly
configured:
ksz-switch spi1.0: can't rmw 32bit reg 0x113c: -EIO
ksz-switch spi1.0: can't rmw 32bit reg 0x1134: -EIO
ksz-switch spi1.0 lan1 (uninitialized): failed to connect to PHY: -EIO
ksz-switch spi1.0 lan1 (uninitialized): error -5 setting up PHY for tree 0, switch 0, port 0
The solution is to modify regmap_reg_range to allow accesses with 4 bytes
boundaries.
Signed-off-by: Lukasz Majewski <lukma@denx.de>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/dsa/microchip/ksz_common.c | 35 +++++++++++---------------
1 file changed, 15 insertions(+), 20 deletions(-)
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 8c492d56d2c36..dc9eea3c8ab16 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -590,10 +590,9 @@ static const struct regmap_range ksz9477_valid_regs[] = {
regmap_reg_range(0x1030, 0x1030),
regmap_reg_range(0x1100, 0x1115),
regmap_reg_range(0x111a, 0x111f),
- regmap_reg_range(0x1122, 0x1127),
- regmap_reg_range(0x112a, 0x112b),
- regmap_reg_range(0x1136, 0x1139),
- regmap_reg_range(0x113e, 0x113f),
+ regmap_reg_range(0x1120, 0x112b),
+ regmap_reg_range(0x1134, 0x113b),
+ regmap_reg_range(0x113c, 0x113f),
regmap_reg_range(0x1400, 0x1401),
regmap_reg_range(0x1403, 0x1403),
regmap_reg_range(0x1410, 0x1417),
@@ -624,10 +623,9 @@ static const struct regmap_range ksz9477_valid_regs[] = {
regmap_reg_range(0x2030, 0x2030),
regmap_reg_range(0x2100, 0x2115),
regmap_reg_range(0x211a, 0x211f),
- regmap_reg_range(0x2122, 0x2127),
- regmap_reg_range(0x212a, 0x212b),
- regmap_reg_range(0x2136, 0x2139),
- regmap_reg_range(0x213e, 0x213f),
+ regmap_reg_range(0x2120, 0x212b),
+ regmap_reg_range(0x2134, 0x213b),
+ regmap_reg_range(0x213c, 0x213f),
regmap_reg_range(0x2400, 0x2401),
regmap_reg_range(0x2403, 0x2403),
regmap_reg_range(0x2410, 0x2417),
@@ -658,10 +656,9 @@ static const struct regmap_range ksz9477_valid_regs[] = {
regmap_reg_range(0x3030, 0x3030),
regmap_reg_range(0x3100, 0x3115),
regmap_reg_range(0x311a, 0x311f),
- regmap_reg_range(0x3122, 0x3127),
- regmap_reg_range(0x312a, 0x312b),
- regmap_reg_range(0x3136, 0x3139),
- regmap_reg_range(0x313e, 0x313f),
+ regmap_reg_range(0x3120, 0x312b),
+ regmap_reg_range(0x3134, 0x313b),
+ regmap_reg_range(0x313c, 0x313f),
regmap_reg_range(0x3400, 0x3401),
regmap_reg_range(0x3403, 0x3403),
regmap_reg_range(0x3410, 0x3417),
@@ -692,10 +689,9 @@ static const struct regmap_range ksz9477_valid_regs[] = {
regmap_reg_range(0x4030, 0x4030),
regmap_reg_range(0x4100, 0x4115),
regmap_reg_range(0x411a, 0x411f),
- regmap_reg_range(0x4122, 0x4127),
- regmap_reg_range(0x412a, 0x412b),
- regmap_reg_range(0x4136, 0x4139),
- regmap_reg_range(0x413e, 0x413f),
+ regmap_reg_range(0x4120, 0x412b),
+ regmap_reg_range(0x4134, 0x413b),
+ regmap_reg_range(0x413c, 0x413f),
regmap_reg_range(0x4400, 0x4401),
regmap_reg_range(0x4403, 0x4403),
regmap_reg_range(0x4410, 0x4417),
@@ -726,10 +722,9 @@ static const struct regmap_range ksz9477_valid_regs[] = {
regmap_reg_range(0x5030, 0x5030),
regmap_reg_range(0x5100, 0x5115),
regmap_reg_range(0x511a, 0x511f),
- regmap_reg_range(0x5122, 0x5127),
- regmap_reg_range(0x512a, 0x512b),
- regmap_reg_range(0x5136, 0x5139),
- regmap_reg_range(0x513e, 0x513f),
+ regmap_reg_range(0x5120, 0x512b),
+ regmap_reg_range(0x5134, 0x513b),
+ regmap_reg_range(0x513c, 0x513f),
regmap_reg_range(0x5400, 0x5401),
regmap_reg_range(0x5403, 0x5403),
regmap_reg_range(0x5410, 0x5417),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 052/600] net: annotate data-races around sk->sk_{rcv|snd}timeo
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (50 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 051/600] net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 053/600] net: usb: qmi_wwan: add Quectel EM05GV2 Greg Kroah-Hartman
` (558 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Eric Dumazet, David S. Miller,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit 285975dd674258ccb33e77a1803e8f2015e67105 ]
sk_getsockopt() runs without locks, we must add annotations
to sk->sk_rcvtimeo and sk->sk_sndtimeo.
In the future we might allow fetching these fields before
we lock the socket in TCP fast path.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/core/sock.c | 24 ++++++++++++++----------
net/sched/em_meta.c | 4 ++--
2 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/net/core/sock.c b/net/core/sock.c
index 509773919d302..8b91d9f911336 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -425,6 +425,7 @@ static int sock_set_timeout(long *timeo_p, sockptr_t optval, int optlen,
{
struct __kernel_sock_timeval tv;
int err = sock_copy_user_timeval(&tv, optval, optlen, old_timeval);
+ long val;
if (err)
return err;
@@ -435,7 +436,7 @@ static int sock_set_timeout(long *timeo_p, sockptr_t optval, int optlen,
if (tv.tv_sec < 0) {
static int warned __read_mostly;
- *timeo_p = 0;
+ WRITE_ONCE(*timeo_p, 0);
if (warned < 10 && net_ratelimit()) {
warned++;
pr_info("%s: `%s' (pid %d) tries to set negative timeout\n",
@@ -443,11 +444,12 @@ static int sock_set_timeout(long *timeo_p, sockptr_t optval, int optlen,
}
return 0;
}
- *timeo_p = MAX_SCHEDULE_TIMEOUT;
- if (tv.tv_sec == 0 && tv.tv_usec == 0)
- return 0;
- if (tv.tv_sec < (MAX_SCHEDULE_TIMEOUT / HZ - 1))
- *timeo_p = tv.tv_sec * HZ + DIV_ROUND_UP((unsigned long)tv.tv_usec, USEC_PER_SEC / HZ);
+ val = MAX_SCHEDULE_TIMEOUT;
+ if ((tv.tv_sec || tv.tv_usec) &&
+ (tv.tv_sec < (MAX_SCHEDULE_TIMEOUT / HZ - 1)))
+ val = tv.tv_sec * HZ + DIV_ROUND_UP((unsigned long)tv.tv_usec,
+ USEC_PER_SEC / HZ);
+ WRITE_ONCE(*timeo_p, val);
return 0;
}
@@ -809,9 +811,9 @@ void sock_set_sndtimeo(struct sock *sk, s64 secs)
{
lock_sock(sk);
if (secs && secs < MAX_SCHEDULE_TIMEOUT / HZ - 1)
- sk->sk_sndtimeo = secs * HZ;
+ WRITE_ONCE(sk->sk_sndtimeo, secs * HZ);
else
- sk->sk_sndtimeo = MAX_SCHEDULE_TIMEOUT;
+ WRITE_ONCE(sk->sk_sndtimeo, MAX_SCHEDULE_TIMEOUT);
release_sock(sk);
}
EXPORT_SYMBOL(sock_set_sndtimeo);
@@ -1708,12 +1710,14 @@ int sk_getsockopt(struct sock *sk, int level, int optname,
case SO_RCVTIMEO_OLD:
case SO_RCVTIMEO_NEW:
- lv = sock_get_timeout(sk->sk_rcvtimeo, &v, SO_RCVTIMEO_OLD == optname);
+ lv = sock_get_timeout(READ_ONCE(sk->sk_rcvtimeo), &v,
+ SO_RCVTIMEO_OLD == optname);
break;
case SO_SNDTIMEO_OLD:
case SO_SNDTIMEO_NEW:
- lv = sock_get_timeout(sk->sk_sndtimeo, &v, SO_SNDTIMEO_OLD == optname);
+ lv = sock_get_timeout(READ_ONCE(sk->sk_sndtimeo), &v,
+ SO_SNDTIMEO_OLD == optname);
break;
case SO_RCVLOWAT:
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index 49bae3d5006b0..b1f1b49d35edf 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -568,7 +568,7 @@ META_COLLECTOR(int_sk_rcvtimeo)
*err = -1;
return;
}
- dst->value = sk->sk_rcvtimeo / HZ;
+ dst->value = READ_ONCE(sk->sk_rcvtimeo) / HZ;
}
META_COLLECTOR(int_sk_sndtimeo)
@@ -579,7 +579,7 @@ META_COLLECTOR(int_sk_sndtimeo)
*err = -1;
return;
}
- dst->value = sk->sk_sndtimeo / HZ;
+ dst->value = READ_ONCE(sk->sk_sndtimeo) / HZ;
}
META_COLLECTOR(int_sk_sendmsg_off)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 053/600] net: usb: qmi_wwan: add Quectel EM05GV2
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (51 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 052/600] net: annotate data-races around sk->sk_{rcv|snd}timeo Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 054/600] wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() Greg Kroah-Hartman
` (557 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Martin Kohn, Jakub Kicinski,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martin Kohn <m.kohn@welotec.com>
[ Upstream commit d4480c9bb9258db9ddf2e632f6ef81e96b41089c ]
Add support for Quectel EM05GV2 (G=global) with vendor ID
0x2c7c and product ID 0x030e
Enabling DTR on this modem was necessary to ensure stable operation.
Patch for usb: serial: option: is also in progress.
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=030e Rev= 3.18
S: Manufacturer=Quectel
S: Product=Quectel EM05-G
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=85(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=87(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
Signed-off-by: Martin Kohn <m.kohn@welotec.com>
Link: https://lore.kernel.org/r/AM0PR04MB57648219DE893EE04FA6CC759701A@AM0PR04MB5764.eurprd04.prod.outlook.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/usb/qmi_wwan.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 68829a5a93d3e..4fb981b8732ef 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1422,6 +1422,7 @@ static const struct usb_device_id products[] = {
{QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */
{QMI_QUIRK_SET_DTR(0x2c7c, 0x0195, 4)}, /* Quectel EG95 */
{QMI_FIXED_INTF(0x2c7c, 0x0296, 4)}, /* Quectel BG96 */
+ {QMI_QUIRK_SET_DTR(0x2c7c, 0x030e, 4)}, /* Quectel EM05GV2 */
{QMI_QUIRK_SET_DTR(0x2cb7, 0x0104, 4)}, /* Fibocom NL678 series */
{QMI_FIXED_INTF(0x0489, 0xe0b4, 0)}, /* Foxconn T77W968 LTE */
{QMI_FIXED_INTF(0x0489, 0xe0b5, 0)}, /* Foxconn T77W968 LTE with eSIM support*/
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 054/600] wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (52 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 053/600] net: usb: qmi_wwan: add Quectel EM05GV2 Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 055/600] powerpc/powermac: Use early_* IO variants in via_calibrate_decr() Greg Kroah-Hartman
` (556 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kees Cook, Hans de Goede, Franky Lin,
Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 16e455a465fca91907af0108f3d013150386df30 ]
Using brcmfmac with 6.5-rc3 on a brcmfmac43241b4-sdio triggers
a backtrace caused by the following field-spanning warning:
memcpy: detected field-spanning write (size 120) of single field
"¶ms_le->channel_list[0]" at
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c:1072 (size 2)
The driver still works after this warning. The warning was introduced by the
new field-spanning write checks which were enabled recently.
Fix this by replacing the channel_list[1] declaration at the end of
the struct with a flexible array declaration.
Most users of struct brcmf_scan_params_le calculate the size to alloc
using the size of the non flex-array part of the struct + needed extra
space, so they do not care about sizeof(struct brcmf_scan_params_le).
brcmf_notify_escan_complete() however uses the struct on the stack,
expecting there to be room for at least 1 entry in the channel-list
to store the special -1 abort channel-id.
To make this work use an anonymous union with a padding member
added + the actual channel_list flexible array.
Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230729140500.27892-1-hdegoede@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
index f518e025d6e46..a8d88aedc4227 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil_types.h
@@ -383,7 +383,12 @@ struct brcmf_scan_params_le {
* fixed parameter portion is assumed, otherwise
* ssid in the fixed portion is ignored
*/
- __le16 channel_list[1]; /* list of chanspecs */
+ union {
+ __le16 padding; /* Reserve space for at least 1 entry for abort
+ * which uses an on stack brcmf_scan_params_le
+ */
+ DECLARE_FLEX_ARRAY(__le16, channel_list); /* chanspecs */
+ };
};
struct brcmf_scan_results {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 055/600] powerpc/powermac: Use early_* IO variants in via_calibrate_decr()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (53 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 054/600] wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 056/600] idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM Greg Kroah-Hartman
` (555 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Benjamin Gray, Christophe Leroy,
Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Gray <bgray@linux.ibm.com>
[ Upstream commit 86582e6189dd8f9f52c25d46c70fe5d111da6345 ]
On a powermac platform, via the call path:
start_kernel()
time_init()
ppc_md.calibrate_decr() (pmac_calibrate_decr)
via_calibrate_decr()
ioremap() and iounmap() are called. The unmap can enable interrupts
unexpectedly (cond_resched() in vunmap_pmd_range()), which causes a
warning later in the boot sequence in start_kernel().
Use the early_* variants of these IO functions to prevent this.
The issue is pre-existing, but is surfaced by commit 721255b9826b
("genirq: Use a maple tree for interrupt descriptor management").
Signed-off-by: Benjamin Gray <bgray@linux.ibm.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230706010816.72682-1-bgray@linux.ibm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/platforms/powermac/time.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/platforms/powermac/time.c b/arch/powerpc/platforms/powermac/time.c
index 4c5790aff1b54..8633891b7aa58 100644
--- a/arch/powerpc/platforms/powermac/time.c
+++ b/arch/powerpc/platforms/powermac/time.c
@@ -26,8 +26,8 @@
#include <linux/rtc.h>
#include <linux/of_address.h>
+#include <asm/early_ioremap.h>
#include <asm/sections.h>
-#include <asm/io.h>
#include <asm/machdep.h>
#include <asm/time.h>
#include <asm/nvram.h>
@@ -182,7 +182,7 @@ static int __init via_calibrate_decr(void)
return 0;
}
of_node_put(vias);
- via = ioremap(rsrc.start, resource_size(&rsrc));
+ via = early_ioremap(rsrc.start, resource_size(&rsrc));
if (via == NULL) {
printk(KERN_ERR "Failed to map VIA for timer calibration !\n");
return 0;
@@ -207,7 +207,7 @@ static int __init via_calibrate_decr(void)
ppc_tb_freq = (dstart - dend) * 100 / 6;
- iounmap(via);
+ early_iounmap((void *)via, resource_size(&rsrc));
return 1;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 056/600] idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (54 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 055/600] powerpc/powermac: Use early_* IO variants in via_calibrate_decr() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 057/600] platform/x86/amd/pmf: Fix unsigned comparison with less than zero Greg Kroah-Hartman
` (554 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Baoquan He,
Vinod Koul, dmaengine, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baoquan He <bhe@redhat.com>
[ Upstream commit b1e213a9e31c20206f111ec664afcf31cbfe0dbb ]
On s390 systems (aka mainframes), it has classic channel devices for
networking and permanent storage that are currently even more common
than PCI devices. Hence it could have a fully functional s390 kernel
with CONFIG_PCI=n, then the relevant iomem mapping functions
[including ioremap(), devm_ioremap(), etc.] are not available.
Here let FSL_EDMA and INTEL_IDMA64 depend on HAS_IOMEM so that it
won't be built to cause below compiling error if PCI is unset.
--------
ERROR: modpost: "devm_platform_ioremap_resource" [drivers/dma/fsl-edma.ko] undefined!
ERROR: modpost: "devm_platform_ioremap_resource" [drivers/dma/idma64.ko] undefined!
--------
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202306211329.ticOJCSv-lkp@intel.com/
Signed-off-by: Baoquan He <bhe@redhat.com>
Cc: Vinod Koul <vkoul@kernel.org>
Cc: dmaengine@vger.kernel.org
Link: https://lore.kernel.org/r/20230707135852.24292-2-bhe@redhat.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/dma/Kconfig | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index b64ae02c26f8c..81de833ccd041 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -210,6 +210,7 @@ config FSL_DMA
config FSL_EDMA
tristate "Freescale eDMA engine support"
depends on OF
+ depends on HAS_IOMEM
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
help
@@ -279,6 +280,7 @@ config IMX_SDMA
config INTEL_IDMA64
tristate "Intel integrated DMA 64-bit support"
+ depends on HAS_IOMEM
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
help
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 057/600] platform/x86/amd/pmf: Fix unsigned comparison with less than zero
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (55 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 056/600] idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 058/600] scsi: lpfc: Remove reftag check in DIF paths Greg Kroah-Hartman
` (553 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Abaci Robot, Yang Li, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yang Li <yang.lee@linux.alibaba.com>
[ Upstream commit 785c00993dc4c4bb2f7b0f3a3f29c03a6f7aab2e ]
The return value from the call to amd_pmf_get_pprof_modes() is int.
However, the return value is being assigned to an unsigned char
variable 'mode', so making 'mode' an int.
silence the warning:
./drivers/platform/x86/amd/pmf/sps.c:183:5-9: WARNING: Unsigned expression compared with zero: mode < 0
Reported-by: Abaci Robot <abaci@linux.alibaba.com>
Closes: https://bugzilla.openanolis.cn/show_bug.cgi?id=5995
Signed-off-by: Yang Li <yang.lee@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230727014315.51375-1-yang.lee@linux.alibaba.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/amd/pmf/sps.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/amd/pmf/sps.c b/drivers/platform/x86/amd/pmf/sps.c
index fd448844de206..b2cf62937227c 100644
--- a/drivers/platform/x86/amd/pmf/sps.c
+++ b/drivers/platform/x86/amd/pmf/sps.c
@@ -121,7 +121,8 @@ int amd_pmf_get_pprof_modes(struct amd_pmf_dev *pmf)
int amd_pmf_power_slider_update_event(struct amd_pmf_dev *dev)
{
- u8 mode, flag = 0;
+ u8 flag = 0;
+ int mode;
int src;
mode = amd_pmf_get_pprof_modes(dev);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 058/600] scsi: lpfc: Remove reftag check in DIF paths
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (56 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 057/600] platform/x86/amd/pmf: Fix unsigned comparison with less than zero Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 059/600] scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock Greg Kroah-Hartman
` (552 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Justin Tee, Martin K. Petersen,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Justin Tee <justin.tee@broadcom.com>
[ Upstream commit 8eebf0e84f0614cebc7347f7bbccba4056d77d42 ]
When preparing protection DIF I/O for DMA, the driver obtains reference
tags from scsi_prot_ref_tag(). Previously, there was a wrong assumption
that an all 0xffffffff value meant error and thus the driver failed the
I/O. This patch removes the evaluation code and accepts whatever the upper
layer returns.
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20230803211932.155745-1-justintee8345@gmail.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/lpfc/lpfc_scsi.c | 20 +++-----------------
1 file changed, 3 insertions(+), 17 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index 7a1563564df7f..7aac9fc719675 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -109,8 +109,6 @@ lpfc_sli4_set_rsp_sgl_last(struct lpfc_hba *phba,
}
}
-#define LPFC_INVALID_REFTAG ((u32)-1)
-
/**
* lpfc_rampdown_queue_depth - Post RAMP_DOWN_QUEUE event to worker thread
* @phba: The Hba for which this call is being executed.
@@ -978,8 +976,6 @@ lpfc_bg_err_inject(struct lpfc_hba *phba, struct scsi_cmnd *sc,
sgpe = scsi_prot_sglist(sc);
lba = scsi_prot_ref_tag(sc);
- if (lba == LPFC_INVALID_REFTAG)
- return 0;
/* First check if we need to match the LBA */
if (phba->lpfc_injerr_lba != LPFC_INJERR_LBA_OFF) {
@@ -1560,8 +1556,6 @@ lpfc_bg_setup_bpl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
/* extract some info from the scsi command for pde*/
reftag = scsi_prot_ref_tag(sc);
- if (reftag == LPFC_INVALID_REFTAG)
- goto out;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1);
@@ -1723,8 +1717,6 @@ lpfc_bg_setup_bpl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
/* extract some info from the scsi command */
blksize = scsi_prot_interval(sc);
reftag = scsi_prot_ref_tag(sc);
- if (reftag == LPFC_INVALID_REFTAG)
- goto out;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1);
@@ -1954,8 +1946,6 @@ lpfc_bg_setup_sgl(struct lpfc_hba *phba, struct scsi_cmnd *sc,
/* extract some info from the scsi command for pde*/
reftag = scsi_prot_ref_tag(sc);
- if (reftag == LPFC_INVALID_REFTAG)
- goto out;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1);
@@ -2155,8 +2145,6 @@ lpfc_bg_setup_sgl_prot(struct lpfc_hba *phba, struct scsi_cmnd *sc,
/* extract some info from the scsi command */
blksize = scsi_prot_interval(sc);
reftag = scsi_prot_ref_tag(sc);
- if (reftag == LPFC_INVALID_REFTAG)
- goto out;
#ifdef CONFIG_SCSI_LPFC_DEBUG_FS
rc = lpfc_bg_err_inject(phba, sc, &reftag, NULL, 1);
@@ -2748,8 +2736,6 @@ lpfc_calc_bg_err(struct lpfc_hba *phba, struct lpfc_io_buf *lpfc_cmd)
src = (struct scsi_dif_tuple *)sg_virt(sgpe);
start_ref_tag = scsi_prot_ref_tag(cmd);
- if (start_ref_tag == LPFC_INVALID_REFTAG)
- goto out;
start_app_tag = src->app_tag;
len = sgpe->length;
while (src && protsegcnt) {
@@ -3495,11 +3481,11 @@ lpfc_bg_scsi_prep_dma_buf_s4(struct lpfc_hba *phba,
scsi_cmnd->sc_data_direction);
lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
- "9084 Cannot setup S/G List for HBA"
- "IO segs %d/%d SGL %d SCSI %d: %d %d\n",
+ "9084 Cannot setup S/G List for HBA "
+ "IO segs %d/%d SGL %d SCSI %d: %d %d %d\n",
lpfc_cmd->seg_cnt, lpfc_cmd->prot_seg_cnt,
phba->cfg_total_seg_cnt, phba->cfg_sg_seg_cnt,
- prot_group_type, num_sge);
+ prot_group_type, num_sge, ret);
lpfc_cmd->seg_cnt = 0;
lpfc_cmd->prot_seg_cnt = 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 059/600] scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (57 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 058/600] scsi: lpfc: Remove reftag check in DIF paths Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 060/600] net: hns3: restore user pause configure when disable autoneg Greg Kroah-Hartman
` (551 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chengfeng Ye, Manish Rangankar,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chengfeng Ye <dg573847474@gmail.com>
[ Upstream commit dd64f80587190265ca8a0f4be6c64c2fda6d3ac2 ]
As &qedi_percpu->p_work_lock is acquired by hard IRQ qedi_msix_handler(),
other acquisitions of the same lock under process context should disable
IRQ, otherwise deadlock could happen if the IRQ preempts the execution
while the lock is held in process context on the same CPU.
qedi_cpu_offline() is one such function which acquires the lock in process
context.
[Deadlock Scenario]
qedi_cpu_offline()
->spin_lock(&p->p_work_lock)
<irq>
->qedi_msix_handler()
->edi_process_completions()
->spin_lock_irqsave(&p->p_work_lock, flags); (deadlock here)
This flaw was found by an experimental static analysis tool I am developing
for IRQ-related deadlocks.
The tentative patch fix the potential deadlock by spin_lock_irqsave()
under process context.
Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
Link: https://lore.kernel.org/r/20230726125655.4197-1-dg573847474@gmail.com
Acked-by: Manish Rangankar <mrangankar@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/qedi/qedi_main.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/qedi/qedi_main.c b/drivers/scsi/qedi/qedi_main.c
index 9fd68d362698f..2ee109fb65616 100644
--- a/drivers/scsi/qedi/qedi_main.c
+++ b/drivers/scsi/qedi/qedi_main.c
@@ -1977,8 +1977,9 @@ static int qedi_cpu_offline(unsigned int cpu)
struct qedi_percpu_s *p = this_cpu_ptr(&qedi_percpu);
struct qedi_work *work, *tmp;
struct task_struct *thread;
+ unsigned long flags;
- spin_lock_bh(&p->p_work_lock);
+ spin_lock_irqsave(&p->p_work_lock, flags);
thread = p->iothread;
p->iothread = NULL;
@@ -1989,7 +1990,7 @@ static int qedi_cpu_offline(unsigned int cpu)
kfree(work);
}
- spin_unlock_bh(&p->p_work_lock);
+ spin_unlock_irqrestore(&p->p_work_lock, flags);
if (thread)
kthread_stop(thread);
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 060/600] net: hns3: restore user pause configure when disable autoneg
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (58 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 059/600] scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 061/600] drm/amdgpu: Match against exact bootloader status Greg Kroah-Hartman
` (550 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jian Shen, Peiyang Wang, Jijie Shao,
Leon Romanovsky, Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jian Shen <shenjian15@huawei.com>
[ Upstream commit 15159ec0c831b565820c2de05114ea1b4cf07681 ]
Restore the mac pause state to user configuration when autoneg is disabled
Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
Link: https://lore.kernel.org/r/20230807113452.474224-2-shaojijie@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 5 ++++-
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c | 2 +-
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h | 1 +
3 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
index 6af2273f227c2..84ecd8b9be48c 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
@@ -10936,9 +10936,12 @@ int hclge_cfg_flowctrl(struct hclge_dev *hdev)
u32 rx_pause, tx_pause;
u8 flowctl;
- if (!phydev->link || !phydev->autoneg)
+ if (!phydev->link)
return 0;
+ if (!phydev->autoneg)
+ return hclge_mac_pause_setup_hw(hdev);
+
local_advertising = linkmode_adv_to_lcl_adv_t(phydev->advertising);
if (phydev->pause)
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
index 150f146fa24fb..8b40c6b4ee53e 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
@@ -1549,7 +1549,7 @@ static int hclge_bp_setup_hw(struct hclge_dev *hdev, u8 tc)
return 0;
}
-static int hclge_mac_pause_setup_hw(struct hclge_dev *hdev)
+int hclge_mac_pause_setup_hw(struct hclge_dev *hdev)
{
bool tx_en, rx_en;
diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
index dd6f1fd486cf2..251e808456208 100644
--- a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
+++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h
@@ -242,6 +242,7 @@ int hclge_pfc_pause_en_cfg(struct hclge_dev *hdev, u8 tx_rx_bitmap,
u8 pfc_bitmap);
int hclge_mac_pause_en_cfg(struct hclge_dev *hdev, bool tx, bool rx);
int hclge_pause_addr_cfg(struct hclge_dev *hdev, const u8 *mac_addr);
+int hclge_mac_pause_setup_hw(struct hclge_dev *hdev);
void hclge_pfc_rx_stats_get(struct hclge_dev *hdev, u64 *stats);
void hclge_pfc_tx_stats_get(struct hclge_dev *hdev, u64 *stats);
int hclge_tm_qs_shaper_cfg(struct hclge_vport *vport, int max_tx_rate);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 061/600] drm/amdgpu: Match against exact bootloader status
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (59 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 060/600] net: hns3: restore user pause configure when disable autoneg Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 062/600] wifi: cfg80211: remove links only on AP Greg Kroah-Hartman
` (549 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Lijo Lazar, Alex Deucher,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lijo Lazar <lijo.lazar@amd.com>
[ Upstream commit d3de41ee5febe5c2d9989fe9810bce2bb54a3a8e ]
On PSP v13.x ASICs, boot loader will set only the MSB to 1 and clear the
least significant bits for any command submission. Hence match against
the exact register value, otherwise a register value of all 0xFFs also
could falsely indicate that boot loader is ready. Also, from PSP v13.0.6
and newer, bits[7:0] will be used to indicate command error status.
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/psp_v13_0.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
index 8c5fa4b7b68a2..c7cb30efe43de 100644
--- a/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/psp_v13_0.c
@@ -147,14 +147,15 @@ static int psp_v13_0_wait_for_bootloader(struct psp_context *psp)
int ret;
int retry_loop;
+ /* Wait for bootloader to signify that it is ready having bit 31 of
+ * C2PMSG_35 set to 1. All other bits are expected to be cleared.
+ * If there is an error in processing command, bits[7:0] will be set.
+ * This is applicable for PSP v13.0.6 and newer.
+ */
for (retry_loop = 0; retry_loop < 10; retry_loop++) {
- /* Wait for bootloader to signify that is
- ready having bit 31 of C2PMSG_35 set to 1 */
- ret = psp_wait_for(psp,
- SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),
- 0x80000000,
- 0x80000000,
- false);
+ ret = psp_wait_for(
+ psp, SOC15_REG_OFFSET(MP0, 0, regMP0_SMN_C2PMSG_35),
+ 0x80000000, 0xffffffff, false);
if (ret == 0)
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 062/600] wifi: cfg80211: remove links only on AP
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (60 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 061/600] drm/amdgpu: Match against exact bootloader status Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 063/600] wifi: mac80211: Use active_links instead of valid_links in Tx Greg Kroah-Hartman
` (548 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Johannes Berg, Gregory Greenman,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johannes Berg <johannes.berg@intel.com>
[ Upstream commit 34d4e3eb67fed9c19719bedb748e5a8b6ccc97a5 ]
Since links are only controlled by userspace via cfg80211
in AP mode, also only remove them from the driver in that
case.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230608163202.ed65b94916fa.I2458c46888284cc5ce30715fe642bc5fc4340c8f@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/wireless/util.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 39680e7bad45a..f433f3fdd9e94 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -5,7 +5,7 @@
* Copyright 2007-2009 Johannes Berg <johannes@sipsolutions.net>
* Copyright 2013-2014 Intel Mobile Communications GmbH
* Copyright 2017 Intel Deutschland GmbH
- * Copyright (C) 2018-2022 Intel Corporation
+ * Copyright (C) 2018-2023 Intel Corporation
*/
#include <linux/export.h>
#include <linux/bitops.h>
@@ -2479,6 +2479,13 @@ void cfg80211_remove_links(struct wireless_dev *wdev)
{
unsigned int link_id;
+ /*
+ * links are controlled by upper layers (userspace/cfg)
+ * only for AP mode, so only remove them here for AP
+ */
+ if (wdev->iftype != NL80211_IFTYPE_AP)
+ return;
+
wdev_lock(wdev);
if (wdev->valid_links) {
for_each_valid_link(wdev, link_id)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 063/600] wifi: mac80211: Use active_links instead of valid_links in Tx
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (61 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 062/600] wifi: cfg80211: remove links only on AP Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 064/600] netlabel: fix shift wrapping bug in netlbl_catmap_setlong() Greg Kroah-Hartman
` (547 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ilan Peer, Gregory Greenman,
Johannes Berg, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilan Peer <ilan.peer@intel.com>
[ Upstream commit 7b3b9ac899b54f53f7c9fc07e1c562f56b2187fa ]
Fix few places on the Tx path where the valid_links were used instead
of active links.
Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230608163202.e24832691fc8.I9ac10dc246d7798a8d26b1a94933df5668df63fc@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/mac80211/tx.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 763cefd0cc268..2f9e1abdf375d 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -4391,7 +4391,7 @@ static void ieee80211_mlo_multicast_tx(struct net_device *dev,
struct sk_buff *skb)
{
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
- unsigned long links = sdata->vif.valid_links;
+ unsigned long links = sdata->vif.active_links;
unsigned int link;
u32 ctrl_flags = IEEE80211_TX_CTRL_MCAST_MLO_FIRST_TX;
@@ -5827,7 +5827,7 @@ void __ieee80211_tx_skb_tid_band(struct ieee80211_sub_if_data *sdata,
rcu_read_unlock();
if (WARN_ON_ONCE(link == ARRAY_SIZE(sdata->vif.link_conf)))
- link = ffs(sdata->vif.valid_links) - 1;
+ link = ffs(sdata->vif.active_links) - 1;
}
IEEE80211_SKB_CB(skb)->control.flags |=
@@ -5863,7 +5863,7 @@ void ieee80211_tx_skb_tid(struct ieee80211_sub_if_data *sdata,
band = chanctx_conf->def.chan->band;
} else {
WARN_ON(link_id >= 0 &&
- !(sdata->vif.valid_links & BIT(link_id)));
+ !(sdata->vif.active_links & BIT(link_id)));
/* MLD transmissions must not rely on the band */
band = 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 064/600] netlabel: fix shift wrapping bug in netlbl_catmap_setlong()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (62 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 063/600] wifi: mac80211: Use active_links instead of valid_links in Tx Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 065/600] bnx2x: fix page fault following EEH recovery Greg Kroah-Hartman
` (546 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dmitry Mastykin, Paul Moore,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Mastykin <dmastykin@astralinux.ru>
[ Upstream commit b403643d154d15176b060b82f7fc605210033edd ]
There is a shift wrapping bug in this code on 32-bit architectures.
NETLBL_CATMAP_MAPTYPE is u64, bitmap is unsigned long.
Every second 32-bit word of catmap becomes corrupted.
Signed-off-by: Dmitry Mastykin <dmastykin@astralinux.ru>
Acked-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/netlabel/netlabel_kapi.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/net/netlabel/netlabel_kapi.c b/net/netlabel/netlabel_kapi.c
index 54c0830039470..27511c90a26f4 100644
--- a/net/netlabel/netlabel_kapi.c
+++ b/net/netlabel/netlabel_kapi.c
@@ -857,7 +857,8 @@ int netlbl_catmap_setlong(struct netlbl_lsm_catmap **catmap,
offset -= iter->startbit;
idx = offset / NETLBL_CATMAP_MAPSIZE;
- iter->bitmap[idx] |= bitmap << (offset % NETLBL_CATMAP_MAPSIZE);
+ iter->bitmap[idx] |= (NETLBL_CATMAP_MAPTYPE)bitmap
+ << (offset % NETLBL_CATMAP_MAPSIZE);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 065/600] bnx2x: fix page fault following EEH recovery
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (63 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 064/600] netlabel: fix shift wrapping bug in netlbl_catmap_setlong() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 066/600] cifs: fix sockaddr comparison in iface_cmp Greg Kroah-Hartman
` (545 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Christensen, Sridhar Samudrala,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Christensen <drc@linux.vnet.ibm.com>
[ Upstream commit 7ebe4eda4265642859507d1b3ca330d8c196cfe5 ]
In the last step of the EEH recovery process, the EEH driver calls into
bnx2x_io_resume() to re-initialize the NIC hardware via the function
bnx2x_nic_load(). If an error occurs during bnx2x_nic_load(), OS and
hardware resources are released and an error code is returned to the
caller. When called from bnx2x_io_resume(), the return code is ignored
and the network interface is brought up unconditionally. Later attempts
to send a packet via this interface result in a page fault due to a null
pointer reference.
This patch checks the return code of bnx2x_nic_load(), prints an error
message if necessary, and does not enable the interface.
Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
index 51b1690fd0459..a1783faf4fe99 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
@@ -14312,11 +14312,16 @@ static void bnx2x_io_resume(struct pci_dev *pdev)
bp->fw_seq = SHMEM_RD(bp, func_mb[BP_FW_MB_IDX(bp)].drv_mb_header) &
DRV_MSG_SEQ_NUMBER_MASK;
- if (netif_running(dev))
- bnx2x_nic_load(bp, LOAD_NORMAL);
+ if (netif_running(dev)) {
+ if (bnx2x_nic_load(bp, LOAD_NORMAL)) {
+ netdev_err(bp->dev, "Error during driver initialization, try unloading/reloading the driver\n");
+ goto done;
+ }
+ }
netif_device_attach(dev);
+done:
rtnl_unlock();
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 066/600] cifs: fix sockaddr comparison in iface_cmp
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (64 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 065/600] bnx2x: fix page fault following EEH recovery Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 067/600] cifs: fix max_credits implementation Greg Kroah-Hartman
` (544 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shyam Prasad N, kernel test robot,
Dan Carpenter, Steve French, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shyam Prasad N <sprasad@microsoft.com>
[ Upstream commit 2991b77409891e14a10b96899755c004b0c07edb ]
iface_cmp used to simply do a memcmp of the two
provided struct sockaddrs. The comparison needs to do more
based on the address family. Similar logic was already
present in cifs_match_ipaddr. Doing something similar now.
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/client/cifsglob.h | 37 -----------------------------
fs/smb/client/cifsproto.h | 1 +
fs/smb/client/connect.c | 50 +++++++++++++++++++++++++++++++++++++++
fs/smb/client/smb2ops.c | 37 +++++++++++++++++++++++++++++
4 files changed, 88 insertions(+), 37 deletions(-)
diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h
index a37afbb7e399f..4a092cc5a3936 100644
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -970,43 +970,6 @@ release_iface(struct kref *ref)
kfree(iface);
}
-/*
- * compare two interfaces a and b
- * return 0 if everything matches.
- * return 1 if a has higher link speed, or rdma capable, or rss capable
- * return -1 otherwise.
- */
-static inline int
-iface_cmp(struct cifs_server_iface *a, struct cifs_server_iface *b)
-{
- int cmp_ret = 0;
-
- WARN_ON(!a || !b);
- if (a->speed == b->speed) {
- if (a->rdma_capable == b->rdma_capable) {
- if (a->rss_capable == b->rss_capable) {
- cmp_ret = memcmp(&a->sockaddr, &b->sockaddr,
- sizeof(a->sockaddr));
- if (!cmp_ret)
- return 0;
- else if (cmp_ret > 0)
- return 1;
- else
- return -1;
- } else if (a->rss_capable > b->rss_capable)
- return 1;
- else
- return -1;
- } else if (a->rdma_capable > b->rdma_capable)
- return 1;
- else
- return -1;
- } else if (a->speed > b->speed)
- return 1;
- else
- return -1;
-}
-
struct cifs_chan {
unsigned int in_reconnect : 1; /* if session setup in progress for this channel */
struct TCP_Server_Info *server;
diff --git a/fs/smb/client/cifsproto.h b/fs/smb/client/cifsproto.h
index 98513f5af3f96..a914b88ca51a1 100644
--- a/fs/smb/client/cifsproto.h
+++ b/fs/smb/client/cifsproto.h
@@ -85,6 +85,7 @@ extern int cifs_handle_standard(struct TCP_Server_Info *server,
struct mid_q_entry *mid);
extern int smb3_parse_devname(const char *devname, struct smb3_fs_context *ctx);
extern int smb3_parse_opt(const char *options, const char *key, char **val);
+extern int cifs_ipaddr_cmp(struct sockaddr *srcaddr, struct sockaddr *rhs);
extern bool cifs_match_ipaddr(struct sockaddr *srcaddr, struct sockaddr *rhs);
extern int cifs_discard_remaining_data(struct TCP_Server_Info *server);
extern int cifs_call_async(struct TCP_Server_Info *server,
diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index cbe08948baf4a..9cd282960c0bb 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -1343,6 +1343,56 @@ cifs_demultiplex_thread(void *p)
module_put_and_kthread_exit(0);
}
+int
+cifs_ipaddr_cmp(struct sockaddr *srcaddr, struct sockaddr *rhs)
+{
+ struct sockaddr_in *saddr4 = (struct sockaddr_in *)srcaddr;
+ struct sockaddr_in *vaddr4 = (struct sockaddr_in *)rhs;
+ struct sockaddr_in6 *saddr6 = (struct sockaddr_in6 *)srcaddr;
+ struct sockaddr_in6 *vaddr6 = (struct sockaddr_in6 *)rhs;
+
+ switch (srcaddr->sa_family) {
+ case AF_UNSPEC:
+ switch (rhs->sa_family) {
+ case AF_UNSPEC:
+ return 0;
+ case AF_INET:
+ case AF_INET6:
+ return 1;
+ default:
+ return -1;
+ }
+ case AF_INET: {
+ switch (rhs->sa_family) {
+ case AF_UNSPEC:
+ return -1;
+ case AF_INET:
+ return memcmp(saddr4, vaddr4,
+ sizeof(struct sockaddr_in));
+ case AF_INET6:
+ return 1;
+ default:
+ return -1;
+ }
+ }
+ case AF_INET6: {
+ switch (rhs->sa_family) {
+ case AF_UNSPEC:
+ case AF_INET:
+ return -1;
+ case AF_INET6:
+ return memcmp(saddr6,
+ vaddr6,
+ sizeof(struct sockaddr_in6));
+ default:
+ return -1;
+ }
+ }
+ default:
+ return -1; /* don't expect to be here */
+ }
+}
+
/*
* Returns true if srcaddr isn't specified and rhs isn't specified, or
* if srcaddr is specified and matches the IP address of the rhs argument
diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index e6a191a7499e8..bcd4c3a507601 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -511,6 +511,43 @@ smb3_negotiate_rsize(struct cifs_tcon *tcon, struct smb3_fs_context *ctx)
return rsize;
}
+/*
+ * compare two interfaces a and b
+ * return 0 if everything matches.
+ * return 1 if a is rdma capable, or rss capable, or has higher link speed
+ * return -1 otherwise.
+ */
+static int
+iface_cmp(struct cifs_server_iface *a, struct cifs_server_iface *b)
+{
+ int cmp_ret = 0;
+
+ WARN_ON(!a || !b);
+ if (a->rdma_capable == b->rdma_capable) {
+ if (a->rss_capable == b->rss_capable) {
+ if (a->speed == b->speed) {
+ cmp_ret = cifs_ipaddr_cmp((struct sockaddr *) &a->sockaddr,
+ (struct sockaddr *) &b->sockaddr);
+ if (!cmp_ret)
+ return 0;
+ else if (cmp_ret > 0)
+ return 1;
+ else
+ return -1;
+ } else if (a->speed > b->speed)
+ return 1;
+ else
+ return -1;
+ } else if (a->rss_capable > b->rss_capable)
+ return 1;
+ else
+ return -1;
+ } else if (a->rdma_capable > b->rdma_capable)
+ return 1;
+ else
+ return -1;
+}
+
static int
parse_server_interfaces(struct network_interface_info_ioctl_rsp *buf,
size_t buf_len, struct cifs_ses *ses, bool in_mount)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 067/600] cifs: fix max_credits implementation
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (65 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 066/600] cifs: fix sockaddr comparison in iface_cmp Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 068/600] sctp: handle invalid error codes without calling BUG() Greg Kroah-Hartman
` (543 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shyam Prasad N, Steve French,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shyam Prasad N <sprasad@microsoft.com>
[ Upstream commit 5e90aa21eb1372736e08cee0c0bf47735c5c4b95 ]
The current implementation of max_credits on the client does
not work because the CreditRequest logic for several commands
does not take max_credits into account.
Still, we can end up asking the server for more credits, depending
on the number of credits in flight. For this, we need to
limit the credits while parsing the responses too.
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/smb/client/smb2ops.c | 2 ++
fs/smb/client/smb2pdu.c | 32 ++++++++++++++++++++++++++++----
2 files changed, 30 insertions(+), 4 deletions(-)
diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
index bcd4c3a507601..6b020d80bb949 100644
--- a/fs/smb/client/smb2ops.c
+++ b/fs/smb/client/smb2ops.c
@@ -34,6 +34,8 @@ static int
change_conf(struct TCP_Server_Info *server)
{
server->credits += server->echo_credits + server->oplock_credits;
+ if (server->credits > server->max_credits)
+ server->credits = server->max_credits;
server->oplock_credits = server->echo_credits = 0;
switch (server->credits) {
case 0:
diff --git a/fs/smb/client/smb2pdu.c b/fs/smb/client/smb2pdu.c
index ba46156e32680..ae17d78f6ba17 100644
--- a/fs/smb/client/smb2pdu.c
+++ b/fs/smb/client/smb2pdu.c
@@ -1312,7 +1312,12 @@ SMB2_sess_alloc_buffer(struct SMB2_sess_data *sess_data)
}
/* enough to enable echos and oplocks and one max size write */
- req->hdr.CreditRequest = cpu_to_le16(130);
+ if (server->credits >= server->max_credits)
+ req->hdr.CreditRequest = cpu_to_le16(0);
+ else
+ req->hdr.CreditRequest = cpu_to_le16(
+ min_t(int, server->max_credits -
+ server->credits, 130));
/* only one of SMB2 signing flags may be set in SMB2 request */
if (server->sign)
@@ -1907,7 +1912,12 @@ SMB2_tcon(const unsigned int xid, struct cifs_ses *ses, const char *tree,
rqst.rq_nvec = 2;
/* Need 64 for max size write so ask for more in case not there yet */
- req->hdr.CreditRequest = cpu_to_le16(64);
+ if (server->credits >= server->max_credits)
+ req->hdr.CreditRequest = cpu_to_le16(0);
+ else
+ req->hdr.CreditRequest = cpu_to_le16(
+ min_t(int, server->max_credits -
+ server->credits, 64));
rc = cifs_send_recv(xid, ses, server,
&rqst, &resp_buftype, flags, &rsp_iov);
@@ -4291,6 +4301,7 @@ smb2_async_readv(struct cifs_readdata *rdata)
struct TCP_Server_Info *server;
struct cifs_tcon *tcon = tlink_tcon(rdata->cfile->tlink);
unsigned int total_len;
+ int credit_request;
cifs_dbg(FYI, "%s: offset=%llu bytes=%u\n",
__func__, rdata->offset, rdata->bytes);
@@ -4322,7 +4333,13 @@ smb2_async_readv(struct cifs_readdata *rdata)
if (rdata->credits.value > 0) {
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(rdata->bytes,
SMB2_MAX_BUFFER_SIZE));
- shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
+ credit_request = le16_to_cpu(shdr->CreditCharge) + 8;
+ if (server->credits >= server->max_credits)
+ shdr->CreditRequest = cpu_to_le16(0);
+ else
+ shdr->CreditRequest = cpu_to_le16(
+ min_t(int, server->max_credits -
+ server->credits, credit_request));
rc = adjust_credits(server, &rdata->credits, rdata->bytes);
if (rc)
@@ -4532,6 +4549,7 @@ smb2_async_writev(struct cifs_writedata *wdata,
unsigned int total_len;
struct cifs_io_parms _io_parms;
struct cifs_io_parms *io_parms = NULL;
+ int credit_request;
if (!wdata->server)
server = wdata->server = cifs_pick_channel(tcon->ses);
@@ -4649,7 +4667,13 @@ smb2_async_writev(struct cifs_writedata *wdata,
if (wdata->credits.value > 0) {
shdr->CreditCharge = cpu_to_le16(DIV_ROUND_UP(wdata->bytes,
SMB2_MAX_BUFFER_SIZE));
- shdr->CreditRequest = cpu_to_le16(le16_to_cpu(shdr->CreditCharge) + 8);
+ credit_request = le16_to_cpu(shdr->CreditCharge) + 8;
+ if (server->credits >= server->max_credits)
+ shdr->CreditRequest = cpu_to_le16(0);
+ else
+ shdr->CreditRequest = cpu_to_le16(
+ min_t(int, server->max_credits -
+ server->credits, credit_request));
rc = adjust_credits(server, &wdata->credits, io_parms->length);
if (rc)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 068/600] sctp: handle invalid error codes without calling BUG()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (66 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 067/600] cifs: fix max_credits implementation Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 069/600] scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity Greg Kroah-Hartman
` (542 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, David S. Miller,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit a0067dfcd9418fd3b0632bc59210d120d038a9c6 ]
The sctp_sf_eat_auth() function is supposed to return enum sctp_disposition
values but if the call to sctp_ulpevent_make_authkey() fails, it returns
-ENOMEM.
This results in calling BUG() inside the sctp_side_effects() function.
Calling BUG() is an over reaction and not helpful. Call WARN_ON_ONCE()
instead.
This code predates git.
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/sctp/sm_sideeffect.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 463c4a58d2c36..970c6a486a9b0 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -1251,7 +1251,10 @@ static int sctp_side_effects(enum sctp_event_type event_type,
default:
pr_err("impossible disposition %d in state %d, event_type %d, event_id %d\n",
status, state, event_type, subtype.chunk);
- BUG();
+ error = status;
+ if (error >= 0)
+ error = -EINVAL;
+ WARN_ON_ONCE(1);
break;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 069/600] scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (67 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 068/600] sctp: handle invalid error codes without calling BUG() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 070/600] scsi: storvsc: Always set no_report_opcodes Greg Kroah-Hartman
` (541 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gilbert Wu, Sagar Biradar,
John Garry, Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sagar Biradar <sagar.biradar@microchip.com>
[ Upstream commit 9dc704dcc09eae7d21b5da0615eb2ed79278f63e ]
Fix the I/O hang that arises because of the MSIx vector not having a mapped
online CPU upon receiving completion.
SCSI cmds take the blk_mq route, which is setup during init. Reserved cmds
fetch the vector_no from mq_map after init is complete. Before init, they
have to use 0 - as per the norm.
Reviewed-by: Gilbert Wu <gilbert.wu@microchip.com>
Signed-off-by: Sagar Biradar <Sagar.Biradar@microchip.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20230519230834.27436-1-sagar.biradar@microchip.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/aacraid/aacraid.h | 1 +
drivers/scsi/aacraid/commsup.c | 6 +++++-
drivers/scsi/aacraid/linit.c | 14 ++++++++++++++
drivers/scsi/aacraid/src.c | 25 +++++++++++++++++++++++--
4 files changed, 43 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 5e115e8b2ba46..7c6efde75da66 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -1678,6 +1678,7 @@ struct aac_dev
u32 handle_pci_error;
bool init_reset;
u8 soft_reset_support;
+ u8 use_map_queue;
};
#define aac_adapter_interrupt(dev) \
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index deb32c9f4b3e6..3f062e4013ab6 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -223,8 +223,12 @@ int aac_fib_setup(struct aac_dev * dev)
struct fib *aac_fib_alloc_tag(struct aac_dev *dev, struct scsi_cmnd *scmd)
{
struct fib *fibptr;
+ u32 blk_tag;
+ int i;
- fibptr = &dev->fibs[scsi_cmd_to_rq(scmd)->tag];
+ blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
+ i = blk_mq_unique_tag_to_tag(blk_tag);
+ fibptr = &dev->fibs[i];
/*
* Null out fields that depend on being zero at the start of
* each I/O
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 5ba5c18b77b46..bff49b8ab057d 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -19,6 +19,7 @@
#include <linux/compat.h>
#include <linux/blkdev.h>
+#include <linux/blk-mq-pci.h>
#include <linux/completion.h>
#include <linux/init.h>
#include <linux/interrupt.h>
@@ -505,6 +506,15 @@ static int aac_slave_configure(struct scsi_device *sdev)
return 0;
}
+static void aac_map_queues(struct Scsi_Host *shost)
+{
+ struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
+
+ blk_mq_pci_map_queues(&shost->tag_set.map[HCTX_TYPE_DEFAULT],
+ aac->pdev, 0);
+ aac->use_map_queue = true;
+}
+
/**
* aac_change_queue_depth - alter queue depths
* @sdev: SCSI device we are considering
@@ -1489,6 +1499,7 @@ static struct scsi_host_template aac_driver_template = {
.bios_param = aac_biosparm,
.shost_groups = aac_host_groups,
.slave_configure = aac_slave_configure,
+ .map_queues = aac_map_queues,
.change_queue_depth = aac_change_queue_depth,
.sdev_groups = aac_dev_groups,
.eh_abort_handler = aac_eh_abort,
@@ -1776,6 +1787,8 @@ static int aac_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
shost->max_lun = AAC_MAX_LUN;
pci_set_drvdata(pdev, shost);
+ shost->nr_hw_queues = aac->max_msix;
+ shost->host_tagset = 1;
error = scsi_add_host(shost, &pdev->dev);
if (error)
@@ -1908,6 +1921,7 @@ static void aac_remove_one(struct pci_dev *pdev)
struct aac_dev *aac = (struct aac_dev *)shost->hostdata;
aac_cancel_rescan_worker(aac);
+ aac->use_map_queue = false;
scsi_remove_host(shost);
__aac_shutdown(aac);
diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
index 11ef58204e96f..61949f3741886 100644
--- a/drivers/scsi/aacraid/src.c
+++ b/drivers/scsi/aacraid/src.c
@@ -493,6 +493,10 @@ static int aac_src_deliver_message(struct fib *fib)
#endif
u16 vector_no;
+ struct scsi_cmnd *scmd;
+ u32 blk_tag;
+ struct Scsi_Host *shost = dev->scsi_host_ptr;
+ struct blk_mq_queue_map *qmap;
atomic_inc(&q->numpending);
@@ -505,8 +509,25 @@ static int aac_src_deliver_message(struct fib *fib)
if ((dev->comm_interface == AAC_COMM_MESSAGE_TYPE3)
&& dev->sa_firmware)
vector_no = aac_get_vector(dev);
- else
- vector_no = fib->vector_no;
+ else {
+ if (!fib->vector_no || !fib->callback_data) {
+ if (shost && dev->use_map_queue) {
+ qmap = &shost->tag_set.map[HCTX_TYPE_DEFAULT];
+ vector_no = qmap->mq_map[raw_smp_processor_id()];
+ }
+ /*
+ * We hardcode the vector_no for
+ * reserved commands as a valid shost is
+ * absent during the init
+ */
+ else
+ vector_no = 0;
+ } else {
+ scmd = (struct scsi_cmnd *)fib->callback_data;
+ blk_tag = blk_mq_unique_tag(scsi_cmd_to_rq(scmd));
+ vector_no = blk_mq_unique_tag_to_hwq(blk_tag);
+ }
+ }
if (native_hba) {
if (fib->flags & FIB_CONTEXT_FLAG_NATIVE_HBA_TMF) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 070/600] scsi: storvsc: Always set no_report_opcodes
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (68 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 069/600] scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 071/600] scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path Greg Kroah-Hartman
` (540 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Michael Kelley, Martin K. Petersen,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Kelley <mikelley@microsoft.com>
[ Upstream commit 31d16e712bdcaee769de4780f72ff8d6cd3f0589 ]
Hyper-V synthetic SCSI devices do not support the MAINTENANCE_IN SCSI
command, so scsi_report_opcode() always fails, resulting in messages like
this:
hv_storvsc <guid>: tag#205 cmd 0xa3 status: scsi 0x2 srb 0x86 hv 0xc0000001
The recently added support for command duration limits calls
scsi_report_opcode() four times as each device comes online, which
significantly increases the number of messages logged in a system with many
disks.
Fix the problem by always marking Hyper-V synthetic SCSI devices as not
supporting scsi_report_opcode(). With this setting, the MAINTENANCE_IN SCSI
command is not issued and no messages are logged.
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
Link: https://lore.kernel.org/r/1686343101-18930-1-git-send-email-mikelley@microsoft.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/storvsc_drv.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 83d09c2009280..7a1dc5c7c49ee 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1568,6 +1568,8 @@ static int storvsc_device_configure(struct scsi_device *sdevice)
{
blk_queue_rq_timeout(sdevice->request_queue, (storvsc_timeout * HZ));
+ /* storvsc devices don't support MAINTENANCE_IN SCSI cmd */
+ sdevice->no_report_opcodes = 1;
sdevice->no_write_same = 1;
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 071/600] scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (69 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 070/600] scsi: storvsc: Always set no_report_opcodes Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 072/600] LoongArch: Let pmd_present() return true when splitting pmd Greg Kroah-Hartman
` (539 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Justin Tee, kernel test robot,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Justin Tee <justintee8345@gmail.com>
[ Upstream commit 9cefd6e7e0a77b0fbca5c793f6fb6821b0962775 ]
The kernel test robot reported sparse warnings regarding incorrect type
assignment for __be16 variables in bsg loopback path.
Change the flagged lines to use the be16_to_cpu() and cpu_to_be16() macros
appropriately.
Signed-off-by: Justin Tee <justin.tee@broadcom.com>
Link: https://lore.kernel.org/r/20230614175944.3577-1-justintee8345@gmail.com
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202306110819.sDIKiGgg-lkp@intel.com/
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/lpfc/lpfc_bsg.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/lpfc/lpfc_bsg.c b/drivers/scsi/lpfc/lpfc_bsg.c
index 852b025e2fecf..b54fafb486e06 100644
--- a/drivers/scsi/lpfc/lpfc_bsg.c
+++ b/drivers/scsi/lpfc/lpfc_bsg.c
@@ -889,7 +889,7 @@ lpfc_bsg_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
struct lpfc_iocbq *piocbq)
{
uint32_t evt_req_id = 0;
- uint32_t cmd;
+ u16 cmd;
struct lpfc_dmabuf *dmabuf = NULL;
struct lpfc_bsg_event *evt;
struct event_data *evt_dat = NULL;
@@ -915,7 +915,7 @@ lpfc_bsg_ct_unsol_event(struct lpfc_hba *phba, struct lpfc_sli_ring *pring,
ct_req = (struct lpfc_sli_ct_request *)bdeBuf1->virt;
evt_req_id = ct_req->FsType;
- cmd = ct_req->CommandResponse.bits.CmdRsp;
+ cmd = be16_to_cpu(ct_req->CommandResponse.bits.CmdRsp);
spin_lock_irqsave(&phba->ct_ev_lock, flags);
list_for_each_entry(evt, &phba->ct_ev_waiters, node) {
@@ -3186,8 +3186,8 @@ lpfc_bsg_diag_loopback_run(struct bsg_job *job)
ctreq->RevisionId.bits.InId = 0;
ctreq->FsType = SLI_CT_ELX_LOOPBACK;
ctreq->FsSubType = 0;
- ctreq->CommandResponse.bits.CmdRsp = ELX_LOOPBACK_DATA;
- ctreq->CommandResponse.bits.Size = size;
+ ctreq->CommandResponse.bits.CmdRsp = cpu_to_be16(ELX_LOOPBACK_DATA);
+ ctreq->CommandResponse.bits.Size = cpu_to_be16(size);
segment_offset = ELX_LOOPBACK_HEADER_SZ;
} else
segment_offset = 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 072/600] LoongArch: Let pmd_present() return true when splitting pmd
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (70 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 071/600] scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 073/600] LoongArch: Fix the write_fcsr() macro Greg Kroah-Hartman
` (538 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hongchen Zhang, Huacai Chen,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hongchen Zhang <zhanghongchen@loongson.cn>
[ Upstream commit ddc1729b07cc84bb29f577698b8d2e74a4004a6e ]
When we split a pmd into ptes, pmd_present() and pmd_trans_huge() should
return true, otherwise it would be treated as a swap pmd.
This is the same as arm64 does in commit b65399f6111b ("arm64/mm: Change
THP helpers to comply with generic MM semantics"), we also add a new bit
named _PAGE_PRESENT_INVALID for LoongArch.
Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/loongarch/include/asm/pgtable-bits.h | 2 ++
arch/loongarch/include/asm/pgtable.h | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/loongarch/include/asm/pgtable-bits.h b/arch/loongarch/include/asm/pgtable-bits.h
index 3d1e0a69975a5..5f2ebcea509cd 100644
--- a/arch/loongarch/include/asm/pgtable-bits.h
+++ b/arch/loongarch/include/asm/pgtable-bits.h
@@ -21,12 +21,14 @@
#define _PAGE_HGLOBAL_SHIFT 12 /* HGlobal is a PMD bit */
#define _PAGE_PFN_SHIFT 12
#define _PAGE_PFN_END_SHIFT 48
+#define _PAGE_PRESENT_INVALID_SHIFT 60
#define _PAGE_NO_READ_SHIFT 61
#define _PAGE_NO_EXEC_SHIFT 62
#define _PAGE_RPLV_SHIFT 63
/* Used by software */
#define _PAGE_PRESENT (_ULCAST_(1) << _PAGE_PRESENT_SHIFT)
+#define _PAGE_PRESENT_INVALID (_ULCAST_(1) << _PAGE_PRESENT_INVALID_SHIFT)
#define _PAGE_WRITE (_ULCAST_(1) << _PAGE_WRITE_SHIFT)
#define _PAGE_ACCESSED (_ULCAST_(1) << _PAGE_ACCESSED_SHIFT)
#define _PAGE_MODIFIED (_ULCAST_(1) << _PAGE_MODIFIED_SHIFT)
diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/asm/pgtable.h
index 79d5bfd913e0f..e748fad82f13e 100644
--- a/arch/loongarch/include/asm/pgtable.h
+++ b/arch/loongarch/include/asm/pgtable.h
@@ -208,7 +208,7 @@ static inline int pmd_bad(pmd_t pmd)
static inline int pmd_present(pmd_t pmd)
{
if (unlikely(pmd_val(pmd) & _PAGE_HUGE))
- return !!(pmd_val(pmd) & (_PAGE_PRESENT | _PAGE_PROTNONE));
+ return !!(pmd_val(pmd) & (_PAGE_PRESENT | _PAGE_PROTNONE | _PAGE_PRESENT_INVALID));
return pmd_val(pmd) != (unsigned long)invalid_pte_table;
}
@@ -525,6 +525,7 @@ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
static inline pmd_t pmd_mkinvalid(pmd_t pmd)
{
+ pmd_val(pmd) |= _PAGE_PRESENT_INVALID;
pmd_val(pmd) &= ~(_PAGE_PRESENT | _PAGE_VALID | _PAGE_DIRTY | _PAGE_PROTNONE);
return pmd;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 073/600] LoongArch: Fix the write_fcsr() macro
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (71 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 072/600] LoongArch: Let pmd_present() return true when splitting pmd Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 074/600] ALSA: seq: oss: Fix racy open/close of MIDI devices Greg Kroah-Hartman
` (537 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Miao HAO, Qi Hu, Huacai Chen,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Qi Hu <huqi@loongson.cn>
[ Upstream commit 346dc929623cef70ff7832a4fa0ffd1b696e312a ]
The "write_fcsr()" macro uses wrong the positions for val and dest in
asm. Fix it!
Reported-by: Miao HAO <haomiao19@mails.ucas.ac.cn>
Signed-off-by: Qi Hu <huqi@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/loongarch/include/asm/loongarch.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/loongarch/include/asm/loongarch.h b/arch/loongarch/include/asm/loongarch.h
index 62835d84a647d..3d15fa5bef37d 100644
--- a/arch/loongarch/include/asm/loongarch.h
+++ b/arch/loongarch/include/asm/loongarch.h
@@ -1488,7 +1488,7 @@ __BUILD_CSR_OP(tlbidx)
#define write_fcsr(dest, val) \
do { \
__asm__ __volatile__( \
- " movgr2fcsr %0, "__stringify(dest)" \n" \
+ " movgr2fcsr "__stringify(dest)", %0 \n" \
: : "r" (val)); \
} while (0)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 074/600] ALSA: seq: oss: Fix racy open/close of MIDI devices
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (72 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 073/600] LoongArch: Fix the write_fcsr() macro Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 075/600] net: sfp: handle 100G/25G active optical cables in sfp_parse_support Greg Kroah-Hartman
` (536 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gong, Sishuai, Takashi Iwai,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <tiwai@suse.de>
[ Upstream commit 297224fc0922e7385573a30c29ffdabb67f27b7d ]
Although snd_seq_oss_midi_open() and snd_seq_oss_midi_close() can be
called concurrently from different code paths, we have no proper data
protection against races. Introduce open_mutex to each seq_oss_midi
object for avoiding the races.
Reported-by: "Gong, Sishuai" <sishuai@purdue.edu>
Closes: https://lore.kernel.org/r/7DC9AF71-F481-4ABA-955F-76C535661E33@purdue.edu
Link: https://lore.kernel.org/r/20230612125533.27461-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/core/seq/oss/seq_oss_midi.c | 35 +++++++++++++++++++------------
1 file changed, 22 insertions(+), 13 deletions(-)
diff --git a/sound/core/seq/oss/seq_oss_midi.c b/sound/core/seq/oss/seq_oss_midi.c
index 07efb38f58ac1..f2940b29595f0 100644
--- a/sound/core/seq/oss/seq_oss_midi.c
+++ b/sound/core/seq/oss/seq_oss_midi.c
@@ -37,6 +37,7 @@ struct seq_oss_midi {
struct snd_midi_event *coder; /* MIDI event coder */
struct seq_oss_devinfo *devinfo; /* assigned OSSseq device */
snd_use_lock_t use_lock;
+ struct mutex open_mutex;
};
@@ -172,6 +173,7 @@ snd_seq_oss_midi_check_new_port(struct snd_seq_port_info *pinfo)
mdev->flags = pinfo->capability;
mdev->opened = 0;
snd_use_lock_init(&mdev->use_lock);
+ mutex_init(&mdev->open_mutex);
/* copy and truncate the name of synth device */
strscpy(mdev->name, pinfo->name, sizeof(mdev->name));
@@ -322,15 +324,17 @@ snd_seq_oss_midi_open(struct seq_oss_devinfo *dp, int dev, int fmode)
int perm;
struct seq_oss_midi *mdev;
struct snd_seq_port_subscribe subs;
+ int err;
mdev = get_mididev(dp, dev);
if (!mdev)
return -ENODEV;
+ mutex_lock(&mdev->open_mutex);
/* already used? */
if (mdev->opened && mdev->devinfo != dp) {
- snd_use_lock_free(&mdev->use_lock);
- return -EBUSY;
+ err = -EBUSY;
+ goto unlock;
}
perm = 0;
@@ -340,14 +344,14 @@ snd_seq_oss_midi_open(struct seq_oss_devinfo *dp, int dev, int fmode)
perm |= PERM_READ;
perm &= mdev->flags;
if (perm == 0) {
- snd_use_lock_free(&mdev->use_lock);
- return -ENXIO;
+ err = -ENXIO;
+ goto unlock;
}
/* already opened? */
if ((mdev->opened & perm) == perm) {
- snd_use_lock_free(&mdev->use_lock);
- return 0;
+ err = 0;
+ goto unlock;
}
perm &= ~mdev->opened;
@@ -372,13 +376,17 @@ snd_seq_oss_midi_open(struct seq_oss_devinfo *dp, int dev, int fmode)
}
if (! mdev->opened) {
- snd_use_lock_free(&mdev->use_lock);
- return -ENXIO;
+ err = -ENXIO;
+ goto unlock;
}
mdev->devinfo = dp;
+ err = 0;
+
+ unlock:
+ mutex_unlock(&mdev->open_mutex);
snd_use_lock_free(&mdev->use_lock);
- return 0;
+ return err;
}
/*
@@ -393,10 +401,9 @@ snd_seq_oss_midi_close(struct seq_oss_devinfo *dp, int dev)
mdev = get_mididev(dp, dev);
if (!mdev)
return -ENODEV;
- if (! mdev->opened || mdev->devinfo != dp) {
- snd_use_lock_free(&mdev->use_lock);
- return 0;
- }
+ mutex_lock(&mdev->open_mutex);
+ if (!mdev->opened || mdev->devinfo != dp)
+ goto unlock;
memset(&subs, 0, sizeof(subs));
if (mdev->opened & PERM_WRITE) {
@@ -415,6 +422,8 @@ snd_seq_oss_midi_close(struct seq_oss_devinfo *dp, int dev)
mdev->opened = 0;
mdev->devinfo = NULL;
+ unlock:
+ mutex_unlock(&mdev->open_mutex);
snd_use_lock_free(&mdev->use_lock);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 075/600] net: sfp: handle 100G/25G active optical cables in sfp_parse_support
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (73 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 074/600] ALSA: seq: oss: Fix racy open/close of MIDI devices Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 076/600] tracing: Introduce pipe_cpumask to avoid race on trace_pipes Greg Kroah-Hartman
` (535 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Josua Mayer, Russell King (Oracle),
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Josua Mayer <josua@solid-run.com>
[ Upstream commit db1a6ad77c180efc7242d7204b9a0c72c8a5a1bb ]
Handle extended compliance code 0x1 (SFF8024_ECC_100G_25GAUI_C2M_AOC)
for active optical cables supporting 25G and 100G speeds.
Since the specification makes no statement about transmitter range, and
as the specific sfp module that had been tested features only 2m fiber -
short-range (SR) modes are selected.
The 100G speed is irrelevant because it would require multiple fibers /
multiple SFP28 modules combined under one netdev.
sfp-bus.c only handles a single module per netdev, so only 25Gbps modes
are selected.
sfp_parse_support already handles SFF8024_ECC_100GBASE_SR4_25GBASE_SR
with compatible properties, however that entry is a contradiction in
itself since with SFP(28) 100GBASE_SR4 is impossible - that would likely
be a mode for qsfp modules only.
Add a case for SFF8024_ECC_100G_25GAUI_C2M_AOC selecting 25gbase-r
interface mode and 25000baseSR link mode.
Also enforce SFP28 bitrate limits on the values read from sfp eeprom as
requested by Russell King.
Tested with fs.com S28-AO02 AOC SFP28 module.
Signed-off-by: Josua Mayer <josua@solid-run.com>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/phy/sfp-bus.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/net/phy/sfp-bus.c b/drivers/net/phy/sfp-bus.c
index daac293e8edec..1865e3dbdfad0 100644
--- a/drivers/net/phy/sfp-bus.c
+++ b/drivers/net/phy/sfp-bus.c
@@ -254,6 +254,16 @@ void sfp_parse_support(struct sfp_bus *bus, const struct sfp_eeprom_id *id,
switch (id->base.extended_cc) {
case SFF8024_ECC_UNSPEC:
break;
+ case SFF8024_ECC_100G_25GAUI_C2M_AOC:
+ if (br_min <= 28000 && br_max >= 25000) {
+ /* 25GBASE-R, possibly with FEC */
+ __set_bit(PHY_INTERFACE_MODE_25GBASER, interfaces);
+ /* There is currently no link mode for 25000base
+ * with unspecified range, reuse SR.
+ */
+ phylink_set(modes, 25000baseSR_Full);
+ }
+ break;
case SFF8024_ECC_100GBASE_SR4_25GBASE_SR:
phylink_set(modes, 100000baseSR4_Full);
phylink_set(modes, 25000baseSR_Full);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 076/600] tracing: Introduce pipe_cpumask to avoid race on trace_pipes
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (74 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 075/600] net: sfp: handle 100G/25G active optical cables in sfp_parse_support Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 077/600] platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE notifications Greg Kroah-Hartman
` (534 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Steven Rostedt (Google),
Zheng Yejian, Masami Hiramatsu (Google), Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zheng Yejian <zhengyejian1@huawei.com>
[ Upstream commit c2489bb7e6be2e8cdced12c16c42fa128403ac03 ]
There is race issue when concurrently splice_read main trace_pipe and
per_cpu trace_pipes which will result in data read out being different
from what actually writen.
As suggested by Steven:
> I believe we should add a ref count to trace_pipe and the per_cpu
> trace_pipes, where if they are opened, nothing else can read it.
>
> Opening trace_pipe locks all per_cpu ref counts, if any of them are
> open, then the trace_pipe open will fail (and releases any ref counts
> it had taken).
>
> Opening a per_cpu trace_pipe will up the ref count for just that
> CPU buffer. This will allow multiple tasks to read different per_cpu
> trace_pipe files, but will prevent the main trace_pipe file from
> being opened.
But because we only need to know whether per_cpu trace_pipe is open or
not, using a cpumask instead of using ref count may be easier.
After this patch, users will find that:
- Main trace_pipe can be opened by only one user, and if it is
opened, all per_cpu trace_pipes cannot be opened;
- Per_cpu trace_pipes can be opened by multiple users, but each per_cpu
trace_pipe can only be opened by one user. And if one of them is
opened, main trace_pipe cannot be opened.
Link: https://lore.kernel.org/linux-trace-kernel/20230818022645.1948314-1-zhengyejian1@huawei.com
Suggested-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/trace/trace.c | 55 ++++++++++++++++++++++++++++++++++++++------
kernel/trace/trace.h | 2 ++
2 files changed, 50 insertions(+), 7 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 1a87cb70f1eb5..e581253ecc535 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6616,10 +6616,36 @@ tracing_max_lat_write(struct file *filp, const char __user *ubuf,
#endif
+static int open_pipe_on_cpu(struct trace_array *tr, int cpu)
+{
+ if (cpu == RING_BUFFER_ALL_CPUS) {
+ if (cpumask_empty(tr->pipe_cpumask)) {
+ cpumask_setall(tr->pipe_cpumask);
+ return 0;
+ }
+ } else if (!cpumask_test_cpu(cpu, tr->pipe_cpumask)) {
+ cpumask_set_cpu(cpu, tr->pipe_cpumask);
+ return 0;
+ }
+ return -EBUSY;
+}
+
+static void close_pipe_on_cpu(struct trace_array *tr, int cpu)
+{
+ if (cpu == RING_BUFFER_ALL_CPUS) {
+ WARN_ON(!cpumask_full(tr->pipe_cpumask));
+ cpumask_clear(tr->pipe_cpumask);
+ } else {
+ WARN_ON(!cpumask_test_cpu(cpu, tr->pipe_cpumask));
+ cpumask_clear_cpu(cpu, tr->pipe_cpumask);
+ }
+}
+
static int tracing_open_pipe(struct inode *inode, struct file *filp)
{
struct trace_array *tr = inode->i_private;
struct trace_iterator *iter;
+ int cpu;
int ret;
ret = tracing_check_open_get_tr(tr);
@@ -6627,13 +6653,16 @@ static int tracing_open_pipe(struct inode *inode, struct file *filp)
return ret;
mutex_lock(&trace_types_lock);
+ cpu = tracing_get_cpu(inode);
+ ret = open_pipe_on_cpu(tr, cpu);
+ if (ret)
+ goto fail_pipe_on_cpu;
/* create a buffer to store the information to pass to userspace */
iter = kzalloc(sizeof(*iter), GFP_KERNEL);
if (!iter) {
ret = -ENOMEM;
- __trace_array_put(tr);
- goto out;
+ goto fail_alloc_iter;
}
trace_seq_init(&iter->seq);
@@ -6656,7 +6685,7 @@ static int tracing_open_pipe(struct inode *inode, struct file *filp)
iter->tr = tr;
iter->array_buffer = &tr->array_buffer;
- iter->cpu_file = tracing_get_cpu(inode);
+ iter->cpu_file = cpu;
mutex_init(&iter->mutex);
filp->private_data = iter;
@@ -6666,12 +6695,15 @@ static int tracing_open_pipe(struct inode *inode, struct file *filp)
nonseekable_open(inode, filp);
tr->trace_ref++;
-out:
+
mutex_unlock(&trace_types_lock);
return ret;
fail:
kfree(iter);
+fail_alloc_iter:
+ close_pipe_on_cpu(tr, cpu);
+fail_pipe_on_cpu:
__trace_array_put(tr);
mutex_unlock(&trace_types_lock);
return ret;
@@ -6688,7 +6720,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file)
if (iter->trace->pipe_close)
iter->trace->pipe_close(iter);
-
+ close_pipe_on_cpu(tr, iter->cpu_file);
mutex_unlock(&trace_types_lock);
free_cpumask_var(iter->started);
@@ -9356,6 +9388,9 @@ static struct trace_array *trace_array_create(const char *name)
if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL))
goto out_free_tr;
+ if (!alloc_cpumask_var(&tr->pipe_cpumask, GFP_KERNEL))
+ goto out_free_tr;
+
tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS;
cpumask_copy(tr->tracing_cpumask, cpu_all_mask);
@@ -9397,6 +9432,7 @@ static struct trace_array *trace_array_create(const char *name)
out_free_tr:
ftrace_free_ftrace_ops(tr);
free_trace_buffers(tr);
+ free_cpumask_var(tr->pipe_cpumask);
free_cpumask_var(tr->tracing_cpumask);
kfree(tr->name);
kfree(tr);
@@ -9499,6 +9535,7 @@ static int __remove_instance(struct trace_array *tr)
}
kfree(tr->topts);
+ free_cpumask_var(tr->pipe_cpumask);
free_cpumask_var(tr->tracing_cpumask);
kfree(tr->name);
kfree(tr);
@@ -10223,12 +10260,14 @@ __init static int tracer_alloc_buffers(void)
if (trace_create_savedcmd() < 0)
goto out_free_temp_buffer;
+ if (!alloc_cpumask_var(&global_trace.pipe_cpumask, GFP_KERNEL))
+ goto out_free_savedcmd;
+
/* TODO: make the number of buffers hot pluggable with CPUS */
if (allocate_trace_buffers(&global_trace, ring_buf_size) < 0) {
MEM_FAIL(1, "tracer: failed to allocate ring buffer!\n");
- goto out_free_savedcmd;
+ goto out_free_pipe_cpumask;
}
-
if (global_trace.buffer_disabled)
tracing_off();
@@ -10281,6 +10320,8 @@ __init static int tracer_alloc_buffers(void)
return 0;
+out_free_pipe_cpumask:
+ free_cpumask_var(global_trace.pipe_cpumask);
out_free_savedcmd:
free_saved_cmdlines_buffer(savedcmd);
out_free_temp_buffer:
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 3d3505286aa7f..dbb86b0dd3b7b 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -366,6 +366,8 @@ struct trace_array {
struct list_head events;
struct trace_event_file *trace_marker_file;
cpumask_var_t tracing_cpumask; /* only trace on set CPUs */
+ /* one per_cpu trace_pipe can be opened by only one user */
+ cpumask_var_t pipe_cpumask;
int ref;
int trace_ref;
#ifdef CONFIG_FUNCTION_TRACER
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 077/600] platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE notifications
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (75 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 076/600] tracing: Introduce pipe_cpumask to avoid race on trace_pipes Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 078/600] of: property: Simplify of_link_to_phandle() Greg Kroah-Hartman
` (533 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shih-Yi Chen, Liming Sung,
David Thompson, Hans de Goede, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shih-Yi Chen <shihyic@nvidia.com>
[ Upstream commit 0848cab765c634597636810bf76d0934003cce28 ]
rshim console does not show all entries of dmesg.
Fixed by setting MLXBF_TM_TX_LWM_IRQ for every CONSOLE notification.
Signed-off-by: Shih-Yi Chen <shihyic@nvidia.com>
Reviewed-by: Liming Sung <limings@nvidia.com>
Reviewed-by: David Thompson <davthompson@nvidia.com>
Link: https://lore.kernel.org/r/20230821150627.26075-1-shihyic@nvidia.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/mellanox/mlxbf-tmfifo.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/platform/mellanox/mlxbf-tmfifo.c b/drivers/platform/mellanox/mlxbf-tmfifo.c
index b2e19f30a928b..d31fe7eed38df 100644
--- a/drivers/platform/mellanox/mlxbf-tmfifo.c
+++ b/drivers/platform/mellanox/mlxbf-tmfifo.c
@@ -868,6 +868,7 @@ static bool mlxbf_tmfifo_virtio_notify(struct virtqueue *vq)
tm_vdev = fifo->vdev[VIRTIO_ID_CONSOLE];
mlxbf_tmfifo_console_output(tm_vdev, vring);
spin_unlock_irqrestore(&fifo->spin_lock[0], flags);
+ set_bit(MLXBF_TM_TX_LWM_IRQ, &fifo->pend_events);
} else if (test_and_set_bit(MLXBF_TM_TX_LWM_IRQ,
&fifo->pend_events)) {
return true;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 078/600] of: property: Simplify of_link_to_phandle()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (76 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 077/600] platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE notifications Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 079/600] cpufreq: intel_pstate: set stale CPU frequency to minimum Greg Kroah-Hartman
` (532 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Saravana Kannan, Colin Foster,
Sudeep Holla, Douglas Anderson, Geert Uytterhoeven, Adam Ford,
Luca Weiss
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Saravana Kannan <saravanak@google.com>
commit 4a032827daa89350365166b19d14d82fe8219128 upstream.
The driver core now:
- Has the parent device of a supplier pick up the consumers if the
supplier never has a device created for it.
- Ignores a supplier if the supplier has no parent device and will never
be probed by a driver
And already prevents creating a device link with the consumer as a
supplier of a parent.
So, we no longer need to find the "compatible" node of the supplier or
do any other checks in of_link_to_phandle(). We simply need to make sure
that the supplier is available in DT.
Signed-off-by: Saravana Kannan <saravanak@google.com>
Tested-by: Colin Foster <colin.foster@in-advantage.com>
Tested-by: Sudeep Holla <sudeep.holla@arm.com>
Tested-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Luca Weiss <luca.weiss@fairphone.com> # qcom/sm7225-fairphone-fp4
Link: https://lore.kernel.org/r/20230207014207.1678715-10-saravanak@google.com
Fixes: eaf9b5612a47 ("driver core: fw_devlink: Don't purge child fwnode's consumer links")
Signed-off-by: Adam Ford <aford173@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/of/property.c | 84 +++++++-------------------------------------------
1 file changed, 13 insertions(+), 71 deletions(-)
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1062,20 +1062,6 @@ of_fwnode_device_get_match_data(const st
return of_device_get_match_data(dev);
}
-static bool of_is_ancestor_of(struct device_node *test_ancestor,
- struct device_node *child)
-{
- of_node_get(child);
- while (child) {
- if (child == test_ancestor) {
- of_node_put(child);
- return true;
- }
- child = of_get_next_parent(child);
- }
- return false;
-}
-
static struct device_node *of_get_compat_node(struct device_node *np)
{
of_node_get(np);
@@ -1106,71 +1092,27 @@ static struct device_node *of_get_compat
return node;
}
-/**
- * of_link_to_phandle - Add fwnode link to supplier from supplier phandle
- * @con_np: consumer device tree node
- * @sup_np: supplier device tree node
- *
- * Given a phandle to a supplier device tree node (@sup_np), this function
- * finds the device that owns the supplier device tree node and creates a
- * device link from @dev consumer device to the supplier device. This function
- * doesn't create device links for invalid scenarios such as trying to create a
- * link with a parent device as the consumer of its child device. In such
- * cases, it returns an error.
- *
- * Returns:
- * - 0 if fwnode link successfully created to supplier
- * - -EINVAL if the supplier link is invalid and should not be created
- * - -ENODEV if struct device will never be create for supplier
- */
-static int of_link_to_phandle(struct device_node *con_np,
+static void of_link_to_phandle(struct device_node *con_np,
struct device_node *sup_np)
{
- struct device *sup_dev;
- struct device_node *tmp_np = sup_np;
+ struct device_node *tmp_np = of_node_get(sup_np);
- /*
- * Find the device node that contains the supplier phandle. It may be
- * @sup_np or it may be an ancestor of @sup_np.
- */
- sup_np = of_get_compat_node(sup_np);
- if (!sup_np) {
- pr_debug("Not linking %pOFP to %pOFP - No device\n",
- con_np, tmp_np);
- return -ENODEV;
- }
+ /* Check that sup_np and its ancestors are available. */
+ while (tmp_np) {
+ if (of_fwnode_handle(tmp_np)->dev) {
+ of_node_put(tmp_np);
+ break;
+ }
- /*
- * Don't allow linking a device node as a consumer of one of its
- * descendant nodes. By definition, a child node can't be a functional
- * dependency for the parent node.
- */
- if (of_is_ancestor_of(con_np, sup_np)) {
- pr_debug("Not linking %pOFP to %pOFP - is descendant\n",
- con_np, sup_np);
- of_node_put(sup_np);
- return -EINVAL;
- }
+ if (!of_device_is_available(tmp_np)) {
+ of_node_put(tmp_np);
+ return;
+ }
- /*
- * Don't create links to "early devices" that won't have struct devices
- * created for them.
- */
- sup_dev = get_dev_from_fwnode(&sup_np->fwnode);
- if (!sup_dev &&
- (of_node_check_flag(sup_np, OF_POPULATED) ||
- sup_np->fwnode.flags & FWNODE_FLAG_NOT_DEVICE)) {
- pr_debug("Not linking %pOFP to %pOFP - No struct device\n",
- con_np, sup_np);
- of_node_put(sup_np);
- return -ENODEV;
+ tmp_np = of_get_next_parent(tmp_np);
}
- put_device(sup_dev);
fwnode_link_add(of_fwnode_handle(con_np), of_fwnode_handle(sup_np));
- of_node_put(sup_np);
-
- return 0;
}
/**
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 079/600] cpufreq: intel_pstate: set stale CPU frequency to minimum
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (77 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 078/600] of: property: Simplify of_link_to_phandle() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 080/600] crypto: rsa-pkcs1pad - Use helper to set reqsize Greg Kroah-Hartman
` (531 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yang Jie, Doug Smythies,
Rafael J. Wysocki
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Doug Smythies <dsmythies@telus.net>
commit d51847acb018d83186e4af67bc93f9a00a8644f7 upstream.
The intel_pstate CPU frequency scaling driver does not
use policy->cur and it is 0.
When the CPU frequency is outdated arch_freq_get_on_cpu()
will default to the nominal clock frequency when its call to
cpufreq_quick_getpolicy_cur returns the never updated 0.
Thus, the listed frequency might be outside of currently
set limits. Some users are complaining about the high
reported frequency, albeit stale, when their system is
idle and/or it is above the reduced maximum they have set.
This patch will maintain policy_cur for the intel_pstate
driver at the current minimum CPU frequency.
Reported-by: Yang Jie <yang.jie@linux.intel.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217597
Signed-off-by: Doug Smythies <dsmythies@telus.net>
[ rjw: White space damage fixes and comment adjustment ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/cpufreq/intel_pstate.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -2574,6 +2574,11 @@ static int intel_pstate_set_policy(struc
intel_pstate_clear_update_util_hook(policy->cpu);
intel_pstate_hwp_set(policy->cpu);
}
+ /*
+ * policy->cur is never updated with the intel_pstate driver, but it
+ * is used as a stale frequency value. So, keep it within limits.
+ */
+ policy->cur = policy->min;
mutex_unlock(&intel_pstate_limits_lock);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 080/600] crypto: rsa-pkcs1pad - Use helper to set reqsize
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (78 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 079/600] cpufreq: intel_pstate: set stale CPU frequency to minimum Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 081/600] tpm: Enable hwrng only for Pluton on AMD CPUs Greg Kroah-Hartman
` (530 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Herbert Xu, Giovanni Cabiddu
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Herbert Xu <herbert@gondor.apana.org.au>
commit 5b11d1a360ea23c80c6d4ec3f5986a788d0a0995 upstream.
The value of reqsize must only be changed through the helper.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
crypto/rsa-pkcs1pad.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
--- a/crypto/rsa-pkcs1pad.c
+++ b/crypto/rsa-pkcs1pad.c
@@ -575,6 +575,10 @@ static int pkcs1pad_init_tfm(struct cryp
return PTR_ERR(child_tfm);
ctx->child = child_tfm;
+
+ akcipher_set_reqsize(tfm, sizeof(struct pkcs1pad_request) +
+ crypto_akcipher_reqsize(child_tfm));
+
return 0;
}
@@ -670,7 +674,6 @@ static int pkcs1pad_create(struct crypto
inst->alg.set_pub_key = pkcs1pad_set_pub_key;
inst->alg.set_priv_key = pkcs1pad_set_priv_key;
inst->alg.max_size = pkcs1pad_get_max_size;
- inst->alg.reqsize = sizeof(struct pkcs1pad_request) + rsa_alg->reqsize;
inst->free = pkcs1pad_free;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 081/600] tpm: Enable hwrng only for Pluton on AMD CPUs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (79 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 080/600] crypto: rsa-pkcs1pad - Use helper to set reqsize Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 082/600] KVM: x86/mmu: Use kstrtobool() instead of strtobool() Greg Kroah-Hartman
` (529 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Todd Brandt, Patrick Steinhardt,
Raymond Jay Golo, Ronan Pigott, Jerry Snitselaar, Jarkko Sakkinen,
Thorsten Leemhuis
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jarkko Sakkinen <jarkko@kernel.org>
commit 8f7f35e5aa6f2182eabcfa3abef4d898a48e9aa8 upstream.
The vendor check introduced by commit 554b841d4703 ("tpm: Disable RNG for
all AMD fTPMs") doesn't work properly on a number of Intel fTPMs. On the
reported systems the TPM doesn't reply at bootup and returns back the
command code. This makes the TPM fail probe on Lenovo Legion Y540 laptop.
Since only Microsoft Pluton is the only known combination of AMD CPU and
fTPM from other vendor, disable hwrng otherwise. In order to make sysadmin
aware of this, print also info message to the klog.
Cc: stable@vger.kernel.org
Fixes: 554b841d4703 ("tpm: Disable RNG for all AMD fTPMs")
Reported-by: Todd Brandt <todd.e.brandt@intel.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217804
Reported-by: Patrick Steinhardt <ps@pks.im>
Reported-by: Raymond Jay Golo <rjgolo@gmail.com>
Reported-by: Ronan Pigott <ronan@rjp.ie>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Cc: Thorsten Leemhuis <regressions@leemhuis.info>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/char/tpm/tpm_crb.c | 33 ++++++++-------------------------
1 file changed, 8 insertions(+), 25 deletions(-)
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -463,28 +463,6 @@ static bool crb_req_canceled(struct tpm_
return (cancel & CRB_CANCEL_INVOKE) == CRB_CANCEL_INVOKE;
}
-static int crb_check_flags(struct tpm_chip *chip)
-{
- u32 val;
- int ret;
-
- ret = crb_request_locality(chip, 0);
- if (ret)
- return ret;
-
- ret = tpm2_get_tpm_pt(chip, TPM2_PT_MANUFACTURER, &val, NULL);
- if (ret)
- goto release;
-
- if (val == 0x414D4400U /* AMD */)
- chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED;
-
-release:
- crb_relinquish_locality(chip, 0);
-
- return ret;
-}
-
static const struct tpm_class_ops tpm_crb = {
.flags = TPM_OPS_AUTO_STARTUP,
.status = crb_status,
@@ -826,9 +804,14 @@ static int crb_acpi_add(struct acpi_devi
if (rc)
goto out;
- rc = crb_check_flags(chip);
- if (rc)
- goto out;
+#ifdef CONFIG_X86
+ /* A quirk for https://www.amd.com/en/support/kb/faq/pa-410 */
+ if (boot_cpu_data.x86_vendor == X86_VENDOR_AMD &&
+ priv->sm != ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON) {
+ dev_info(dev, "Disabling hwrng\n");
+ chip->flags |= TPM_CHIP_FLAG_HWRNG_DISABLED;
+ }
+#endif /* CONFIG_X86 */
rc = tpm_chip_register(chip);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 082/600] KVM: x86/mmu: Use kstrtobool() instead of strtobool()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (80 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 081/600] tpm: Enable hwrng only for Pluton on AMD CPUs Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 083/600] KVM: x86/mmu: Add "never" option to allow sticky disabling of nx_huge_pages Greg Kroah-Hartman
` (528 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe JAILLET,
Sean Christopherson, Luiz Capitulino
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
commit 11b36fe7d4500c8ef73677c087f302fd713101c2 upstream.
strtobool() is the same as kstrtobool().
However, the latter is more used within the kernel.
In order to remove strtobool() and slightly simplify kstrtox.h, switch to
the other function name.
While at it, include the corresponding header file (<linux/kstrtox.h>)
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/670882aa04dbdd171b46d3b20ffab87158454616.1673689135.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Luiz Capitulino <luizcap@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kvm/mmu/mmu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -42,6 +42,7 @@
#include <linux/uaccess.h>
#include <linux/hash.h>
#include <linux/kern_levels.h>
+#include <linux/kstrtox.h>
#include <linux/kthread.h>
#include <asm/page.h>
@@ -6667,7 +6668,7 @@ static int set_nx_huge_pages(const char
new_val = 1;
else if (sysfs_streq(val, "auto"))
new_val = get_nx_auto_mode();
- else if (strtobool(val, &new_val) < 0)
+ else if (kstrtobool(val, &new_val) < 0)
return -EINVAL;
__set_nx_huge_pages(new_val);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 083/600] KVM: x86/mmu: Add "never" option to allow sticky disabling of nx_huge_pages
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (81 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 082/600] KVM: x86/mmu: Use kstrtobool() instead of strtobool() Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 084/600] net: Avoid address overwrite in kernel_connect Greg Kroah-Hartman
` (527 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Li RongQing, Yong He, Robert Hoo,
Kai Huang, Luiz Capitulino, Sean Christopherson
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Christopherson <seanjc@google.com>
commit 0b210faf337314e4bc88e796218bc70c72a51209 upstream.
Add a "never" option to the nx_huge_pages module param to allow userspace
to do a one-way hard disabling of the mitigation, and don't create the
per-VM recovery threads when the mitigation is hard disabled. Letting
userspace pinky swear that userspace doesn't want to enable NX mitigation
(without reloading KVM) allows certain use cases to avoid the latency
problems associated with spawning a kthread for each VM.
E.g. in FaaS use cases, the guest kernel is trusted and the host may
create 100+ VMs per logical CPU, which can result in 100ms+ latencies when
a burst of VMs is created.
Reported-by: Li RongQing <lirongqing@baidu.com>
Closes: https://lore.kernel.org/all/1679555884-32544-1-git-send-email-lirongqing@baidu.com
Cc: Yong He <zhuangel570@gmail.com>
Cc: Robert Hoo <robert.hoo.linux@gmail.com>
Cc: Kai Huang <kai.huang@intel.com>
Reviewed-by: Robert Hoo <robert.hoo.linux@gmail.com>
Acked-by: Kai Huang <kai.huang@intel.com>
Tested-by: Luiz Capitulino <luizcap@amazon.com>
Reviewed-by: Li RongQing <lirongqing@baidu.com>
Link: https://lore.kernel.org/r/20230602005859.784190-1-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
[ Resolved a small conflict in arch/x86/kvm/mmu/mmu.c::kvm_mmu_post_init_vm()
which is due kvm_nx_lpage_recovery_worker() being renamed in upstream
commit 55c510e26ab6181c132327a8b90c864e6193ce27 ]
Signed-off-by: Luiz Capitulino <luizcap@amazon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kvm/mmu/mmu.c | 41 ++++++++++++++++++++++++++++++++++++-----
1 file changed, 36 insertions(+), 5 deletions(-)
--- a/arch/x86/kvm/mmu/mmu.c
+++ b/arch/x86/kvm/mmu/mmu.c
@@ -56,6 +56,8 @@
extern bool itlb_multihit_kvm_mitigation;
+static bool nx_hugepage_mitigation_hard_disabled;
+
int __read_mostly nx_huge_pages = -1;
static uint __read_mostly nx_huge_pages_recovery_period_ms;
#ifdef CONFIG_PREEMPT_RT
@@ -65,12 +67,13 @@ static uint __read_mostly nx_huge_pages_
static uint __read_mostly nx_huge_pages_recovery_ratio = 60;
#endif
+static int get_nx_huge_pages(char *buffer, const struct kernel_param *kp);
static int set_nx_huge_pages(const char *val, const struct kernel_param *kp);
static int set_nx_huge_pages_recovery_param(const char *val, const struct kernel_param *kp);
static const struct kernel_param_ops nx_huge_pages_ops = {
.set = set_nx_huge_pages,
- .get = param_get_bool,
+ .get = get_nx_huge_pages,
};
static const struct kernel_param_ops nx_huge_pages_recovery_param_ops = {
@@ -6645,6 +6648,14 @@ static void mmu_destroy_caches(void)
kmem_cache_destroy(mmu_page_header_cache);
}
+static int get_nx_huge_pages(char *buffer, const struct kernel_param *kp)
+{
+ if (nx_hugepage_mitigation_hard_disabled)
+ return sprintf(buffer, "never\n");
+
+ return param_get_bool(buffer, kp);
+}
+
static bool get_nx_auto_mode(void)
{
/* Return true when CPU has the bug, and mitigations are ON */
@@ -6661,15 +6672,29 @@ static int set_nx_huge_pages(const char
bool old_val = nx_huge_pages;
bool new_val;
+ if (nx_hugepage_mitigation_hard_disabled)
+ return -EPERM;
+
/* In "auto" mode deploy workaround only if CPU has the bug. */
- if (sysfs_streq(val, "off"))
+ if (sysfs_streq(val, "off")) {
new_val = 0;
- else if (sysfs_streq(val, "force"))
+ } else if (sysfs_streq(val, "force")) {
new_val = 1;
- else if (sysfs_streq(val, "auto"))
+ } else if (sysfs_streq(val, "auto")) {
new_val = get_nx_auto_mode();
- else if (kstrtobool(val, &new_val) < 0)
+ } else if (sysfs_streq(val, "never")) {
+ new_val = 0;
+
+ mutex_lock(&kvm_lock);
+ if (!list_empty(&vm_list)) {
+ mutex_unlock(&kvm_lock);
+ return -EBUSY;
+ }
+ nx_hugepage_mitigation_hard_disabled = true;
+ mutex_unlock(&kvm_lock);
+ } else if (kstrtobool(val, &new_val) < 0) {
return -EINVAL;
+ }
__set_nx_huge_pages(new_val);
@@ -6800,6 +6825,9 @@ static int set_nx_huge_pages_recovery_pa
uint old_period, new_period;
int err;
+ if (nx_hugepage_mitigation_hard_disabled)
+ return -EPERM;
+
was_recovery_enabled = calc_nx_huge_pages_recovery_period(&old_period);
err = param_set_uint(val, kp);
@@ -6923,6 +6951,9 @@ int kvm_mmu_post_init_vm(struct kvm *kvm
{
int err;
+ if (nx_hugepage_mitigation_hard_disabled)
+ return 0;
+
err = kvm_vm_create_worker_thread(kvm, kvm_nx_lpage_recovery_worker, 0,
"kvm-nx-lpage-recovery",
&kvm->arch.nx_lpage_recovery_thread);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 084/600] net: Avoid address overwrite in kernel_connect
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (82 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 083/600] KVM: x86/mmu: Add "never" option to allow sticky disabling of nx_huge_pages Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 085/600] drm/amd/display: ensure async flips are only accepted for fast updates Greg Kroah-Hartman
` (526 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jordan Rife, David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jordan Rife <jrife@google.com>
commit 0bdf399342c5acbd817c9098b6c7ed21f1974312 upstream.
BPF programs that run on connect can rewrite the connect address. For
the connect system call this isn't a problem, because a copy of the address
is made when it is moved into kernel space. However, kernel_connect
simply passes through the address it is given, so the caller may observe
its address value unexpectedly change.
A practical example where this is problematic is where NFS is combined
with a system such as Cilium which implements BPF-based load balancing.
A common pattern in software-defined storage systems is to have an NFS
mount that connects to a persistent virtual IP which in turn maps to an
ephemeral server IP. This is usually done to achieve high availability:
if your server goes down you can quickly spin up a replacement and remap
the virtual IP to that endpoint. With BPF-based load balancing, mounts
will forget the virtual IP address when the address rewrite occurs
because a pointer to the only copy of that address is passed down the
stack. Server failover then breaks, because clients have forgotten the
virtual IP address. Reconnects fail and mounts remain broken. This patch
was tested by setting up a scenario like this and ensuring that NFS
reconnects worked after applying the patch.
Signed-off-by: Jordan Rife <jrife@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/socket.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/net/socket.c
+++ b/net/socket.c
@@ -3507,7 +3507,11 @@ EXPORT_SYMBOL(kernel_accept);
int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,
int flags)
{
- return sock->ops->connect(sock, addr, addrlen, flags);
+ struct sockaddr_storage address;
+
+ memcpy(&address, addr, addrlen);
+
+ return sock->ops->connect(sock, (struct sockaddr *)&address, addrlen, flags);
}
EXPORT_SYMBOL(kernel_connect);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 085/600] drm/amd/display: ensure async flips are only accepted for fast updates
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (83 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 084/600] net: Avoid address overwrite in kernel_connect Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 086/600] udf: Check consistency of Space Bitmap Descriptor Greg Kroah-Hartman
` (525 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Harry Wentland, Hamza Mahfooz,
Alex Deucher, Mario Limonciello
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hamza Mahfooz <hamza.mahfooz@amd.com>
commit a7c0cad0dc060bb77e9c9d235d68441b0fc69507 upstream.
We should be checking to see if async flips are supported in
amdgpu_dm_atomic_check() (i.e. not dm_crtc_helper_atomic_check()). Also,
async flipping isn't supported if a plane's framebuffer changes memory
domains during an atomic commit. So, move the check from
dm_crtc_helper_atomic_check() to amdgpu_dm_atomic_check() and check if
the memory domain has changed in amdgpu_dm_atomic_check().
Cc: stable@vger.kernel.org
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2733
Fixes: c1e18c44dc7f ("drm/amd/display: only accept async flips for fast updates")
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 24 ++++++++++++++---
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c | 12 --------
2 files changed, 21 insertions(+), 15 deletions(-)
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -7858,10 +7858,12 @@ static void amdgpu_dm_commit_planes(stru
* fast updates.
*/
if (crtc->state->async_flip &&
- acrtc_state->update_type != UPDATE_TYPE_FAST)
+ (acrtc_state->update_type != UPDATE_TYPE_FAST ||
+ get_mem_type(old_plane_state->fb) != get_mem_type(fb)))
drm_warn_once(state->dev,
"[PLANE:%d:%s] async flip with non-fast update\n",
plane->base.id, plane->name);
+
bundle->flip_addrs[planes_count].flip_immediate =
crtc->state->async_flip &&
acrtc_state->update_type == UPDATE_TYPE_FAST &&
@@ -9813,6 +9815,11 @@ static int amdgpu_dm_atomic_check(struct
/* Remove exiting planes if they are modified */
for_each_oldnew_plane_in_state_reverse(state, plane, old_plane_state, new_plane_state, i) {
+ if (old_plane_state->fb && new_plane_state->fb &&
+ get_mem_type(old_plane_state->fb) !=
+ get_mem_type(new_plane_state->fb))
+ lock_and_validation_needed = true;
+
ret = dm_update_plane_state(dc, state, plane,
old_plane_state,
new_plane_state,
@@ -10064,9 +10071,20 @@ static int amdgpu_dm_atomic_check(struct
struct dm_crtc_state *dm_new_crtc_state =
to_dm_crtc_state(new_crtc_state);
+ /*
+ * Only allow async flips for fast updates that don't change
+ * the FB pitch, the DCC state, rotation, etc.
+ */
+ if (new_crtc_state->async_flip && lock_and_validation_needed) {
+ drm_dbg_atomic(crtc->dev,
+ "[CRTC:%d:%s] async flips are only supported for fast updates\n",
+ crtc->base.id, crtc->name);
+ ret = -EINVAL;
+ goto fail;
+ }
+
dm_new_crtc_state->update_type = lock_and_validation_needed ?
- UPDATE_TYPE_FULL :
- UPDATE_TYPE_FAST;
+ UPDATE_TYPE_FULL : UPDATE_TYPE_FAST;
}
/* Must be success */
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crtc.c
@@ -406,18 +406,6 @@ static int dm_crtc_helper_atomic_check(s
return -EINVAL;
}
- /*
- * Only allow async flips for fast updates that don't change the FB
- * pitch, the DCC state, rotation, etc.
- */
- if (crtc_state->async_flip &&
- dm_crtc_state->update_type != UPDATE_TYPE_FAST) {
- drm_dbg_atomic(crtc->dev,
- "[CRTC:%d:%s] async flips are only supported for fast updates\n",
- crtc->base.id, crtc->name);
- return -EINVAL;
- }
-
/* In some use cases, like reset, no stream is attached */
if (!dm_crtc_state->stream)
return 0;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 086/600] udf: Check consistency of Space Bitmap Descriptor
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (84 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 085/600] drm/amd/display: ensure async flips are only accepted for fast updates Greg Kroah-Hartman
@ 2023-09-11 13:41 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 087/600] udf: Handle error when adding extent to a file Greg Kroah-Hartman
` (524 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:41 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Vladislav Efanov, Jan Kara
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vladislav Efanov <VEfanov@ispras.ru>
commit 1e0d4adf17e7ef03281d7b16555e7c1508c8ed2d upstream.
Bits, which are related to Bitmap Descriptor logical blocks,
are not reset when buffer headers are allocated for them. As the
result, these logical blocks can be treated as free and
be used for other blocks.This can cause usage of one buffer header
for several types of data. UDF issues WARNING in this situation:
WARNING: CPU: 0 PID: 2703 at fs/udf/inode.c:2014
__udf_add_aext+0x685/0x7d0 fs/udf/inode.c:2014
RIP: 0010:__udf_add_aext+0x685/0x7d0 fs/udf/inode.c:2014
Call Trace:
udf_setup_indirect_aext+0x573/0x880 fs/udf/inode.c:1980
udf_add_aext+0x208/0x2e0 fs/udf/inode.c:2067
udf_insert_aext fs/udf/inode.c:2233 [inline]
udf_update_extents fs/udf/inode.c:1181 [inline]
inode_getblk+0x1981/0x3b70 fs/udf/inode.c:885
Found by Linux Verification Center (linuxtesting.org) with syzkaller.
[JK: Somewhat cleaned up the boundary checks]
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Vladislav Efanov <VEfanov@ispras.ru>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/udf/balloc.c | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
--- a/fs/udf/balloc.c
+++ b/fs/udf/balloc.c
@@ -36,18 +36,41 @@ static int read_block_bitmap(struct supe
unsigned long bitmap_nr)
{
struct buffer_head *bh = NULL;
- int retval = 0;
+ int i;
+ int max_bits, off, count;
struct kernel_lb_addr loc;
loc.logicalBlockNum = bitmap->s_extPosition;
loc.partitionReferenceNum = UDF_SB(sb)->s_partition;
bh = udf_tread(sb, udf_get_lb_pblock(sb, &loc, block));
+ bitmap->s_block_bitmap[bitmap_nr] = bh;
if (!bh)
- retval = -EIO;
+ return -EIO;
- bitmap->s_block_bitmap[bitmap_nr] = bh;
- return retval;
+ /* Check consistency of Space Bitmap buffer. */
+ max_bits = sb->s_blocksize * 8;
+ if (!bitmap_nr) {
+ off = sizeof(struct spaceBitmapDesc) << 3;
+ count = min(max_bits - off, bitmap->s_nr_groups);
+ } else {
+ /*
+ * Rough check if bitmap number is too big to have any bitmap
+ * blocks reserved.
+ */
+ if (bitmap_nr >
+ (bitmap->s_nr_groups >> (sb->s_blocksize_bits + 3)) + 2)
+ return 0;
+ off = 0;
+ count = bitmap->s_nr_groups - bitmap_nr * max_bits +
+ (sizeof(struct spaceBitmapDesc) << 3);
+ count = min(count, max_bits);
+ }
+
+ for (i = 0; i < count; i++)
+ if (udf_test_bit(i + off, bh->b_data))
+ return -EFSCORRUPTED;
+ return 0;
}
static int __load_block_bitmap(struct super_block *sb,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 087/600] udf: Handle error when adding extent to a file
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (85 preceding siblings ...)
2023-09-11 13:41 ` [PATCH 6.1 086/600] udf: Check consistency of Space Bitmap Descriptor Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 088/600] Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN Greg Kroah-Hartman
` (523 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jan Kara
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <jack@suse.cz>
commit 19fd80de0a8b5170ef34704c8984cca920dffa59 upstream.
When adding extent to a file fails, so far we've silently squelshed the
error. Make sure to propagate it up properly.
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/udf/inode.c | 41 +++++++++++++++++++++++++++--------------
1 file changed, 27 insertions(+), 14 deletions(-)
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -57,15 +57,15 @@ static int udf_update_inode(struct inode
static int udf_sync_inode(struct inode *inode);
static int udf_alloc_i_data(struct inode *inode, size_t size);
static sector_t inode_getblk(struct inode *, sector_t, int *, int *);
-static int8_t udf_insert_aext(struct inode *, struct extent_position,
- struct kernel_lb_addr, uint32_t);
+static int udf_insert_aext(struct inode *, struct extent_position,
+ struct kernel_lb_addr, uint32_t);
static void udf_split_extents(struct inode *, int *, int, udf_pblk_t,
struct kernel_long_ad *, int *);
static void udf_prealloc_extents(struct inode *, int, int,
struct kernel_long_ad *, int *);
static void udf_merge_extents(struct inode *, struct kernel_long_ad *, int *);
-static void udf_update_extents(struct inode *, struct kernel_long_ad *, int,
- int, struct extent_position *);
+static int udf_update_extents(struct inode *, struct kernel_long_ad *, int,
+ int, struct extent_position *);
static int udf_get_block(struct inode *, sector_t, struct buffer_head *, int);
static void __udf_clear_extent_cache(struct inode *inode)
@@ -888,7 +888,9 @@ static sector_t inode_getblk(struct inod
/* write back the new extents, inserting new extents if the new number
* of extents is greater than the old number, and deleting extents if
* the new number of extents is less than the old number */
- udf_update_extents(inode, laarr, startnum, endnum, &prev_epos);
+ *err = udf_update_extents(inode, laarr, startnum, endnum, &prev_epos);
+ if (*err < 0)
+ goto out_free;
newblock = udf_get_pblock(inode->i_sb, newblocknum,
iinfo->i_location.partitionReferenceNum, 0);
@@ -1156,21 +1158,30 @@ static void udf_merge_extents(struct ino
}
}
-static void udf_update_extents(struct inode *inode, struct kernel_long_ad *laarr,
- int startnum, int endnum,
- struct extent_position *epos)
+static int udf_update_extents(struct inode *inode, struct kernel_long_ad *laarr,
+ int startnum, int endnum,
+ struct extent_position *epos)
{
int start = 0, i;
struct kernel_lb_addr tmploc;
uint32_t tmplen;
+ int err;
if (startnum > endnum) {
for (i = 0; i < (startnum - endnum); i++)
udf_delete_aext(inode, *epos);
} else if (startnum < endnum) {
for (i = 0; i < (endnum - startnum); i++) {
- udf_insert_aext(inode, *epos, laarr[i].extLocation,
- laarr[i].extLength);
+ err = udf_insert_aext(inode, *epos,
+ laarr[i].extLocation,
+ laarr[i].extLength);
+ /*
+ * If we fail here, we are likely corrupting the extent
+ * list and leaking blocks. At least stop early to
+ * limit the damage.
+ */
+ if (err < 0)
+ return err;
udf_next_aext(inode, epos, &laarr[i].extLocation,
&laarr[i].extLength, 1);
start++;
@@ -1182,6 +1193,7 @@ static void udf_update_extents(struct in
udf_write_aext(inode, epos, &laarr[i].extLocation,
laarr[i].extLength, 1);
}
+ return 0;
}
struct buffer_head *udf_bread(struct inode *inode, udf_pblk_t block,
@@ -2210,12 +2222,13 @@ int8_t udf_current_aext(struct inode *in
return etype;
}
-static int8_t udf_insert_aext(struct inode *inode, struct extent_position epos,
- struct kernel_lb_addr neloc, uint32_t nelen)
+static int udf_insert_aext(struct inode *inode, struct extent_position epos,
+ struct kernel_lb_addr neloc, uint32_t nelen)
{
struct kernel_lb_addr oeloc;
uint32_t oelen;
int8_t etype;
+ int err;
if (epos.bh)
get_bh(epos.bh);
@@ -2225,10 +2238,10 @@ static int8_t udf_insert_aext(struct ino
neloc = oeloc;
nelen = (etype << 30) | oelen;
}
- udf_add_aext(inode, &epos, &neloc, nelen, 1);
+ err = udf_add_aext(inode, &epos, &neloc, nelen, 1);
brelse(epos.bh);
- return (nelen >> 30);
+ return err;
}
int8_t udf_delete_aext(struct inode *inode, struct extent_position epos)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 088/600] Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (86 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 087/600] udf: Handle error when adding extent to a file Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 089/600] Revert "PCI: tegra194: Enable support for 256 Byte payload" Greg Kroah-Hartman
` (522 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Werner Sembach, Dmitry Torokhov
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Werner Sembach <wse@tuxedocomputers.com>
commit eb09074bdb05ffd6bfe77f8b4a41b76ef78c997b upstream.
The touchpad of this device is both connected via PS/2 and i2c. This causes
strange behavior when both driver fight for control. The easy fix is to
prevent the PS/2 driver from accessing the mouse port as the full feature
set of the touchpad is only supported in the i2c interface anyway.
The strange behavior in this case is, that when an external screen is
connected and the notebook is closed, the pointer on the external screen is
moving to the lower right corner. When the notebook is opened again, this
movement stops, but the touchpad clicks are unresponsive afterwards until
reboot.
Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230607173331.851192-1-wse@tuxedocomputers.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/input/serio/i8042-acpipnpio.h | 7 +++++++
1 file changed, 7 insertions(+)
--- a/drivers/input/serio/i8042-acpipnpio.h
+++ b/drivers/input/serio/i8042-acpipnpio.h
@@ -1281,6 +1281,13 @@ static const struct dmi_system_id i8042_
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
},
+ /* See comment on TUXEDO InfinityBook S17 Gen6 / Clevo NS70MU above */
+ {
+ .matches = {
+ DMI_MATCH(DMI_BOARD_NAME, "PD5x_7xPNP_PNR_PNN_PNT"),
+ },
+ .driver_data = (void *)(SERIO_QUIRK_NOAUX)
+ },
{
.matches = {
DMI_MATCH(DMI_BOARD_NAME, "X170SM"),
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 089/600] Revert "PCI: tegra194: Enable support for 256 Byte payload"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (87 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 088/600] Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 090/600] Revert "net: macsec: preserve ingress frame ordering" Greg Kroah-Hartman
` (521 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vidya Sagar,
Krzysztof Wilczyński, Jon Hunter
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vidya Sagar <vidyas@nvidia.com>
commit ebfde1584d9f037b6309fc682c96e22dac7bcb7a upstream.
After commit 4fb8e46c1bc4 ("PCI: tegra194: Enable support for 256 Byte
payload"), we initialize MPS=256 for tegra194 Root Ports before enumerating
the hierarchy.
Consider an Endpoint that supports only MPS=128. In the default situation
(CONFIG_PCIE_BUS_DEFAULT set and no "pci=pcie_bus_*" parameter), Linux
tries to configure the MPS of every device to match the upstream bridge.
If the Endpoint is directly below the Root Port, Linux can reduce the Root
Port MPS to 128 to match the Endpoint. But if there's a switch in the
middle, Linux doesn't reduce the Root Port MPS because other devices below
the switch may already be configured with MPS larger than 128.
This scenario results in uncorrectable Malformed TLP errors if the Root
Port sends TLPs with payloads larger than 128 bytes. These errors can
be avoided by using the "pci=pcie_bus_safe" parameter, but it doesn't
seem to be a good idea to always have this parameter even for basic
functionality to work.
Revert commit 4fb8e46c1bc4 ("PCI: tegra194: Enable support for 256 Byte
payload") so the Root Ports default to MPS=128, which all devices
support.
If peer-to-peer DMA is not required, one can use "pci=pcie_bus_perf" to
get the benefit of larger MPS settings.
[bhelgaas: commit log; kwilczynski: retain "u16 val_16" declaration at
the top, add missing acked by tag]
Fixes: 4fb8e46c1bc4 ("PCI: tegra194: Enable support for 256 Byte payload")
Link: https://lore.kernel.org/linux-pci/20230619102604.3735001-1-vidyas@nvidia.com
Signed-off-by: Vidya Sagar <vidyas@nvidia.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Acked-by: Jon Hunter <jonathanh@nvidia.com>
Cc: stable@vger.kernel.org # v6.0-rc1+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/controller/dwc/pcie-tegra194.c | 10 ----------
1 file changed, 10 deletions(-)
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
@@ -879,11 +879,6 @@ static int tegra_pcie_dw_host_init(struc
pcie->pcie_cap_base = dw_pcie_find_capability(&pcie->pci,
PCI_CAP_ID_EXP);
- val_16 = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base + PCI_EXP_DEVCTL);
- val_16 &= ~PCI_EXP_DEVCTL_PAYLOAD;
- val_16 |= PCI_EXP_DEVCTL_PAYLOAD_256B;
- dw_pcie_writew_dbi(pci, pcie->pcie_cap_base + PCI_EXP_DEVCTL, val_16);
-
val = dw_pcie_readl_dbi(pci, PCI_IO_BASE);
val &= ~(IO_BASE_IO_DECODE | IO_BASE_IO_DECODE_BIT8);
dw_pcie_writel_dbi(pci, PCI_IO_BASE, val);
@@ -1872,11 +1867,6 @@ static void pex_ep_event_pex_rst_deasser
pcie->pcie_cap_base = dw_pcie_find_capability(&pcie->pci,
PCI_CAP_ID_EXP);
- val_16 = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base + PCI_EXP_DEVCTL);
- val_16 &= ~PCI_EXP_DEVCTL_PAYLOAD;
- val_16 |= PCI_EXP_DEVCTL_PAYLOAD_256B;
- dw_pcie_writew_dbi(pci, pcie->pcie_cap_base + PCI_EXP_DEVCTL, val_16);
-
/* Clear Slot Clock Configuration bit if SRNS configuration */
if (pcie->enable_srns) {
val_16 = dw_pcie_readw_dbi(pci, pcie->pcie_cap_base +
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 090/600] Revert "net: macsec: preserve ingress frame ordering"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (88 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 089/600] Revert "PCI: tegra194: Enable support for 256 Byte payload" Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 091/600] tools lib subcmd: Add install target Greg Kroah-Hartman
` (520 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Sabrina Dubroca, Paolo Abeni
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sabrina Dubroca <sd@queasysnail.net>
commit d3287e4038ca4f81e02067ab72d087af7224c68b upstream.
This reverts commit ab046a5d4be4c90a3952a0eae75617b49c0cb01b.
It was trying to work around an issue at the crypto layer by excluding
ASYNC implementations of gcm(aes), because a bug in the AESNI version
caused reordering when some requests bypassed the cryptd queue while
older requests were still pending on the queue.
This was fixed by commit 38b2f68b4264 ("crypto: aesni - Fix cryptd
reordering problem on gcm"), which pre-dates ab046a5d4be4.
Herbert Xu confirmed that all ASYNC implementations are expected to
maintain the ordering of completions wrt requests, so we can use them
in MACsec.
On my test machine, this restores the performance of a single netperf
instance, from 1.4Gbps to 4.4Gbps.
Link: https://lore.kernel.org/netdev/9328d206c5d9f9239cae27e62e74de40b258471d.1692279161.git.sd@queasysnail.net/T/
Link: https://lore.kernel.org/netdev/1b0cec71-d084-8153-2ba4-72ce71abeb65@byu.edu/
Link: https://lore.kernel.org/netdev/d335ddaa-18dc-f9f0-17ee-9783d3b2ca29@mailbox.tu-dresden.de/
Fixes: ab046a5d4be4 ("net: macsec: preserve ingress frame ordering")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Link: https://lore.kernel.org/r/11c952469d114db6fb29242e1d9545e61f52f512.1693757159.git.sd@queasysnail.net
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/macsec.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -1331,8 +1331,7 @@ static struct crypto_aead *macsec_alloc_
struct crypto_aead *tfm;
int ret;
- /* Pick a sync gcm(aes) cipher to ensure order is preserved. */
- tfm = crypto_alloc_aead("gcm(aes)", 0, CRYPTO_ALG_ASYNC);
+ tfm = crypto_alloc_aead("gcm(aes)", 0, 0);
if (IS_ERR(tfm))
return tfm;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 091/600] tools lib subcmd: Add install target
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (89 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 090/600] Revert "net: macsec: preserve ingress frame ordering" Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 092/600] tools lib subcmd: Make install_headers clearer Greg Kroah-Hartman
` (519 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Namhyung Kim,
Alexander Shishkin, Andrii Nakryiko, Jiri Olsa, Mark Rutland,
Masahiro Yamada, Nick Desaulniers, Nicolas Schier, Peter Zijlstra,
Stephane Eranian, bpf, Arnaldo Carvalho de Melo,
Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit 630ae80ea1dd253609cb50cff87f3248f901aca3 upstream.
This allows libsubcmd to be installed as a dependency.
Signed-off-by: Ian Rogers <irogers@google.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: bpf@vger.kernel.org
Link: http://lore.kernel.org/lkml/20221109184914.1357295-3-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/lib/subcmd/Makefile | 49 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
--- a/tools/lib/subcmd/Makefile
+++ b/tools/lib/subcmd/Makefile
@@ -17,6 +17,15 @@ RM = rm -f
MAKEFLAGS += --no-print-directory
+INSTALL = install
+
+# Use DESTDIR for installing into a different root directory.
+# This is useful for building a package. The program will be
+# installed in this directory as if it was the root directory.
+# Then the build tool can move it later.
+DESTDIR ?=
+DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
+
LIBFILE = $(OUTPUT)libsubcmd.a
CFLAGS := -ggdb3 -Wall -Wextra -std=gnu99 -fPIC
@@ -48,6 +57,18 @@ CFLAGS += $(EXTRA_WARNINGS) $(EXTRA_CFLA
SUBCMD_IN := $(OUTPUT)libsubcmd-in.o
+ifeq ($(LP64), 1)
+ libdir_relative = lib64
+else
+ libdir_relative = lib
+endif
+
+prefix ?=
+libdir = $(prefix)/$(libdir_relative)
+
+# Shell quotes
+libdir_SQ = $(subst ','\'',$(libdir))
+
all:
export srctree OUTPUT CC LD CFLAGS V
@@ -61,6 +82,34 @@ $(SUBCMD_IN): FORCE
$(LIBFILE): $(SUBCMD_IN)
$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(SUBCMD_IN)
+define do_install_mkdir
+ if [ ! -d '$(DESTDIR_SQ)$1' ]; then \
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \
+ fi
+endef
+
+define do_install
+ if [ ! -d '$(DESTDIR_SQ)$2' ]; then \
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \
+ fi; \
+ $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2'
+endef
+
+install_lib: $(LIBFILE)
+ $(call QUIET_INSTALL, $(LIBFILE)) \
+ $(call do_install_mkdir,$(libdir_SQ)); \
+ cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ)
+
+install_headers:
+ $(call QUIET_INSTALL, headers) \
+ $(call do_install,exec-cmd.h,$(prefix)/include/subcmd,644); \
+ $(call do_install,help.h,$(prefix)/include/subcmd,644); \
+ $(call do_install,pager.h,$(prefix)/include/subcmd,644); \
+ $(call do_install,parse-options.h,$(prefix)/include/subcmd,644); \
+ $(call do_install,run-command.h,$(prefix)/include/subcmd,644);
+
+install: install_lib install_headers
+
clean:
$(call QUIET_CLEAN, libsubcmd) $(RM) $(LIBFILE); \
find $(or $(OUTPUT),.) -name \*.o -or -name \*.o.cmd -or -name \*.o.d | xargs $(RM)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 092/600] tools lib subcmd: Make install_headers clearer
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (90 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 091/600] tools lib subcmd: Add install target Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 093/600] tools lib subcmd: Add dependency test to install_headers Greg Kroah-Hartman
` (518 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Alexander Shishkin,
Alexei Starovoitov, Andrii Nakryiko, Daniel Borkmann, Hao Luo,
Ingo Molnar, Jiri Olsa, John Fastabend, KP Singh, Mark Rutland,
Martin KaFai Lau, Masahiro Yamada, Namhyung Kim, Nicolas Schier,
Peter Zijlstra, Song Liu, Stanislav Fomichev, Stephane Eranian,
Yonghong Song, bpf, Arnaldo Carvalho de Melo, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit 77dce6890a2a715b186bdc149c843571a5bb47df upstream.
Add libsubcmd to the name so that this install_headers build appears
different to similar targets in different libraries.
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Andrii Nakryiko <andrii@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Hao Luo <haoluo@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: John Fastabend <john.fastabend@gmail.com>
Cc: KP Singh <kpsingh@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Martin KaFai Lau <martin.lau@linux.dev>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Song Liu <song@kernel.org>
Cc: Stanislav Fomichev <sdf@google.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Yonghong Song <yhs@fb.com>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20221117004356.279422-6-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/lib/subcmd/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/tools/lib/subcmd/Makefile
+++ b/tools/lib/subcmd/Makefile
@@ -101,7 +101,7 @@ install_lib: $(LIBFILE)
cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ)
install_headers:
- $(call QUIET_INSTALL, headers) \
+ $(call QUIET_INSTALL, libsubcmd_headers) \
$(call do_install,exec-cmd.h,$(prefix)/include/subcmd,644); \
$(call do_install,help.h,$(prefix)/include/subcmd,644); \
$(call do_install,pager.h,$(prefix)/include/subcmd,644); \
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 093/600] tools lib subcmd: Add dependency test to install_headers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (91 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 092/600] tools lib subcmd: Make install_headers clearer Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 094/600] tools/resolve_btfids: Use pkg-config to locate libelf Greg Kroah-Hartman
` (517 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Alexander Shishkin,
Ingo Molnar, Jiri Olsa, Josh Poimboeuf, Mark Rutland,
Masahiro Yamada, Namhyung Kim, Nathan Chancellor,
Nick Desaulniers, Nicolas Schier, Peter Zijlstra,
Stephane Eranian, Tom Rix, bpf, llvm, Arnaldo Carvalho de Melo
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit 5d890591db6bed8ca69bd4bfe0cdaca372973033 upstream.
Compute the headers to be installed from their source headers and make
each have its own build target to install it. Using dependencies
avoids headers being reinstalled and getting a new timestamp which
then causes files that depend on the header to be rebuilt.
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Rix <trix@redhat.com>
Cc: bpf@vger.kernel.org
Cc: llvm@lists.linux.dev
Link: https://lore.kernel.org/r/20221202045743.2639466-4-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/lib/subcmd/Makefile | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
--- a/tools/lib/subcmd/Makefile
+++ b/tools/lib/subcmd/Makefile
@@ -89,10 +89,10 @@ define do_install_mkdir
endef
define do_install
- if [ ! -d '$(DESTDIR_SQ)$2' ]; then \
- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \
+ if [ ! -d '$2' ]; then \
+ $(INSTALL) -d -m 755 '$2'; \
fi; \
- $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2'
+ $(INSTALL) $1 $(if $3,-m $3,) '$2'
endef
install_lib: $(LIBFILE)
@@ -100,13 +100,16 @@ install_lib: $(LIBFILE)
$(call do_install_mkdir,$(libdir_SQ)); \
cp -fpR $(LIBFILE) $(DESTDIR)$(libdir_SQ)
-install_headers:
- $(call QUIET_INSTALL, libsubcmd_headers) \
- $(call do_install,exec-cmd.h,$(prefix)/include/subcmd,644); \
- $(call do_install,help.h,$(prefix)/include/subcmd,644); \
- $(call do_install,pager.h,$(prefix)/include/subcmd,644); \
- $(call do_install,parse-options.h,$(prefix)/include/subcmd,644); \
- $(call do_install,run-command.h,$(prefix)/include/subcmd,644);
+HDRS := exec-cmd.h help.h pager.h parse-options.h run-command.h
+INSTALL_HDRS_PFX := $(DESTDIR)$(prefix)/include/subcmd
+INSTALL_HDRS := $(addprefix $(INSTALL_HDRS_PFX)/, $(HDRS))
+
+$(INSTALL_HDRS): $(INSTALL_HDRS_PFX)/%.h: %.h
+ $(call QUIET_INSTALL, $@) \
+ $(call do_install,$<,$(INSTALL_HDRS_PFX)/,644)
+
+install_headers: $(INSTALL_HDRS)
+ $(call QUIET_INSTALL, libsubcmd_headers)
install: install_lib install_headers
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 094/600] tools/resolve_btfids: Use pkg-config to locate libelf
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (92 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 093/600] tools lib subcmd: Add dependency test to install_headers Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 095/600] tools/resolve_btfids: Install subcmd headers Greg Kroah-Hartman
` (516 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shen Jiamin, Daniel Borkmann,
Jiri Olsa, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shen Jiamin <shen_jiamin@comp.nus.edu.sg>
commit 0e43662e61f2569500ab83b8188c065603530785 upstream.
When libelf was not installed in the standard location, it cannot be
located by the current building config.
Use pkg-config to help locate libelf in such cases.
Signed-off-by: Shen Jiamin <shen_jiamin@comp.nus.edu.sg>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20221215044703.400139-1-shen_jiamin@comp.nus.edu.sg
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -56,13 +56,17 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[c
DESTDIR=$(LIBBPF_DESTDIR) prefix= EXTRA_CFLAGS="$(CFLAGS)" \
$(abspath $@) install_headers
+LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
+LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
+
CFLAGS += -g \
-I$(srctree)/tools/include \
-I$(srctree)/tools/include/uapi \
-I$(LIBBPF_INCLUDE) \
- -I$(SUBCMD_SRC)
+ -I$(SUBCMD_SRC) \
+ $(LIBELF_FLAGS)
-LIBS = -lelf -lz
+LIBS = $(LIBELF_LIBS) -lz
export srctree OUTPUT CFLAGS Q
include $(srctree)/tools/build/Makefile.include
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 095/600] tools/resolve_btfids: Install subcmd headers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (93 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 094/600] tools/resolve_btfids: Use pkg-config to locate libelf Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 096/600] tools/resolve_btfids: Alter how HOSTCC is forced Greg Kroah-Hartman
` (515 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Daniel Borkmann,
Jiri Olsa, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit af03299d8536d62b49c7f3cb929349eb2d66bcd5 upstream.
Previously tools/lib/subcmd was added to the include path, switch to
installing the headers and then including from that directory. This
avoids dependencies on headers internal to tools/lib/subcmd. Add the
missing subcmd directory to the affected #include.
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20230124064324.672022-1-irogers@google.com
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 19 ++++++++++++++-----
tools/bpf/resolve_btfids/main.c | 2 +-
2 files changed, 15 insertions(+), 6 deletions(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -35,21 +35,29 @@ SUBCMD_SRC := $(srctree)/tools/lib/subcm
BPFOBJ := $(OUTPUT)/libbpf/libbpf.a
LIBBPF_OUT := $(abspath $(dir $(BPFOBJ)))/
SUBCMDOBJ := $(OUTPUT)/libsubcmd/libsubcmd.a
+SUBCMD_OUT := $(abspath $(dir $(SUBCMDOBJ)))/
LIBBPF_DESTDIR := $(LIBBPF_OUT)
LIBBPF_INCLUDE := $(LIBBPF_DESTDIR)include
+SUBCMD_DESTDIR := $(SUBCMD_OUT)
+SUBCMD_INCLUDE := $(SUBCMD_DESTDIR)include
+
BINARY := $(OUTPUT)/resolve_btfids
BINARY_IN := $(BINARY)-in.o
all: $(BINARY)
+prepare: $(BPFOBJ) $(SUBCMDOBJ)
+
$(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_OUT):
$(call msg,MKDIR,,$@)
$(Q)mkdir -p $(@)
$(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd
- $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(abspath $(dir $@))/ $(abspath $@)
+ $(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \
+ DESTDIR=$(SUBCMD_DESTDIR) prefix= \
+ $(abspath $@) install_headers
$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT)
$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \
@@ -63,7 +71,7 @@ CFLAGS += -g \
-I$(srctree)/tools/include \
-I$(srctree)/tools/include/uapi \
-I$(LIBBPF_INCLUDE) \
- -I$(SUBCMD_SRC) \
+ -I$(SUBCMD_INCLUDE) \
$(LIBELF_FLAGS)
LIBS = $(LIBELF_LIBS) -lz
@@ -71,7 +79,7 @@ LIBS = $(LIBELF_LIBS) -lz
export srctree OUTPUT CFLAGS Q
include $(srctree)/tools/build/Makefile.include
-$(BINARY_IN): $(BPFOBJ) fixdep FORCE | $(OUTPUT)
+$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)
$(Q)$(MAKE) $(build)=resolve_btfids
$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
@@ -83,7 +91,8 @@ clean_objects := $(wildcard $(OUTPUT)/*.
$(OUTPUT)/.*.o.d \
$(LIBBPF_OUT) \
$(LIBBPF_DESTDIR) \
- $(OUTPUT)/libsubcmd \
+ $(SUBCMD_OUT) \
+ $(SUBCMD_DESTDIR) \
$(OUTPUT)/resolve_btfids)
ifneq ($(clean_objects),)
@@ -100,4 +109,4 @@ tags:
FORCE:
-.PHONY: all FORCE clean tags
+.PHONY: all FORCE clean tags prepare
--- a/tools/bpf/resolve_btfids/main.c
+++ b/tools/bpf/resolve_btfids/main.c
@@ -75,7 +75,7 @@
#include <linux/err.h>
#include <bpf/btf.h>
#include <bpf/libbpf.h>
-#include <parse-options.h>
+#include <subcmd/parse-options.h>
#define BTF_IDS_SECTION ".BTF_ids"
#define BTF_ID "__BTF_ID__"
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 096/600] tools/resolve_btfids: Alter how HOSTCC is forced
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (94 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 095/600] tools/resolve_btfids: Install subcmd headers Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 097/600] tools/resolve_btfids: Compile resolve_btfids as host program Greg Kroah-Hartman
` (514 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Daniel Borkmann,
Jiri Olsa, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit 13e07691a16ff31b209fbfce25c01ff296b05e45 upstream.
HOSTCC is always wanted when building. Setting CC to HOSTCC happens
after tools/scripts/Makefile.include is included, meaning flags are
set assuming say CC is gcc, but then it can be later set to HOSTCC
which may be clang. tools/scripts/Makefile.include is needed for host
set up and common macros in objtool's Makefile. Rather than override
CC to HOSTCC, just pass CC as HOSTCC to Makefile.build, the libsubcmd
builds and the linkage step. This means the Makefiles don't see things
like CC changing and tool flag determination, and similar, work
properly.
Also, clear the passed subdir as otherwise an outer build may break by
inadvertently passing an inappropriate value.
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20230124064324.672022-2-irogers@google.com
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -18,14 +18,11 @@ else
endif
# always use the host compiler
-AR = $(HOSTAR)
-CC = $(HOSTCC)
-LD = $(HOSTLD)
-ARCH = $(HOSTARCH)
+HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \
+ EXTRA_CFLAGS="$(HOSTCFLAGS) $(KBUILD_HOSTCFLAGS)"
+
RM ?= rm
CROSS_COMPILE =
-CFLAGS := $(KBUILD_HOSTCFLAGS)
-LDFLAGS := $(KBUILD_HOSTLDFLAGS)
OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
@@ -56,12 +53,12 @@ $(OUTPUT) $(OUTPUT)/libsubcmd $(LIBBPF_O
$(SUBCMDOBJ): fixdep FORCE | $(OUTPUT)/libsubcmd
$(Q)$(MAKE) -C $(SUBCMD_SRC) OUTPUT=$(SUBCMD_OUT) \
- DESTDIR=$(SUBCMD_DESTDIR) prefix= \
+ DESTDIR=$(SUBCMD_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \
$(abspath $@) install_headers
$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUT)
$(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) OUTPUT=$(LIBBPF_OUT) \
- DESTDIR=$(LIBBPF_DESTDIR) prefix= EXTRA_CFLAGS="$(CFLAGS)" \
+ DESTDIR=$(LIBBPF_DESTDIR) $(HOST_OVERRIDES) prefix= subdir= \
$(abspath $@) install_headers
LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
@@ -80,11 +77,11 @@ export srctree OUTPUT CFLAGS Q
include $(srctree)/tools/build/Makefile.include
$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)
- $(Q)$(MAKE) $(build)=resolve_btfids
+ $(Q)$(MAKE) $(build)=resolve_btfids $(HOST_OVERRIDES)
$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
$(call msg,LINK,$@)
- $(Q)$(CC) $(BINARY_IN) $(LDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS)
+ $(Q)$(HOSTCC) $(BINARY_IN) $(KBUILD_HOSTLDFLAGS) -o $@ $(BPFOBJ) $(SUBCMDOBJ) $(LIBS)
clean_objects := $(wildcard $(OUTPUT)/*.o \
$(OUTPUT)/.*.o.cmd \
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 097/600] tools/resolve_btfids: Compile resolve_btfids as host program
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (95 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 096/600] tools/resolve_btfids: Alter how HOSTCC is forced Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 098/600] tools/resolve_btfids: Tidy HOST_OVERRIDES Greg Kroah-Hartman
` (513 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nathan Chancellor, Jiri Olsa,
Daniel Borkmann, Ian Rogers
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiri Olsa <jolsa@kernel.org>
commit 56a2df7615fa050cc67b89245b2a482849077939 upstream.
Making resolve_btfids to be compiled as host program so
we can avoid cross compile issues as reported by Nathan.
Also we no longer need HOST_OVERRIDES for BINARY target,
just for 'prepare' targets.
Fixes: 13e07691a16f ("tools/resolve_btfids: Alter how HOSTCC is forced")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Nathan Chancellor <nathan@kernel.org>
Acked-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/bpf/20230202112839.1131892-1-jolsa@kernel.org
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Build | 4 +++-
tools/bpf/resolve_btfids/Makefile | 9 ++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
--- a/tools/bpf/resolve_btfids/Build
+++ b/tools/bpf/resolve_btfids/Build
@@ -1,3 +1,5 @@
+hostprogs := resolve_btfids
+
resolve_btfids-y += main.o
resolve_btfids-y += rbtree.o
resolve_btfids-y += zalloc.o
@@ -7,4 +9,4 @@ resolve_btfids-y += str_error_r.o
$(OUTPUT)%.o: ../../lib/%.c FORCE
$(call rule_mkdir)
- $(call if_changed_dep,cc_o_c)
+ $(call if_changed_dep,host_cc_o_c)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -22,6 +22,9 @@ HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(H
EXTRA_CFLAGS="$(HOSTCFLAGS) $(KBUILD_HOSTCFLAGS)"
RM ?= rm
+HOSTCC ?= gcc
+HOSTLD ?= ld
+HOSTAR ?= ar
CROSS_COMPILE =
OUTPUT ?= $(srctree)/tools/bpf/resolve_btfids/
@@ -64,7 +67,7 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[c
LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
-CFLAGS += -g \
+HOSTCFLAGS += -g \
-I$(srctree)/tools/include \
-I$(srctree)/tools/include/uapi \
-I$(LIBBPF_INCLUDE) \
@@ -73,11 +76,11 @@ CFLAGS += -g \
LIBS = $(LIBELF_LIBS) -lz
-export srctree OUTPUT CFLAGS Q
+export srctree OUTPUT HOSTCFLAGS Q HOSTCC HOSTLD HOSTAR
include $(srctree)/tools/build/Makefile.include
$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)
- $(Q)$(MAKE) $(build)=resolve_btfids $(HOST_OVERRIDES)
+ $(Q)$(MAKE) $(build)=resolve_btfids
$(BINARY): $(BPFOBJ) $(SUBCMDOBJ) $(BINARY_IN)
$(call msg,LINK,$@)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 098/600] tools/resolve_btfids: Tidy HOST_OVERRIDES
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (96 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 097/600] tools/resolve_btfids: Compile resolve_btfids as host program Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 099/600] tools/resolve_btfids: Pass HOSTCFLAGS as EXTRA_CFLAGS to prepare targets Greg Kroah-Hartman
` (512 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Rogers, Daniel Borkmann,
Jiri Olsa, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ian Rogers <irogers@google.com>
commit e0975ab92f2406fd3e12834f62dc57cb10404f85 upstream.
Don't set EXTRA_CFLAGS to HOSTCFLAGS, ensure CROSS_COMPILE isn't
passed through.
Signed-off-by: Ian Rogers <irogers@google.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20230202224253.40283-1-irogers@google.com
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -17,9 +17,9 @@ else
MAKEFLAGS=--no-print-directory
endif
-# always use the host compiler
+# Overrides for the prepare step libraries.
HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \
- EXTRA_CFLAGS="$(HOSTCFLAGS) $(KBUILD_HOSTCFLAGS)"
+ CROSS_COMPILE=""
RM ?= rm
HOSTCC ?= gcc
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 099/600] tools/resolve_btfids: Pass HOSTCFLAGS as EXTRA_CFLAGS to prepare targets
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (97 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 098/600] tools/resolve_btfids: Tidy HOST_OVERRIDES Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 100/600] tools/resolve_btfids: Fix setting HOSTCFLAGS Greg Kroah-Hartman
` (511 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thorsten Leemhuis, Jiri Olsa,
Andrii Nakryiko, Ian Rogers, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiri Olsa <jolsa@kernel.org>
commit 2531ba0e4ae67d6d0219400af27805fe52cd28e8 upstream.
Thorsten reported build issue with command line that defined extra
HOSTCFLAGS that were not passed into 'prepare' targets, but were
used to build resolve_btfids objects.
This results in build fail when these objects are linked together:
/usr/bin/ld: /build.../tools/bpf/resolve_btfids//libbpf/libbpf.a(libbpf-in.o):
relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE \
object; recompile with -fPIE
Fixing this by passing HOSTCFLAGS in EXTRA_CFLAGS as part of
HOST_OVERRIDES variable for prepare targets.
[1] https://lore.kernel.org/bpf/f7922132-6645-6316-5675-0ece4197bfff@leemhuis.info/
Fixes: 56a2df7615fa ("tools/resolve_btfids: Compile resolve_btfids as host program")
Reported-by: Thorsten Leemhuis <linux@leemhuis.info>
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Tested-by: Thorsten Leemhuis <linux@leemhuis.info>
Acked-by: Ian Rogers <irogers@google.com>
Link: https://lore.kernel.org/bpf/20230209143735.4112845-1-jolsa@kernel.org
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -19,7 +19,7 @@ endif
# Overrides for the prepare step libraries.
HOST_OVERRIDES := AR="$(HOSTAR)" CC="$(HOSTCC)" LD="$(HOSTLD)" ARCH="$(HOSTARCH)" \
- CROSS_COMPILE=""
+ CROSS_COMPILE="" EXTRA_CFLAGS="$(HOSTCFLAGS)"
RM ?= rm
HOSTCC ?= gcc
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 100/600] tools/resolve_btfids: Fix setting HOSTCFLAGS
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (98 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 099/600] tools/resolve_btfids: Pass HOSTCFLAGS as EXTRA_CFLAGS to prepare targets Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 101/600] reiserfs: Check the return value from __getblk() Greg Kroah-Hartman
` (510 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Viktor Malik, Andrii Nakryiko,
Jiri Olsa, Nathan Chancellor
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Viktor Malik <vmalik@redhat.com>
commit edd75c802855271c8610f58a2fc9e54aefc49ce5 upstream.
Building BPF selftests with custom HOSTCFLAGS yields an error:
# make HOSTCFLAGS="-O2"
[...]
HOSTCC ./tools/testing/selftests/bpf/tools/build/resolve_btfids/main.o
main.c:73:10: fatal error: linux/rbtree.h: No such file or directory
73 | #include <linux/rbtree.h>
| ^~~~~~~~~~~~~~~~
The reason is that tools/bpf/resolve_btfids/Makefile passes header
include paths by extending HOSTCFLAGS which is overridden by setting
HOSTCFLAGS in the make command (because of Makefile rules [1]).
This patch fixes the above problem by passing the include paths via
`HOSTCFLAGS_resolve_btfids` which is used by tools/build/Build.include
and can be combined with overridding HOSTCFLAGS.
[1] https://www.gnu.org/software/make/manual/html_node/Overriding.html
Fixes: 56a2df7615fa ("tools/resolve_btfids: Compile resolve_btfids as host program")
Signed-off-by: Viktor Malik <vmalik@redhat.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/bpf/20230530123352.1308488-1-vmalik@redhat.com
Cc: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/bpf/resolve_btfids/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/tools/bpf/resolve_btfids/Makefile
+++ b/tools/bpf/resolve_btfids/Makefile
@@ -67,7 +67,7 @@ $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[c
LIBELF_FLAGS := $(shell $(HOSTPKG_CONFIG) libelf --cflags 2>/dev/null)
LIBELF_LIBS := $(shell $(HOSTPKG_CONFIG) libelf --libs 2>/dev/null || echo -lelf)
-HOSTCFLAGS += -g \
+HOSTCFLAGS_resolve_btfids += -g \
-I$(srctree)/tools/include \
-I$(srctree)/tools/include/uapi \
-I$(LIBBPF_INCLUDE) \
@@ -76,7 +76,7 @@ HOSTCFLAGS += -g \
LIBS = $(LIBELF_LIBS) -lz
-export srctree OUTPUT HOSTCFLAGS Q HOSTCC HOSTLD HOSTAR
+export srctree OUTPUT HOSTCFLAGS_resolve_btfids Q HOSTCC HOSTLD HOSTAR
include $(srctree)/tools/build/Makefile.include
$(BINARY_IN): fixdep FORCE prepare | $(OUTPUT)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 101/600] reiserfs: Check the return value from __getblk()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (99 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 100/600] tools/resolve_btfids: Fix setting HOSTCFLAGS Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 102/600] eventfd: prevent underflow for eventfd semaphores Greg Kroah-Hartman
` (509 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Matthew Wilcox (Oracle),
butt3rflyh4ck, Edward Shishkin, Christian Brauner, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matthew Wilcox <willy@infradead.org>
[ Upstream commit ba38980add7ffc9e674ada5b4ded4e7d14e76581 ]
__getblk() can return a NULL pointer if we run out of memory or if we
try to access beyond the end of the device; check it and handle it
appropriately.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://lore.kernel.org/lkml/CAFcO6XOacq3hscbXevPQP7sXRoYFz34ZdKPYjmd6k5sZuhGFDw@mail.gmail.com/
Tested-by: butt3rflyh4ck <butterflyhuangxx@gmail.com>
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") # probably introduced in 2002
Acked-by: Edward Shishkin <edward.shishkin@gmail.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/reiserfs/journal.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/fs/reiserfs/journal.c b/fs/reiserfs/journal.c
index 9f62da7471c9e..eb81b4170cb51 100644
--- a/fs/reiserfs/journal.c
+++ b/fs/reiserfs/journal.c
@@ -2326,7 +2326,7 @@ static struct buffer_head *reiserfs_breada(struct block_device *dev,
int i, j;
bh = __getblk(dev, block, bufsize);
- if (buffer_uptodate(bh))
+ if (!bh || buffer_uptodate(bh))
return (bh);
if (block + BUFNR > max_block) {
@@ -2336,6 +2336,8 @@ static struct buffer_head *reiserfs_breada(struct block_device *dev,
j = 1;
for (i = 1; i < blocks; i++) {
bh = __getblk(dev, block + i, bufsize);
+ if (!bh)
+ break;
if (buffer_uptodate(bh)) {
brelse(bh);
break;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 102/600] eventfd: prevent underflow for eventfd semaphores
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (100 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 101/600] reiserfs: Check the return value from __getblk() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 103/600] fs: Fix error checking for d_hash_and_lookup() Greg Kroah-Hartman
` (508 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Wen Yang, Alexander Viro, Jens Axboe,
Christian Brauner, Christoph Hellwig, Dylan Yudaken,
David Woodhouse, Matthew Wilcox, linux-fsdevel, linux-kernel,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wen Yang <wenyang.linux@foxmail.com>
[ Upstream commit 758b492047816a3158d027e9fca660bc5bcf20bf ]
For eventfd with flag EFD_SEMAPHORE, when its ctx->count is 0, calling
eventfd_ctx_do_read will cause ctx->count to overflow to ULLONG_MAX.
An underflow can happen with EFD_SEMAPHORE eventfds in at least the
following three subsystems:
(1) virt/kvm/eventfd.c
(2) drivers/vfio/virqfd.c
(3) drivers/virt/acrn/irqfd.c
where (2) and (3) are just modeled after (1). An eventfd must be
specified for use with the KVM_IRQFD ioctl(). This can also be an
EFD_SEMAPHORE eventfd. When the eventfd count is zero or has been
decremented to zero an underflow can be triggered when the irqfd is shut
down by raising the KVM_IRQFD_FLAG_DEASSIGN flag in the KVM_IRQFD
ioctl():
// ctx->count == 0
kvm_vm_ioctl()
-> kvm_irqfd()
-> kvm_irqfd_deassign()
-> irqfd_deactivate()
-> irqfd_shutdown()
-> eventfd_ctx_remove_wait_queue(&cnt)
-> eventfd_ctx_do_read(&cnt)
Userspace polling on the eventfd wouldn't notice the underflow because 1
is always returned as the value from eventfd_read() while ctx->count
would've underflowed. It's not a huge deal because this should only be
happening when the irqfd is shutdown but we should still fix it and
avoid the spurious wakeup.
Fixes: cb289d6244a3 ("eventfd - allow atomic read and waitqueue remove")
Signed-off-by: Wen Yang <wenyang.linux@foxmail.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Dylan Yudaken <dylany@fb.com>
Cc: David Woodhouse <dwmw@amazon.co.uk>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Message-Id: <tencent_7588DFD1F365950A757310D764517A14B306@qq.com>
[brauner: rewrite commit message and add explanation how this underflow can happen]
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/eventfd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 249ca6c0b7843..4a60ea932e3d9 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -189,7 +189,7 @@ void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt)
{
lockdep_assert_held(&ctx->wqh.lock);
- *cnt = (ctx->flags & EFD_SEMAPHORE) ? 1 : ctx->count;
+ *cnt = ((ctx->flags & EFD_SEMAPHORE) && ctx->count) ? 1 : ctx->count;
ctx->count -= *cnt;
}
EXPORT_SYMBOL_GPL(eventfd_ctx_do_read);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 103/600] fs: Fix error checking for d_hash_and_lookup()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (101 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 102/600] eventfd: prevent underflow for eventfd semaphores Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 104/600] iomap: Remove large folio handling in iomap_invalidate_folio() Greg Kroah-Hartman
` (507 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Wang Ming, Christian Brauner,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wang Ming <machel@vivo.com>
[ Upstream commit 0d5a4f8f775ff990142cdc810a84eae078589d27 ]
The d_hash_and_lookup() function returns error pointers or NULL.
Most incorrect error checks were fixed, but the one in int path_pts()
was forgotten.
Fixes: eedf265aa003 ("devpts: Make each mount of devpts an independent filesystem.")
Signed-off-by: Wang Ming <machel@vivo.com>
Message-Id: <20230713120555.7025-1-machel@vivo.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/namei.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/namei.c b/fs/namei.c
index 5b3865ad9d052..4248647f1ab24 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2859,7 +2859,7 @@ int path_pts(struct path *path)
dput(path->dentry);
path->dentry = parent;
child = d_hash_and_lookup(parent, &this);
- if (!child)
+ if (IS_ERR_OR_NULL(child))
return -ENOENT;
path->dentry = child;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 104/600] iomap: Remove large folio handling in iomap_invalidate_folio()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (102 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 103/600] fs: Fix error checking for d_hash_and_lookup() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 105/600] tmpfs: verify {g,u}id mount options correctly Greg Kroah-Hartman
` (506 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Matthew Wilcox (Oracle),
Darrick J. Wong, Christoph Hellwig, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matthew Wilcox (Oracle) <willy@infradead.org>
[ Upstream commit a221ab717c43147f728d93513923ba3528f861bf ]
We do not need to release the iomap_page in iomap_invalidate_folio()
to allow the folio to be split. The splitting code will call
->release_folio() if there is still per-fs private data attached to
the folio. At that point, we will check if the folio is still dirty
and decline to release the iomap_page. It is possible to trigger the
warning in perfectly legitimate circumstances (eg if a disk read fails,
we do a partial write to the folio, then we truncate the folio), which
will cause those writes to be lost.
Fixes: 60d8231089f0 ("iomap: Support large folios in invalidatepage")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/iomap/buffered-io.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/fs/iomap/buffered-io.c b/fs/iomap/buffered-io.c
index 91ee0b308e13d..a0a4d8de82cad 100644
--- a/fs/iomap/buffered-io.c
+++ b/fs/iomap/buffered-io.c
@@ -488,11 +488,6 @@ void iomap_invalidate_folio(struct folio *folio, size_t offset, size_t len)
WARN_ON_ONCE(folio_test_writeback(folio));
folio_cancel_dirty(folio);
iomap_page_release(folio);
- } else if (folio_test_large(folio)) {
- /* Must release the iop so the page can be split */
- WARN_ON_ONCE(!folio_test_uptodate(folio) &&
- folio_test_dirty(folio));
- iomap_page_release(folio);
}
}
EXPORT_SYMBOL_GPL(iomap_invalidate_folio);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 105/600] tmpfs: verify {g,u}id mount options correctly
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (103 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 104/600] iomap: Remove large folio handling in iomap_invalidate_folio() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 106/600] selftests/harness: Actually report SKIP for signal tests Greg Kroah-Hartman
` (505 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Seth Forshee (DigitalOcean),
Seth Jenkins, Christian Brauner, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christian Brauner <brauner@kernel.org>
[ Upstream commit 0200679fc7953177941e41c2a4241d0b6c2c5de8 ]
A while ago we received the following report:
"The other outstanding issue I noticed comes from the fact that
fsconfig syscalls may occur in a different userns than that which
called fsopen. That means that resolving the uid/gid via
current_user_ns() can save a kuid that isn't mapped in the associated
namespace when the filesystem is finally mounted. This means that it
is possible for an unprivileged user to create files owned by any
group in a tmpfs mount (since we can set the SUID bit on the tmpfs
directory), or a tmpfs that is owned by any user, including the root
group/user."
The contract for {g,u}id mount options and {g,u}id values in general set
from userspace has always been that they are translated according to the
caller's idmapping. In so far, tmpfs has been doing the correct thing.
But since tmpfs is mountable in unprivileged contexts it is also
necessary to verify that the resulting {k,g}uid is representable in the
namespace of the superblock to avoid such bugs as above.
The new mount api's cross-namespace delegation abilities are already
widely used. After having talked to a bunch of userspace this is the
most faithful solution with minimal regression risks. I know of one
users - systemd - that makes use of the new mount api in this way and
they don't set unresolable {g,u}ids. So the regression risk is minimal.
Link: https://lore.kernel.org/lkml/CALxfFW4BXhEwxR0Q5LSkg-8Vb4r2MONKCcUCVioehXQKr35eHg@mail.gmail.com
Fixes: f32356261d44 ("vfs: Convert ramfs, shmem, tmpfs, devtmpfs, rootfs to use the new mount API")
Reviewed-by: "Seth Forshee (DigitalOcean)" <sforshee@kernel.org>
Reported-by: Seth Jenkins <sethjenkins@google.com>
Message-Id: <20230801-vfs-fs_context-uidgid-v1-1-daf46a050bbf@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
mm/shmem.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index 10365ced5b1fc..806741bbe4a68 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -3485,6 +3485,8 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
unsigned long long size;
char *rest;
int opt;
+ kuid_t kuid;
+ kgid_t kgid;
opt = fs_parse(fc, shmem_fs_parameters, param, &result);
if (opt < 0)
@@ -3520,14 +3522,32 @@ static int shmem_parse_one(struct fs_context *fc, struct fs_parameter *param)
ctx->mode = result.uint_32 & 07777;
break;
case Opt_uid:
- ctx->uid = make_kuid(current_user_ns(), result.uint_32);
- if (!uid_valid(ctx->uid))
+ kuid = make_kuid(current_user_ns(), result.uint_32);
+ if (!uid_valid(kuid))
goto bad_value;
+
+ /*
+ * The requested uid must be representable in the
+ * filesystem's idmapping.
+ */
+ if (!kuid_has_mapping(fc->user_ns, kuid))
+ goto bad_value;
+
+ ctx->uid = kuid;
break;
case Opt_gid:
- ctx->gid = make_kgid(current_user_ns(), result.uint_32);
- if (!gid_valid(ctx->gid))
+ kgid = make_kgid(current_user_ns(), result.uint_32);
+ if (!gid_valid(kgid))
goto bad_value;
+
+ /*
+ * The requested gid must be representable in the
+ * filesystem's idmapping.
+ */
+ if (!kgid_has_mapping(fc->user_ns, kgid))
+ goto bad_value;
+
+ ctx->gid = kgid;
break;
case Opt_huge:
ctx->huge = result.uint_32;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 106/600] selftests/harness: Actually report SKIP for signal tests
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (104 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 105/600] tmpfs: verify {g,u}id mount options correctly Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 107/600] vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing Greg Kroah-Hartman
` (504 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Shuah Khan, Andy Lutomirski,
Will Drewry, linux-kselftest, Kees Cook, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <keescook@chromium.org>
[ Upstream commit b3d46e11fec0c5a8972e5061bb1462119ae5736d ]
Tests that were expecting a signal were not correctly checking for a
SKIP condition. Move the check before the signal checking when
processing test result.
Cc: Shuah Khan <shuah@kernel.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Will Drewry <wad@chromium.org>
Cc: linux-kselftest@vger.kernel.org
Fixes: 9847d24af95c ("selftests/harness: Refactor XFAIL into SKIP")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/kselftest_harness.h | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h
index 25f4d54067c0e..584687c3286dd 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -937,7 +937,11 @@ void __wait_for_test(struct __test_metadata *t)
fprintf(TH_LOG_STREAM,
"# %s: Test terminated by timeout\n", t->name);
} else if (WIFEXITED(status)) {
- if (t->termsig != -1) {
+ if (WEXITSTATUS(status) == 255) {
+ /* SKIP */
+ t->passed = 1;
+ t->skip = 1;
+ } else if (t->termsig != -1) {
t->passed = 0;
fprintf(TH_LOG_STREAM,
"# %s: Test exited normally instead of by signal (code: %d)\n",
@@ -949,11 +953,6 @@ void __wait_for_test(struct __test_metadata *t)
case 0:
t->passed = 1;
break;
- /* SKIP */
- case 255:
- t->passed = 1;
- t->skip = 1;
- break;
/* Other failure, assume step report. */
default:
t->passed = 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 107/600] vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (105 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 106/600] selftests/harness: Actually report SKIP for signal tests Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 108/600] ARM: ptrace: Restore syscall restart tracing Greg Kroah-Hartman
` (503 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Howells, Jeff Layton,
Casey Schaufler, Christian Brauner (Microsoft), Paul Moore,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Howells <dhowells@redhat.com>
[ Upstream commit d80a8f1b58c2bc8d7c6bfb65401ea4f7ec8cddc2 ]
When NFS superblocks are created by automounting, their LSM parameters
aren't set in the fs_context struct prior to sget_fc() being called,
leading to failure to match existing superblocks.
This bug leads to messages like the following appearing in dmesg when
fscache is enabled:
NFS: Cache volume key already in use (nfs,4.2,2,108,106a8c0,1,,,,100000,100000,2ee,3a98,1d4c,3a98,1)
Fix this by adding a new LSM hook to load fc->security for submount
creation.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Link: https://lore.kernel.org/r/165962680944.3334508.6610023900349142034.stgit@warthog.procyon.org.uk/ # v1
Link: https://lore.kernel.org/r/165962729225.3357250.14350728846471527137.stgit@warthog.procyon.org.uk/ # v2
Link: https://lore.kernel.org/r/165970659095.2812394.6868894171102318796.stgit@warthog.procyon.org.uk/ # v3
Link: https://lore.kernel.org/r/166133579016.3678898.6283195019480567275.stgit@warthog.procyon.org.uk/ # v4
Link: https://lore.kernel.org/r/217595.1662033775@warthog.procyon.org.uk/ # v5
Fixes: 9bc61ab18b1d ("vfs: Introduce fs_context, switch vfs_kern_mount() to it.")
Fixes: 779df6a5480f ("NFS: Ensure security label is set for root inode")
Tested-by: Jeff Layton <jlayton@kernel.org>
Acked-by: Casey Schaufler <casey@schaufler-ca.com>
Acked-by: "Christian Brauner (Microsoft)" <brauner@kernel.org>
Acked-by: Paul Moore <paul@paul-moore.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Message-Id: <20230808-master-v9-1-e0ecde888221@kernel.org>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/fs_context.c | 23 +++++++++++++++-
include/linux/lsm_hook_defs.h | 1 +
include/linux/security.h | 6 +++++
security/security.c | 14 ++++++++++
security/selinux/hooks.c | 22 +++++++++++++++
security/smack/smack_lsm.c | 51 +++++++++++++++++++++++++++++++++++
6 files changed, 116 insertions(+), 1 deletion(-)
diff --git a/fs/fs_context.c b/fs/fs_context.c
index 851214d1d013d..375023e40161d 100644
--- a/fs/fs_context.c
+++ b/fs/fs_context.c
@@ -315,10 +315,31 @@ struct fs_context *fs_context_for_reconfigure(struct dentry *dentry,
}
EXPORT_SYMBOL(fs_context_for_reconfigure);
+/**
+ * fs_context_for_submount: allocate a new fs_context for a submount
+ * @type: file_system_type of the new context
+ * @reference: reference dentry from which to copy relevant info
+ *
+ * Allocate a new fs_context suitable for a submount. This also ensures that
+ * the fc->security object is inherited from @reference (if needed).
+ */
struct fs_context *fs_context_for_submount(struct file_system_type *type,
struct dentry *reference)
{
- return alloc_fs_context(type, reference, 0, 0, FS_CONTEXT_FOR_SUBMOUNT);
+ struct fs_context *fc;
+ int ret;
+
+ fc = alloc_fs_context(type, reference, 0, 0, FS_CONTEXT_FOR_SUBMOUNT);
+ if (IS_ERR(fc))
+ return fc;
+
+ ret = security_fs_context_submount(fc, reference->d_sb);
+ if (ret) {
+ put_fs_context(fc);
+ return ERR_PTR(ret);
+ }
+
+ return fc;
}
EXPORT_SYMBOL(fs_context_for_submount);
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
index ec119da1d89b4..4a97a6db9bcec 100644
--- a/include/linux/lsm_hook_defs.h
+++ b/include/linux/lsm_hook_defs.h
@@ -54,6 +54,7 @@ LSM_HOOK(int, 0, bprm_creds_from_file, struct linux_binprm *bprm, struct file *f
LSM_HOOK(int, 0, bprm_check_security, struct linux_binprm *bprm)
LSM_HOOK(void, LSM_RET_VOID, bprm_committing_creds, struct linux_binprm *bprm)
LSM_HOOK(void, LSM_RET_VOID, bprm_committed_creds, struct linux_binprm *bprm)
+LSM_HOOK(int, 0, fs_context_submount, struct fs_context *fc, struct super_block *reference)
LSM_HOOK(int, 0, fs_context_dup, struct fs_context *fc,
struct fs_context *src_sc)
LSM_HOOK(int, -ENOPARAM, fs_context_parse_param, struct fs_context *fc,
diff --git a/include/linux/security.h b/include/linux/security.h
index ca1b7109c0dbb..a6c97cc57caa0 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -293,6 +293,7 @@ int security_bprm_creds_from_file(struct linux_binprm *bprm, struct file *file);
int security_bprm_check(struct linux_binprm *bprm);
void security_bprm_committing_creds(struct linux_binprm *bprm);
void security_bprm_committed_creds(struct linux_binprm *bprm);
+int security_fs_context_submount(struct fs_context *fc, struct super_block *reference);
int security_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc);
int security_fs_context_parse_param(struct fs_context *fc, struct fs_parameter *param);
int security_sb_alloc(struct super_block *sb);
@@ -625,6 +626,11 @@ static inline void security_bprm_committed_creds(struct linux_binprm *bprm)
{
}
+static inline int security_fs_context_submount(struct fs_context *fc,
+ struct super_block *reference)
+{
+ return 0;
+}
static inline int security_fs_context_dup(struct fs_context *fc,
struct fs_context *src_fc)
{
diff --git a/security/security.c b/security/security.c
index 75dc0947ee0cf..5fa286ae9908d 100644
--- a/security/security.c
+++ b/security/security.c
@@ -882,6 +882,20 @@ void security_bprm_committed_creds(struct linux_binprm *bprm)
call_void_hook(bprm_committed_creds, bprm);
}
+/**
+ * security_fs_context_submount() - Initialise fc->security
+ * @fc: new filesystem context
+ * @reference: dentry reference for submount/remount
+ *
+ * Fill out the ->security field for a new fs_context.
+ *
+ * Return: Returns 0 on success or negative error code on failure.
+ */
+int security_fs_context_submount(struct fs_context *fc, struct super_block *reference)
+{
+ return call_int_hook(fs_context_submount, 0, fc, reference);
+}
+
int security_fs_context_dup(struct fs_context *fc, struct fs_context *src_fc)
{
return call_int_hook(fs_context_dup, 0, fc, src_fc);
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index f553c370397ee..26c9e4da4efcf 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -2766,6 +2766,27 @@ static int selinux_umount(struct vfsmount *mnt, int flags)
FILESYSTEM__UNMOUNT, NULL);
}
+static int selinux_fs_context_submount(struct fs_context *fc,
+ struct super_block *reference)
+{
+ const struct superblock_security_struct *sbsec;
+ struct selinux_mnt_opts *opts;
+
+ opts = kzalloc(sizeof(*opts), GFP_KERNEL);
+ if (!opts)
+ return -ENOMEM;
+
+ sbsec = selinux_superblock(reference);
+ if (sbsec->flags & FSCONTEXT_MNT)
+ opts->fscontext_sid = sbsec->sid;
+ if (sbsec->flags & CONTEXT_MNT)
+ opts->context_sid = sbsec->mntpoint_sid;
+ if (sbsec->flags & DEFCONTEXT_MNT)
+ opts->defcontext_sid = sbsec->def_sid;
+ fc->security = opts;
+ return 0;
+}
+
static int selinux_fs_context_dup(struct fs_context *fc,
struct fs_context *src_fc)
{
@@ -7263,6 +7284,7 @@ static struct security_hook_list selinux_hooks[] __lsm_ro_after_init = {
/*
* PUT "CLONING" (ACCESSING + ALLOCATING) HOOKS HERE
*/
+ LSM_HOOK_INIT(fs_context_submount, selinux_fs_context_submount),
LSM_HOOK_INIT(fs_context_dup, selinux_fs_context_dup),
LSM_HOOK_INIT(fs_context_parse_param, selinux_fs_context_parse_param),
LSM_HOOK_INIT(sb_eat_lsm_opts, selinux_sb_eat_lsm_opts),
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index b6306d71c9088..67dcd31cd3f3d 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -611,6 +611,56 @@ static int smack_add_opt(int token, const char *s, void **mnt_opts)
return -EINVAL;
}
+/**
+ * smack_fs_context_submount - Initialise security data for a filesystem context
+ * @fc: The filesystem context.
+ * @reference: reference superblock
+ *
+ * Returns 0 on success or -ENOMEM on error.
+ */
+static int smack_fs_context_submount(struct fs_context *fc,
+ struct super_block *reference)
+{
+ struct superblock_smack *sbsp;
+ struct smack_mnt_opts *ctx;
+ struct inode_smack *isp;
+
+ ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
+ if (!ctx)
+ return -ENOMEM;
+ fc->security = ctx;
+
+ sbsp = smack_superblock(reference);
+ isp = smack_inode(reference->s_root->d_inode);
+
+ if (sbsp->smk_default) {
+ ctx->fsdefault = kstrdup(sbsp->smk_default->smk_known, GFP_KERNEL);
+ if (!ctx->fsdefault)
+ return -ENOMEM;
+ }
+
+ if (sbsp->smk_floor) {
+ ctx->fsfloor = kstrdup(sbsp->smk_floor->smk_known, GFP_KERNEL);
+ if (!ctx->fsfloor)
+ return -ENOMEM;
+ }
+
+ if (sbsp->smk_hat) {
+ ctx->fshat = kstrdup(sbsp->smk_hat->smk_known, GFP_KERNEL);
+ if (!ctx->fshat)
+ return -ENOMEM;
+ }
+
+ if (isp->smk_flags & SMK_INODE_TRANSMUTE) {
+ if (sbsp->smk_root) {
+ ctx->fstransmute = kstrdup(sbsp->smk_root->smk_known, GFP_KERNEL);
+ if (!ctx->fstransmute)
+ return -ENOMEM;
+ }
+ }
+ return 0;
+}
+
/**
* smack_fs_context_dup - Duplicate the security data on fs_context duplication
* @fc: The new filesystem context.
@@ -4792,6 +4842,7 @@ static struct security_hook_list smack_hooks[] __lsm_ro_after_init = {
LSM_HOOK_INIT(ptrace_traceme, smack_ptrace_traceme),
LSM_HOOK_INIT(syslog, smack_syslog),
+ LSM_HOOK_INIT(fs_context_submount, smack_fs_context_submount),
LSM_HOOK_INIT(fs_context_dup, smack_fs_context_dup),
LSM_HOOK_INIT(fs_context_parse_param, smack_fs_context_parse_param),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 108/600] ARM: ptrace: Restore syscall restart tracing
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (106 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 107/600] vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 109/600] ARM: ptrace: Restore syscall skipping for tracers Greg Kroah-Hartman
` (502 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Russell King, Arnd Bergmann,
Lecopzer Chen, Oleg Nesterov, linux-arm-kernel, Arnd Bergmann,
Kees Cook, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <keescook@chromium.org>
[ Upstream commit cf007647475b5090819c5fe8da771073145c7334 ]
Since commit 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store
thread_info->abi_syscall"), the seccomp selftests "syscall_restart" has
been broken. This was caused by the restart syscall not being stored to
"abi_syscall" during restart setup before branching to the "local_restart"
label. Tracers would see the wrong syscall, and scno would get overwritten
while returning from the TIF_WORK path. Add the missing store.
Cc: Russell King <linux@armlinux.org.uk>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Lecopzer Chen <lecopzer.chen@mediatek.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: linux-arm-kernel@lists.infradead.org
Fixes: 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall")
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20230810195422.2304827-1-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/kernel/entry-common.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 405a607b754f4..b413b541c3c71 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -103,6 +103,7 @@ slow_work_pending:
cmp r0, #0
beq no_work_pending
movlt scno, #(__NR_restart_syscall - __NR_SYSCALL_BASE)
+ str scno, [tsk, #TI_ABI_SYSCALL] @ make sure tracers see update
ldmia sp, {r0 - r6} @ have to reload r0 - r6
b local_restart @ ... and off we go
ENDPROC(ret_fast_syscall)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 109/600] ARM: ptrace: Restore syscall skipping for tracers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (107 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 108/600] ARM: ptrace: Restore syscall restart tracing Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 110/600] refscale: Fix uninitalized use of wait_queue_head_t Greg Kroah-Hartman
` (501 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Russell King, Arnd Bergmann,
Lecopzer Chen, Oleg Nesterov, linux-arm-kernel, Arnd Bergmann,
Kees Cook, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <keescook@chromium.org>
[ Upstream commit 4697b5848bd933f68ebd04836362c8de0cacaf71 ]
Since commit 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store
thread_info->abi_syscall"), the seccomp selftests "syscall_errno"
and "syscall_faked" have been broken. Both seccomp and PTRACE depend
on using the special value of "-1" for skipping syscalls. This value
wasn't working because it was getting masked by __NR_SYSCALL_MASK in
both PTRACE_SET_SYSCALL and get_syscall_nr().
Explicitly test for -1 in PTRACE_SET_SYSCALL and get_syscall_nr(),
leaving it exposed when present, allowing tracers to skip syscalls
again.
Cc: Russell King <linux@armlinux.org.uk>
Cc: Arnd Bergmann <arnd@kernel.org>
Cc: Lecopzer Chen <lecopzer.chen@mediatek.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: linux-arm-kernel@lists.infradead.org
Fixes: 4e57a4ddf6b0 ("ARM: 9107/1: syscall: always store thread_info->abi_syscall")
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lore.kernel.org/r/20230810195422.2304827-2-keescook@chromium.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/include/asm/syscall.h | 3 +++
arch/arm/kernel/ptrace.c | 5 +++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/syscall.h b/arch/arm/include/asm/syscall.h
index dfeed440254a8..fe4326d938c18 100644
--- a/arch/arm/include/asm/syscall.h
+++ b/arch/arm/include/asm/syscall.h
@@ -25,6 +25,9 @@ static inline int syscall_get_nr(struct task_struct *task,
if (IS_ENABLED(CONFIG_AEABI) && !IS_ENABLED(CONFIG_OABI_COMPAT))
return task_thread_info(task)->abi_syscall;
+ if (task_thread_info(task)->abi_syscall == -1)
+ return -1;
+
return task_thread_info(task)->abi_syscall & __NR_SYSCALL_MASK;
}
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index bfe88c6e60d58..cef106913ab7b 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -785,8 +785,9 @@ long arch_ptrace(struct task_struct *child, long request,
break;
case PTRACE_SET_SYSCALL:
- task_thread_info(child)->abi_syscall = data &
- __NR_SYSCALL_MASK;
+ if (data != -1)
+ data &= __NR_SYSCALL_MASK;
+ task_thread_info(child)->abi_syscall = data;
ret = 0;
break;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 110/600] refscale: Fix uninitalized use of wait_queue_head_t
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (108 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 109/600] ARM: ptrace: Restore syscall skipping for tracers Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 111/600] OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() Greg Kroah-Hartman
` (500 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Waiman Long, Qiuxu Zhuo,
Davidlohr Bueso, Joel Fernandes (Google), Paul E. McKenney,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Waiman Long <longman@redhat.com>
[ Upstream commit f5063e8948dad7f31adb007284a5d5038ae31bb8 ]
Running the refscale test occasionally crashes the kernel with the
following error:
[ 8569.952896] BUG: unable to handle page fault for address: ffffffffffffffe8
[ 8569.952900] #PF: supervisor read access in kernel mode
[ 8569.952902] #PF: error_code(0x0000) - not-present page
[ 8569.952904] PGD c4b048067 P4D c4b049067 PUD c4b04b067 PMD 0
[ 8569.952910] Oops: 0000 [#1] PREEMPT_RT SMP NOPTI
[ 8569.952916] Hardware name: Dell Inc. PowerEdge R750/0WMWCR, BIOS 1.2.4 05/28/2021
[ 8569.952917] RIP: 0010:prepare_to_wait_event+0x101/0x190
:
[ 8569.952940] Call Trace:
[ 8569.952941] <TASK>
[ 8569.952944] ref_scale_reader+0x380/0x4a0 [refscale]
[ 8569.952959] kthread+0x10e/0x130
[ 8569.952966] ret_from_fork+0x1f/0x30
[ 8569.952973] </TASK>
The likely cause is that init_waitqueue_head() is called after the call to
the torture_create_kthread() function that creates the ref_scale_reader
kthread. Although this init_waitqueue_head() call will very likely
complete before this kthread is created and starts running, it is
possible that the calling kthread will be delayed between the calls to
torture_create_kthread() and init_waitqueue_head(). In this case, the
new kthread will use the waitqueue head before it is properly initialized,
which is not good for the kernel's health and well-being.
The above crash happened here:
static inline void __add_wait_queue(...)
{
:
if (!(wq->flags & WQ_FLAG_PRIORITY)) <=== Crash here
The offset of flags from list_head entry in wait_queue_entry is
-0x18. If reader_tasks[i].wq.head.next is NULL as allocated reader_task
structure is zero initialized, the instruction will try to access address
0xffffffffffffffe8, which is exactly the fault address listed above.
This commit therefore invokes init_waitqueue_head() before creating
the kthread.
Fixes: 653ed64b01dc ("refperf: Add a test to measure performance of read-side synchronization")
Signed-off-by: Waiman Long <longman@redhat.com>
Reviewed-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
Acked-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/rcu/refscale.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/kernel/rcu/refscale.c b/kernel/rcu/refscale.c
index d49a9d66e0000..3a93c53f615f0 100644
--- a/kernel/rcu/refscale.c
+++ b/kernel/rcu/refscale.c
@@ -867,12 +867,11 @@ ref_scale_init(void)
VERBOSE_SCALEOUT("Starting %d reader threads", nreaders);
for (i = 0; i < nreaders; i++) {
+ init_waitqueue_head(&reader_tasks[i].wq);
firsterr = torture_create_kthread(ref_scale_reader, (void *)i,
reader_tasks[i].task);
if (torture_init_error(firsterr))
goto unwind;
-
- init_waitqueue_head(&(reader_tasks[i].wq));
}
// Main Task
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 111/600] OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (109 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 110/600] refscale: Fix uninitalized use of wait_queue_head_t Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 112/600] selftests/resctrl: Add resctrl.h into build deps Greg Kroah-Hartman
` (499 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Manivannan Sadhasivam, Viresh Kumar,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[ Upstream commit d920920f85a82c1c806a4143871a0e8f534732f2 ]
If dev_pm_domain_attach_by_name() returns NULL, then 0 will be passed to
PTR_ERR() as reported by the smatch warning below:
drivers/opp/core.c:2456 _opp_attach_genpd() warn: passing zero to 'PTR_ERR'
Fix it by checking for the non-NULL virt_dev pointer before passing it to
PTR_ERR. Otherwise return -ENODEV.
Fixes: 4ea9496cbc95 ("opp: Fix error check in dev_pm_opp_attach_genpd()")
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/opp/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index d707214069ca9..f0d70ecc0271b 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -2372,7 +2372,7 @@ static int _opp_attach_genpd(struct opp_table *opp_table, struct device *dev,
virt_dev = dev_pm_domain_attach_by_name(dev, *name);
if (IS_ERR_OR_NULL(virt_dev)) {
- ret = PTR_ERR(virt_dev) ? : -ENODEV;
+ ret = virt_dev ? PTR_ERR(virt_dev) : -ENODEV;
dev_err(dev, "Couldn't attach to pm_domain: %d\n", ret);
goto err;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 112/600] selftests/resctrl: Add resctrl.h into build deps
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (110 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 111/600] OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 113/600] selftests/resctrl: Dont leak buffer in fill_cache() Greg Kroah-Hartman
` (498 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ilpo Järvinen, Reinette Chatre,
Babu Moger, Shaopeng Tan (Fujitsu), Shuah Khan, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 8e289f4542890168705219e54f0231dccfabddbe ]
Makefile only lists *.c as build dependencies for the resctrl_tests
executable which excludes resctrl.h.
Add *.h to wildcard() to include resctrl.h.
Fixes: 591a6e8588fc ("selftests/resctrl: Add basic resctrl file system operations and data")
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Tested-by: Shaopeng Tan (Fujitsu) <tan.shaopeng@fujitsu.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/resctrl/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/resctrl/Makefile b/tools/testing/selftests/resctrl/Makefile
index 73d53257df42f..5073dbc961258 100644
--- a/tools/testing/selftests/resctrl/Makefile
+++ b/tools/testing/selftests/resctrl/Makefile
@@ -7,4 +7,4 @@ TEST_GEN_PROGS := resctrl_tests
include ../lib.mk
-$(OUTPUT)/resctrl_tests: $(wildcard *.c)
+$(OUTPUT)/resctrl_tests: $(wildcard *.[ch])
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 113/600] selftests/resctrl: Dont leak buffer in fill_cache()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (111 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 112/600] selftests/resctrl: Add resctrl.h into build deps Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 114/600] selftests/resctrl: Unmount resctrl FS if child fails to run benchmark Greg Kroah-Hartman
` (497 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ilpo Järvinen, Reinette Chatre,
Babu Moger, Shaopeng Tan (Fujitsu), Shuah Khan, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 2d320b1029ee7329ee0638181be967789775b962 ]
The error path in fill_cache() does return before the allocated buffer
is freed leaking the buffer.
The leak was introduced when fill_cache_read() started to return errors
in commit c7b607fa9325 ("selftests/resctrl: Fix null pointer
dereference on open failed"), before that both fill functions always
returned 0.
Move free() earlier to prevent the mem leak.
Fixes: c7b607fa9325 ("selftests/resctrl: Fix null pointer dereference on open failed")
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Tested-by: Shaopeng Tan (Fujitsu) <tan.shaopeng@fujitsu.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/resctrl/fill_buf.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/resctrl/fill_buf.c b/tools/testing/selftests/resctrl/fill_buf.c
index c20d0a7ecbe63..ab1d91328d67b 100644
--- a/tools/testing/selftests/resctrl/fill_buf.c
+++ b/tools/testing/selftests/resctrl/fill_buf.c
@@ -184,12 +184,13 @@ fill_cache(unsigned long long buf_size, int malloc_and_init, int memflush,
else
ret = fill_cache_write(start_ptr, end_ptr, resctrl_val);
+ free(startptr);
+
if (ret) {
printf("\n Error in fill cache read/write...\n");
return -1;
}
- free(startptr);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 114/600] selftests/resctrl: Unmount resctrl FS if child fails to run benchmark
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (112 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 113/600] selftests/resctrl: Dont leak buffer in fill_cache() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 115/600] selftests/resctrl: Close perf value read fd on errors Greg Kroah-Hartman
` (496 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ilpo Järvinen, Reinette Chatre,
Babu Moger, Shaopeng Tan (Fujitsu), Shuah Khan, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit f99e413eb54652e2436cc56d081176bc9a34cd8d ]
A child calls PARENT_EXIT() when it fails to run a benchmark to kill
the parent process. PARENT_EXIT() lacks unmount for the resctrl FS and
the parent won't be there to unmount it either after it gets killed.
Add the resctrl FS unmount also to PARENT_EXIT().
Fixes: 591a6e8588fc ("selftests/resctrl: Add basic resctrl file system operations and data")
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Tested-by: Shaopeng Tan (Fujitsu) <tan.shaopeng@fujitsu.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/resctrl/resctrl.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
index f44fa2de4d986..dbe5cfb545585 100644
--- a/tools/testing/selftests/resctrl/resctrl.h
+++ b/tools/testing/selftests/resctrl/resctrl.h
@@ -43,6 +43,7 @@
do { \
perror(err_msg); \
kill(ppid, SIGKILL); \
+ umount_resctrlfs(); \
exit(EXIT_FAILURE); \
} while (0)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 115/600] selftests/resctrl: Close perf value read fd on errors
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (113 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 114/600] selftests/resctrl: Unmount resctrl FS if child fails to run benchmark Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 116/600] arm64/ptrace: Clean up error handling path in sve_set_common() Greg Kroah-Hartman
` (495 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ilpo Järvinen, Babu Moger,
Shaopeng Tan (Fujitsu), Shuah Khan, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 51a0c3b7f028169e40db930575dd01fe81c3e765 ]
Perf event fd (fd_lm) is not closed when run_fill_buf() returns error.
Close fd_lm only in cat_val() to make it easier to track it is always
closed.
Fixes: 790bf585b0ee ("selftests/resctrl: Add Cache Allocation Technology (CAT) selftest")
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tested-by: Babu Moger <babu.moger@amd.com>
Tested-by: Shaopeng Tan (Fujitsu) <tan.shaopeng@fujitsu.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/resctrl/cache.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/resctrl/cache.c b/tools/testing/selftests/resctrl/cache.c
index 0485863a169f2..338f714453935 100644
--- a/tools/testing/selftests/resctrl/cache.c
+++ b/tools/testing/selftests/resctrl/cache.c
@@ -89,21 +89,19 @@ static int reset_enable_llc_perf(pid_t pid, int cpu_no)
static int get_llc_perf(unsigned long *llc_perf_miss)
{
__u64 total_misses;
+ int ret;
/* Stop counters after one span to get miss rate */
ioctl(fd_lm, PERF_EVENT_IOC_DISABLE, 0);
- if (read(fd_lm, &rf_cqm, sizeof(struct read_format)) == -1) {
+ ret = read(fd_lm, &rf_cqm, sizeof(struct read_format));
+ if (ret == -1) {
perror("Could not get llc misses through perf");
-
return -1;
}
total_misses = rf_cqm.values[0].value;
-
- close(fd_lm);
-
*llc_perf_miss = total_misses;
return 0;
@@ -258,19 +256,25 @@ int cat_val(struct resctrl_val_param *param)
memflush, operation, resctrl_val)) {
fprintf(stderr, "Error-running fill buffer\n");
ret = -1;
- break;
+ goto pe_close;
}
sleep(1);
ret = measure_cache_vals(param, bm_pid);
if (ret)
- break;
+ goto pe_close;
+
+ close(fd_lm);
} else {
break;
}
}
return ret;
+
+pe_close:
+ close(fd_lm);
+ return ret;
}
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 116/600] arm64/ptrace: Clean up error handling path in sve_set_common()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (114 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 115/600] selftests/resctrl: Close perf value read fd on errors Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 117/600] sched/psi: Select KERNFS as needed Greg Kroah-Hartman
` (494 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe JAILLET, Mark Brown,
Anshuman Khandual, Will Deacon, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
[ Upstream commit 5f69ca4229c7d8e23f238174827ee7aa49b0bcb2 ]
All error handling paths go to 'out', except this one. Be consistent and
also branch to 'out' here.
Fixes: e12310a0d30f ("arm64/sme: Implement ptrace support for streaming mode SVE registers")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
Link: https://lore.kernel.org/r/aa61301ed2dfd079b74b37f7fede5f179ac3087a.1689616473.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/kernel/ptrace.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c
index f606c942f514e..e1f6366b7ccdf 100644
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -896,7 +896,8 @@ static int sve_set_common(struct task_struct *target,
break;
default:
WARN_ON_ONCE(1);
- return -EINVAL;
+ ret = -EINVAL;
+ goto out;
}
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 117/600] sched/psi: Select KERNFS as needed
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (115 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 116/600] arm64/ptrace: Clean up error handling path in sve_set_common() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 118/600] x86/decompressor: Dont rely on upper 32 bits of GPRs being preserved Greg Kroah-Hartman
` (493 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Randy Dunlap,
Peter Zijlstra (Intel), Suren Baghdasaryan, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Randy Dunlap <rdunlap@infradead.org>
[ Upstream commit 98dfdd9ee93995a408192dbbf3dd219ba23e3738 ]
Users of KERNFS should select it to enforce its being built, so
do this to prevent a build error.
In file included from ../kernel/sched/build_utility.c:97:
../kernel/sched/psi.c: In function 'psi_trigger_poll':
../kernel/sched/psi.c:1479:17: error: implicit declaration of function 'kernfs_generic_poll' [-Werror=implicit-function-declaration]
1479 | kernfs_generic_poll(t->of, wait);
Fixes: aff037078eca ("sched/psi: use kernfs polling functions for PSI trigger polling")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Link: lore.kernel.org/r/202307310732.r65EQFY0-lkp@intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
init/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/init/Kconfig b/init/Kconfig
index 2028ed4d50f5b..de255842f5d09 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -627,6 +627,7 @@ config TASK_IO_ACCOUNTING
config PSI
bool "Pressure stall information tracking"
+ select KERNFS
help
Collect metrics that indicate how overcommitted the CPU, memory,
and IO capacity are in the system.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 118/600] x86/decompressor: Dont rely on upper 32 bits of GPRs being preserved
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (116 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 117/600] sched/psi: Select KERNFS as needed Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 119/600] arm64/sme: Dont use streaming mode to probe the maximum SME VL Greg Kroah-Hartman
` (492 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ard Biesheuvel,
Borislav Petkov (AMD), Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ard Biesheuvel <ardb@kernel.org>
[ Upstream commit 264b82fdb4989cf6a44a2bcd0c6ea05e8026b2ac ]
The 4-to-5 level mode switch trampoline disables long mode and paging in
order to be able to flick the LA57 bit. According to section 3.4.1.1 of
the x86 architecture manual [0], 64-bit GPRs might not retain the upper
32 bits of their contents across such a mode switch.
Given that RBP, RBX and RSI are live at this point, preserve them on the
stack, along with the return address that might be above 4G as well.
[0] Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 1: Basic Architecture
"Because the upper 32 bits of 64-bit general-purpose registers are
undefined in 32-bit modes, the upper 32 bits of any general-purpose
register are not preserved when switching from 64-bit mode to a 32-bit
mode (to protected mode or compatibility mode). Software must not
depend on these bits to maintain a value after a 64-bit to 32-bit
mode switch."
Fixes: 194a9749c73d650c ("x86/boot/compressed/64: Handle 5-level paging boot if kernel is above 4G")
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20230807162720.545787-2-ardb@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/boot/compressed/head_64.S | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
index d33f060900d23..b4bd6df29116f 100644
--- a/arch/x86/boot/compressed/head_64.S
+++ b/arch/x86/boot/compressed/head_64.S
@@ -485,11 +485,25 @@ SYM_CODE_START(startup_64)
/* Save the trampoline address in RCX */
movq %rax, %rcx
+ /* Set up 32-bit addressable stack */
+ leaq TRAMPOLINE_32BIT_STACK_END(%rcx), %rsp
+
+ /*
+ * Preserve live 64-bit registers on the stack: this is necessary
+ * because the architecture does not guarantee that GPRs will retain
+ * their full 64-bit values across a 32-bit mode switch.
+ */
+ pushq %rbp
+ pushq %rbx
+ pushq %rsi
+
/*
- * Load the address of trampoline_return() into RDI.
- * It will be used by the trampoline to return to the main code.
+ * Push the 64-bit address of trampoline_return() onto the new stack.
+ * It will be used by the trampoline to return to the main code. Due to
+ * the 32-bit mode switch, it cannot be kept it in a register either.
*/
leaq trampoline_return(%rip), %rdi
+ pushq %rdi
/* Switch to compatibility mode (CS.L = 0 CS.D = 1) via far return */
pushq $__KERNEL32_CS
@@ -497,6 +511,11 @@ SYM_CODE_START(startup_64)
pushq %rax
lretq
trampoline_return:
+ /* Restore live 64-bit registers */
+ popq %rsi
+ popq %rbx
+ popq %rbp
+
/* Restore the stack, the 32-bit trampoline uses its own stack */
leaq rva(boot_stack_end)(%rbx), %rsp
@@ -606,7 +625,7 @@ SYM_FUNC_END(.Lrelocated)
/*
* This is the 32-bit trampoline that will be copied over to low memory.
*
- * RDI contains the return address (might be above 4G).
+ * Return address is at the top of the stack (might be above 4G).
* ECX contains the base address of the trampoline memory.
* Non zero RDX means trampoline needs to enable 5-level paging.
*/
@@ -616,9 +635,6 @@ SYM_CODE_START(trampoline_32bit_src)
movl %eax, %ds
movl %eax, %ss
- /* Set up new stack */
- leal TRAMPOLINE_32BIT_STACK_END(%ecx), %esp
-
/* Disable paging */
movl %cr0, %eax
btrl $X86_CR0_PG_BIT, %eax
@@ -695,7 +711,7 @@ SYM_CODE_END(trampoline_32bit_src)
.code64
SYM_FUNC_START_LOCAL_NOALIGN(.Lpaging_enabled)
/* Return from the trampoline */
- jmp *%rdi
+ retq
SYM_FUNC_END(.Lpaging_enabled)
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 119/600] arm64/sme: Dont use streaming mode to probe the maximum SME VL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (117 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 118/600] x86/decompressor: Dont rely on upper 32 bits of GPRs being preserved Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 120/600] arm64/fpsimd: Only provide the length to cpufeature for xCR registers Greg Kroah-Hartman
` (491 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mark Brown, Catalin Marinas,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Brown <broonie@kernel.org>
[ Upstream commit fcd3d2c082b2a19da2326b2b38ba5a05536dcd32 ]
During development the architecture added the RDSVL instruction which means
we do not need to enter streaming mode to enumerate the SME VLs, use it
when we probe the maximum supported VL. Other users were already updated.
No functional change.
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20221223-arm64-sme-probe-max-v1-1-cbde68f67ad0@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Stable-dep-of: 01948b09edc3 ("arm64/fpsimd: Only provide the length to cpufeature for xCR registers")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/kernel/fpsimd.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 8cd59d387b90b..4aa579ff3125d 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -1296,7 +1296,6 @@ u64 read_smcr_features(void)
unsigned int vq_max;
sme_kernel_enable(NULL);
- sme_smstart_sm();
/*
* Set the maximum possible VL.
@@ -1306,11 +1305,9 @@ u64 read_smcr_features(void)
smcr = read_sysreg_s(SYS_SMCR_EL1);
smcr &= ~(u64)SMCR_ELx_LEN_MASK; /* Only the LEN field */
- vq_max = sve_vq_from_vl(sve_get_vl());
+ vq_max = sve_vq_from_vl(sme_get_vl());
smcr |= vq_max - 1; /* set LEN field to maximum effective value */
- sme_smstop_sm();
-
return smcr;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 120/600] arm64/fpsimd: Only provide the length to cpufeature for xCR registers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (118 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 119/600] arm64/sme: Dont use streaming mode to probe the maximum SME VL Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 121/600] sched/rt: Fix sysctl_sched_rr_timeslice intial value Greg Kroah-Hartman
` (490 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mark Brown, Catalin Marinas,
Will Deacon, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Brown <broonie@kernel.org>
[ Upstream commit 01948b09edc3fecf8486c57c2d2fb8b80886f3d0 ]
For both SVE and SME we abuse the generic register field comparison
support in the cpufeature code as part of our detection of unsupported
variations in the vector lengths available to PEs, reporting the maximum
vector lengths via ZCR_EL1.LEN and SMCR_EL1.LEN. Since these are
configuration registers rather than identification registers the
assumptions the cpufeature code makes about how unknown bitfields behave
are invalid, leading to warnings when SME features like FA64 are enabled
and we hotplug a CPU:
CPU features: SANITY CHECK: Unexpected variation in SYS_SMCR_EL1. Boot CPU: 0x0000000000000f, CPU3: 0x0000008000000f
CPU features: Unsupported CPU feature variation detected.
SVE has no controls other than the vector length so is not yet impacted
but the same issue will apply there if any are defined.
Since the only field we are interested in having the cpufeature code
handle is the length field and we use a custom read function to obtain
the value we can avoid these warnings by filtering out all other bits
when we return the register value, if we're doing that we don't need to
bother reading the register at all and can simply use the RDVL/RDSVL
value we were filling in instead.
Fixes: 2e0f2478ea37 ("arm64/sve: Probe SVE capabilities and usable vector lengths")
FixeS: b42990d3bf77 ("arm64/sme: Identify supported SME vector lengths at boot")
Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Link: https://lore.kernel.org/r/20230731-arm64-sme-fa64-hotplug-v2-1-7714c00dd902@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/kernel/fpsimd.c | 22 ++++------------------
1 file changed, 4 insertions(+), 18 deletions(-)
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 4aa579ff3125d..8c226d79abdfc 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -1133,9 +1133,6 @@ void sve_kernel_enable(const struct arm64_cpu_capabilities *__always_unused p)
*/
u64 read_zcr_features(void)
{
- u64 zcr;
- unsigned int vq_max;
-
/*
* Set the maximum possible VL, and write zeroes to all other
* bits to see if they stick.
@@ -1143,12 +1140,8 @@ u64 read_zcr_features(void)
sve_kernel_enable(NULL);
write_sysreg_s(ZCR_ELx_LEN_MASK, SYS_ZCR_EL1);
- zcr = read_sysreg_s(SYS_ZCR_EL1);
- zcr &= ~(u64)ZCR_ELx_LEN_MASK; /* find sticky 1s outside LEN field */
- vq_max = sve_vq_from_vl(sve_get_vl());
- zcr |= vq_max - 1; /* set LEN field to maximum effective value */
-
- return zcr;
+ /* Return LEN value that would be written to get the maximum VL */
+ return sve_vq_from_vl(sve_get_vl()) - 1;
}
void __init sve_setup(void)
@@ -1292,9 +1285,6 @@ void fa64_kernel_enable(const struct arm64_cpu_capabilities *__always_unused p)
*/
u64 read_smcr_features(void)
{
- u64 smcr;
- unsigned int vq_max;
-
sme_kernel_enable(NULL);
/*
@@ -1303,12 +1293,8 @@ u64 read_smcr_features(void)
write_sysreg_s(read_sysreg_s(SYS_SMCR_EL1) | SMCR_ELx_LEN_MASK,
SYS_SMCR_EL1);
- smcr = read_sysreg_s(SYS_SMCR_EL1);
- smcr &= ~(u64)SMCR_ELx_LEN_MASK; /* Only the LEN field */
- vq_max = sve_vq_from_vl(sme_get_vl());
- smcr |= vq_max - 1; /* set LEN field to maximum effective value */
-
- return smcr;
+ /* Return LEN value that would be written to get the maximum VL */
+ return sve_vq_from_vl(sme_get_vl()) - 1;
}
void __init sme_setup(void)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 121/600] sched/rt: Fix sysctl_sched_rr_timeslice intial value
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (119 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 120/600] arm64/fpsimd: Only provide the length to cpufeature for xCR registers Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 122/600] perf/imx_ddr: dont enable counter0 if none of 4 counters are used Greg Kroah-Hartman
` (489 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Cyril Hrubis, Peter Zijlstra (Intel),
Petr Vorel, Mel Gorman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cyril Hrubis <chrubis@suse.cz>
[ Upstream commit c7fcb99877f9f542c918509b2801065adcaf46fa ]
There is a 10% rounding error in the intial value of the
sysctl_sched_rr_timeslice with CONFIG_HZ_300=y.
This was found with LTP test sched_rr_get_interval01:
sched_rr_get_interval01.c:57: TPASS: sched_rr_get_interval() passed
sched_rr_get_interval01.c:64: TPASS: Time quantum 0s 99999990ns
sched_rr_get_interval01.c:72: TFAIL: /proc/sys/kernel/sched_rr_timeslice_ms != 100 got 90
sched_rr_get_interval01.c:57: TPASS: sched_rr_get_interval() passed
sched_rr_get_interval01.c:64: TPASS: Time quantum 0s 99999990ns
sched_rr_get_interval01.c:72: TFAIL: /proc/sys/kernel/sched_rr_timeslice_ms != 100 got 90
What this test does is to compare the return value from the
sched_rr_get_interval() and the sched_rr_timeslice_ms sysctl file and
fails if they do not match.
The problem it found is the intial sysctl file value which was computed as:
static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
which works fine as long as MSEC_PER_SEC is multiple of HZ, however it
introduces 10% rounding error for CONFIG_HZ_300:
(MSEC_PER_SEC / HZ) * (100 * HZ / 1000)
(1000 / 300) * (100 * 300 / 1000)
3 * 30 = 90
This can be easily fixed by reversing the order of the multiplication
and division. After this fix we get:
(MSEC_PER_SEC * (100 * HZ / 1000)) / HZ
(1000 * (100 * 300 / 1000)) / 300
(1000 * 30) / 300 = 100
Fixes: 975e155ed873 ("sched/rt: Show the 'sched_rr_timeslice' SCHED_RR timeslice tuning knob in milliseconds")
Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Acked-by: Mel Gorman <mgorman@suse.de>
Tested-by: Petr Vorel <pvorel@suse.cz>
Link: https://lore.kernel.org/r/20230802151906.25258-2-chrubis@suse.cz
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/sched/rt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
index 4f5796dd26a56..576eb2f51f043 100644
--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -25,7 +25,7 @@ unsigned int sysctl_sched_rt_period = 1000000;
int sysctl_sched_rt_runtime = 950000;
#ifdef CONFIG_SYSCTL
-static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC / HZ) * RR_TIMESLICE;
+static int sysctl_sched_rr_timeslice = (MSEC_PER_SEC * RR_TIMESLICE) / HZ;
static int sched_rt_handler(struct ctl_table *table, int write, void *buffer,
size_t *lenp, loff_t *ppos);
static int sched_rr_handler(struct ctl_table *table, int write, void *buffer,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 122/600] perf/imx_ddr: dont enable counter0 if none of 4 counters are used
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (120 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 121/600] sched/rt: Fix sysctl_sched_rr_timeslice intial value Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 123/600] selftests/futex: Order calls to futex_lock_pi Greg Kroah-Hartman
` (488 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xu Yang, Frank Li, Will Deacon,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xu Yang <xu.yang_2@nxp.com>
[ Upstream commit f4e2bd91ddf5e8543cbe7ad80b3fba3d2dc63fa3 ]
In current driver, counter0 will be enabled after ddr_perf_pmu_enable()
is called even though none of the 4 counters are used. This will cause
counter0 continue to count until ddr_perf_pmu_disabled() is called. If
pmu is not disabled all the time, the pmu interrupt will be asserted
from time to time due to counter0 will overflow and irq handler will
clear it. It's not an expected behavior. This patch will not enable
counter0 if none of 4 counters are used.
Fixes: 9a66d36cc7ac ("drivers/perf: imx_ddr: Add DDR performance counter support to perf")
Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://lore.kernel.org/r/20230811015438.1999307-2-xu.yang_2@nxp.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/perf/fsl_imx8_ddr_perf.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/drivers/perf/fsl_imx8_ddr_perf.c b/drivers/perf/fsl_imx8_ddr_perf.c
index 8e058e08fe810..cd4ce2b4906d1 100644
--- a/drivers/perf/fsl_imx8_ddr_perf.c
+++ b/drivers/perf/fsl_imx8_ddr_perf.c
@@ -102,6 +102,7 @@ struct ddr_pmu {
const struct fsl_ddr_devtype_data *devtype_data;
int irq;
int id;
+ int active_counter;
};
static ssize_t ddr_perf_identifier_show(struct device *dev,
@@ -496,6 +497,10 @@ static void ddr_perf_event_start(struct perf_event *event, int flags)
ddr_perf_counter_enable(pmu, event->attr.config, counter, true);
+ if (!pmu->active_counter++)
+ ddr_perf_counter_enable(pmu, EVENT_CYCLES_ID,
+ EVENT_CYCLES_COUNTER, true);
+
hwc->state = 0;
}
@@ -550,6 +555,10 @@ static void ddr_perf_event_stop(struct perf_event *event, int flags)
ddr_perf_counter_enable(pmu, event->attr.config, counter, false);
ddr_perf_event_update(event);
+ if (!--pmu->active_counter)
+ ddr_perf_counter_enable(pmu, EVENT_CYCLES_ID,
+ EVENT_CYCLES_COUNTER, false);
+
hwc->state |= PERF_HES_STOPPED;
}
@@ -568,25 +577,10 @@ static void ddr_perf_event_del(struct perf_event *event, int flags)
static void ddr_perf_pmu_enable(struct pmu *pmu)
{
- struct ddr_pmu *ddr_pmu = to_ddr_pmu(pmu);
-
- /* enable cycle counter if cycle is not active event list */
- if (ddr_pmu->events[EVENT_CYCLES_COUNTER] == NULL)
- ddr_perf_counter_enable(ddr_pmu,
- EVENT_CYCLES_ID,
- EVENT_CYCLES_COUNTER,
- true);
}
static void ddr_perf_pmu_disable(struct pmu *pmu)
{
- struct ddr_pmu *ddr_pmu = to_ddr_pmu(pmu);
-
- if (ddr_pmu->events[EVENT_CYCLES_COUNTER] == NULL)
- ddr_perf_counter_enable(ddr_pmu,
- EVENT_CYCLES_ID,
- EVENT_CYCLES_COUNTER,
- false);
}
static int ddr_perf_init(struct ddr_pmu *pmu, void __iomem *base,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 123/600] selftests/futex: Order calls to futex_lock_pi
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (121 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 122/600] perf/imx_ddr: dont enable counter0 if none of 4 counters are used Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 124/600] s390/pkey: fix/harmonize internal keyblob headers Greg Kroah-Hartman
` (487 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Nysal Jan K.A, Shuah Khan,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nysal Jan K.A <nysal@linux.ibm.com>
[ Upstream commit fbf4dec702774286db409815ffb077711a96b824 ]
Observed occassional failures in the futex_wait_timeout test:
ok 1 futex_wait relative succeeds
ok 2 futex_wait_bitset realtime succeeds
ok 3 futex_wait_bitset monotonic succeeds
ok 4 futex_wait_requeue_pi realtime succeeds
ok 5 futex_wait_requeue_pi monotonic succeeds
not ok 6 futex_lock_pi realtime returned 0
......
The test expects the child thread to complete some steps before
the parent thread gets to run. There is an implicit expectation
of the order of invocation of futex_lock_pi between the child thread
and the parent thread. Make this order explicit. If the order is
not met, the futex_lock_pi call in the parent thread succeeds and
will not timeout.
Fixes: f4addd54b161 ("selftests: futex: Expand timeout test")
Signed-off-by: Nysal Jan K.A <nysal@linux.ibm.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../selftests/futex/functional/futex_wait_timeout.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/tools/testing/selftests/futex/functional/futex_wait_timeout.c b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
index 3651ce17beeb9..d183f878360bc 100644
--- a/tools/testing/selftests/futex/functional/futex_wait_timeout.c
+++ b/tools/testing/selftests/futex/functional/futex_wait_timeout.c
@@ -24,6 +24,7 @@
static long timeout_ns = 100000; /* 100us default timeout */
static futex_t futex_pi;
+static pthread_barrier_t barrier;
void usage(char *prog)
{
@@ -48,6 +49,8 @@ void *get_pi_lock(void *arg)
if (ret != 0)
error("futex_lock_pi failed\n", ret);
+ pthread_barrier_wait(&barrier);
+
/* Blocks forever */
ret = futex_wait(&lock, 0, NULL, 0);
error("futex_wait failed\n", ret);
@@ -130,6 +133,7 @@ int main(int argc, char *argv[])
basename(argv[0]));
ksft_print_msg("\tArguments: timeout=%ldns\n", timeout_ns);
+ pthread_barrier_init(&barrier, NULL, 2);
pthread_create(&thread, NULL, get_pi_lock, NULL);
/* initialize relative timeout */
@@ -163,6 +167,9 @@ int main(int argc, char *argv[])
res = futex_wait_requeue_pi(&f1, f1, &futex_pi, &to, 0);
test_timeout(res, &ret, "futex_wait_requeue_pi monotonic", ETIMEDOUT);
+ /* Wait until the other thread calls futex_lock_pi() */
+ pthread_barrier_wait(&barrier);
+ pthread_barrier_destroy(&barrier);
/*
* FUTEX_LOCK_PI with CLOCK_REALTIME
* Due to historical reasons, FUTEX_LOCK_PI supports only realtime
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 124/600] s390/pkey: fix/harmonize internal keyblob headers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (122 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 123/600] selftests/futex: Order calls to futex_lock_pi Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 125/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling in PKEY_GENSECK2 IOCTL Greg Kroah-Hartman
` (486 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Holger Dengler, Ingo Franzki,
Heiko Carstens, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Holger Dengler <dengler@linux.ibm.com>
[ Upstream commit 37a08f010b7c423b5e4c9ed3b187d21166553007 ]
Commit 'fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC
private keys")' introduced PKEY_TYPE_EP11_AES as a supplement to
PKEY_TYPE_EP11. All pkeys have an internal header/payload structure,
which is opaque to the userspace. The header structures for
PKEY_TYPE_EP11 and PKEY_TYPE_EP11_AES are nearly identical and there
is no reason, why different structures are used. In preparation to fix
the keyversion handling in the broken PKEY IOCTLs, the same header
structure is used for PKEY_TYPE_EP11 and PKEY_TYPE_EP11_AES. This
reduces the number of different code paths and increases the
readability.
Fixes: fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC private keys")
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Reviewed-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/crypto/pkey_api.c | 2 +-
drivers/s390/crypto/zcrypt_ep11misc.c | 4 ++--
drivers/s390/crypto/zcrypt_ep11misc.h | 9 +--------
3 files changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/s390/crypto/pkey_api.c b/drivers/s390/crypto/pkey_api.c
index a8def50c149bd..e650df3fe7ccb 100644
--- a/drivers/s390/crypto/pkey_api.c
+++ b/drivers/s390/crypto/pkey_api.c
@@ -747,7 +747,7 @@ static int pkey_verifykey2(const u8 *key, size_t keylen,
if (ktype)
*ktype = PKEY_TYPE_EP11;
if (ksize)
- *ksize = kb->head.keybitlen;
+ *ksize = kb->head.bitlen;
rc = ep11_findcard2(&_apqns, &_nr_apqns, *cardnr, *domain,
ZCRYPT_CEX7, EP11_API_V, kb->wkvp);
diff --git a/drivers/s390/crypto/zcrypt_ep11misc.c b/drivers/s390/crypto/zcrypt_ep11misc.c
index b1c29017be5bc..497de7faa2fc5 100644
--- a/drivers/s390/crypto/zcrypt_ep11misc.c
+++ b/drivers/s390/crypto/zcrypt_ep11misc.c
@@ -787,7 +787,7 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
kb->head.type = TOKTYPE_NON_CCA;
kb->head.len = rep_pl->data_len;
kb->head.version = TOKVER_EP11_AES;
- kb->head.keybitlen = keybitsize;
+ kb->head.bitlen = keybitsize;
out:
kfree(req);
@@ -1055,7 +1055,7 @@ static int ep11_unwrapkey(u16 card, u16 domain,
kb->head.type = TOKTYPE_NON_CCA;
kb->head.len = rep_pl->data_len;
kb->head.version = TOKVER_EP11_AES;
- kb->head.keybitlen = keybitsize;
+ kb->head.bitlen = keybitsize;
out:
kfree(req);
diff --git a/drivers/s390/crypto/zcrypt_ep11misc.h b/drivers/s390/crypto/zcrypt_ep11misc.h
index 07445041869fe..912b3918c10a1 100644
--- a/drivers/s390/crypto/zcrypt_ep11misc.h
+++ b/drivers/s390/crypto/zcrypt_ep11misc.h
@@ -29,14 +29,7 @@ struct ep11keyblob {
union {
u8 session[32];
/* only used for PKEY_TYPE_EP11: */
- struct {
- u8 type; /* 0x00 (TOKTYPE_NON_CCA) */
- u8 res0; /* unused */
- u16 len; /* total length in bytes of this blob */
- u8 version; /* 0x03 (TOKVER_EP11_AES) */
- u8 res1; /* unused */
- u16 keybitlen; /* clear key bit len, 0 for unknown */
- } head;
+ struct ep11kblob_header head;
};
u8 wkvp[16]; /* wrapping key verification pattern */
u64 attr; /* boolean key attributes */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 125/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling in PKEY_GENSECK2 IOCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (123 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 124/600] s390/pkey: fix/harmonize internal keyblob headers Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 126/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling for sysfs attributes Greg Kroah-Hartman
` (485 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Holger Dengler, Ingo Franzki,
Heiko Carstens, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Holger Dengler <dengler@linux.ibm.com>
[ Upstream commit fb249ce7f7bfd8621a38e4ad401ba74b680786d4 ]
Commit 'fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC
private keys")' introduced PKEY_TYPE_EP11_AES for the PKEY_GENSECK2
IOCTL, to enable userspace to generate securekey blobs of this
type. Unfortunately, all PKEY_GENSECK2 IOCTL requests for
PKEY_TYPE_EP11_AES return with an error (-EINVAL). Fix the handling
for PKEY_TYPE_EP11_AES in PKEY_GENSECK2 IOCTL, so that userspace can
generate securekey blobs of this type.
The start of the header and the keyblob, as well as the length need
special handling, depending on the internal keyversion. Add a helper
function that splits an uninitialized buffer into start and size of
the header as well as start and size of the payload, depending on the
requested keyversion.
Do the header-related calculations and the raw genkey request handling
in separate functions. Use the raw genkey request function for
internal purposes.
Fixes: fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC private keys")
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Reviewed-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/s390/crypto/pkey_api.c | 18 +++--
drivers/s390/crypto/zcrypt_ep11misc.c | 103 ++++++++++++++++++++++----
drivers/s390/crypto/zcrypt_ep11misc.h | 2 +-
3 files changed, 102 insertions(+), 21 deletions(-)
diff --git a/drivers/s390/crypto/pkey_api.c b/drivers/s390/crypto/pkey_api.c
index e650df3fe7ccb..79568da580c67 100644
--- a/drivers/s390/crypto/pkey_api.c
+++ b/drivers/s390/crypto/pkey_api.c
@@ -565,6 +565,11 @@ static int pkey_genseckey2(const struct pkey_apqn *apqns, size_t nr_apqns,
if (*keybufsize < MINEP11AESKEYBLOBSIZE)
return -EINVAL;
break;
+ case PKEY_TYPE_EP11_AES:
+ if (*keybufsize < (sizeof(struct ep11kblob_header) +
+ MINEP11AESKEYBLOBSIZE))
+ return -EINVAL;
+ break;
default:
return -EINVAL;
}
@@ -581,9 +586,10 @@ static int pkey_genseckey2(const struct pkey_apqn *apqns, size_t nr_apqns,
for (i = 0, rc = -ENODEV; i < nr_apqns; i++) {
card = apqns[i].card;
dom = apqns[i].domain;
- if (ktype == PKEY_TYPE_EP11) {
+ if (ktype == PKEY_TYPE_EP11 ||
+ ktype == PKEY_TYPE_EP11_AES) {
rc = ep11_genaeskey(card, dom, ksize, kflags,
- keybuf, keybufsize);
+ keybuf, keybufsize, ktype);
} else if (ktype == PKEY_TYPE_CCA_DATA) {
rc = cca_genseckey(card, dom, ksize, keybuf);
*keybufsize = (rc ? 0 : SECKEYBLOBSIZE);
@@ -1313,7 +1319,7 @@ static long pkey_unlocked_ioctl(struct file *filp, unsigned int cmd,
apqns = _copy_apqns_from_user(kgs.apqns, kgs.apqn_entries);
if (IS_ERR(apqns))
return PTR_ERR(apqns);
- kkey = kmalloc(klen, GFP_KERNEL);
+ kkey = kzalloc(klen, GFP_KERNEL);
if (!kkey) {
kfree(apqns);
return -ENOMEM;
@@ -1969,7 +1975,8 @@ static ssize_t pkey_ep11_aes_attr_read(enum pkey_key_size keybits,
for (i = 0, rc = -ENODEV; i < nr_apqns; i++) {
card = apqns[i] >> 16;
dom = apqns[i] & 0xFFFF;
- rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize);
+ rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize,
+ PKEY_TYPE_EP11);
if (rc == 0)
break;
}
@@ -1979,7 +1986,8 @@ static ssize_t pkey_ep11_aes_attr_read(enum pkey_key_size keybits,
if (is_xts) {
keysize = MAXEP11AESKEYBLOBSIZE;
buf += MAXEP11AESKEYBLOBSIZE;
- rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize);
+ rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize,
+ PKEY_TYPE_EP11);
if (rc == 0)
return 2 * MAXEP11AESKEYBLOBSIZE;
}
diff --git a/drivers/s390/crypto/zcrypt_ep11misc.c b/drivers/s390/crypto/zcrypt_ep11misc.c
index 497de7faa2fc5..20bbeec1a1a22 100644
--- a/drivers/s390/crypto/zcrypt_ep11misc.c
+++ b/drivers/s390/crypto/zcrypt_ep11misc.c
@@ -113,6 +113,50 @@ static void __exit card_cache_free(void)
spin_unlock_bh(&card_list_lock);
}
+static int ep11_kb_split(const u8 *kb, size_t kblen, u32 kbver,
+ struct ep11kblob_header **kbhdr, size_t *kbhdrsize,
+ u8 **kbpl, size_t *kbplsize)
+{
+ struct ep11kblob_header *hdr = NULL;
+ size_t hdrsize, plsize = 0;
+ int rc = -EINVAL;
+ u8 *pl = NULL;
+
+ if (kblen < sizeof(struct ep11kblob_header))
+ goto out;
+ hdr = (struct ep11kblob_header *)kb;
+
+ switch (kbver) {
+ case TOKVER_EP11_AES:
+ /* header overlays the payload */
+ hdrsize = 0;
+ break;
+ case TOKVER_EP11_ECC_WITH_HEADER:
+ case TOKVER_EP11_AES_WITH_HEADER:
+ /* payload starts after the header */
+ hdrsize = sizeof(struct ep11kblob_header);
+ break;
+ default:
+ goto out;
+ }
+
+ plsize = kblen - hdrsize;
+ pl = (u8 *)kb + hdrsize;
+
+ if (kbhdr)
+ *kbhdr = hdr;
+ if (kbhdrsize)
+ *kbhdrsize = hdrsize;
+ if (kbpl)
+ *kbpl = pl;
+ if (kbplsize)
+ *kbplsize = plsize;
+
+ rc = 0;
+out:
+ return rc;
+}
+
/*
* Simple check if the key blob is a valid EP11 AES key blob with header.
*/
@@ -664,8 +708,9 @@ EXPORT_SYMBOL(ep11_get_domain_info);
*/
#define KEY_ATTR_DEFAULTS 0x00200c00
-int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
- u8 *keybuf, size_t *keybufsize)
+static int _ep11_genaeskey(u16 card, u16 domain,
+ u32 keybitsize, u32 keygenflags,
+ u8 *keybuf, size_t *keybufsize)
{
struct keygen_req_pl {
struct pl_head head;
@@ -701,7 +746,6 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
struct ep11_cprb *req = NULL, *rep = NULL;
struct ep11_target_dev target;
struct ep11_urb *urb = NULL;
- struct ep11keyblob *kb;
int api, rc = -ENOMEM;
switch (keybitsize) {
@@ -780,14 +824,9 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
goto out;
}
- /* copy key blob and set header values */
+ /* copy key blob */
memcpy(keybuf, rep_pl->data, rep_pl->data_len);
*keybufsize = rep_pl->data_len;
- kb = (struct ep11keyblob *)keybuf;
- kb->head.type = TOKTYPE_NON_CCA;
- kb->head.len = rep_pl->data_len;
- kb->head.version = TOKVER_EP11_AES;
- kb->head.bitlen = keybitsize;
out:
kfree(req);
@@ -795,6 +834,43 @@ int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
kfree(urb);
return rc;
}
+
+int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
+ u8 *keybuf, size_t *keybufsize, u32 keybufver)
+{
+ struct ep11kblob_header *hdr;
+ size_t hdr_size, pl_size;
+ u8 *pl;
+ int rc;
+
+ switch (keybufver) {
+ case TOKVER_EP11_AES:
+ case TOKVER_EP11_AES_WITH_HEADER:
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ rc = ep11_kb_split(keybuf, *keybufsize, keybufver,
+ &hdr, &hdr_size, &pl, &pl_size);
+ if (rc)
+ return rc;
+
+ rc = _ep11_genaeskey(card, domain, keybitsize, keygenflags,
+ pl, &pl_size);
+ if (rc)
+ return rc;
+
+ *keybufsize = hdr_size + pl_size;
+
+ /* update header information */
+ hdr->type = TOKTYPE_NON_CCA;
+ hdr->len = *keybufsize;
+ hdr->version = keybufver;
+ hdr->bitlen = keybitsize;
+
+ return 0;
+}
EXPORT_SYMBOL(ep11_genaeskey);
static int ep11_cryptsingle(u16 card, u16 domain,
@@ -1201,7 +1277,6 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
const u8 *clrkey, u8 *keybuf, size_t *keybufsize)
{
int rc;
- struct ep11keyblob *kb;
u8 encbuf[64], *kek = NULL;
size_t clrkeylen, keklen, encbuflen = sizeof(encbuf);
@@ -1223,17 +1298,15 @@ int ep11_clr2keyblob(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
}
/* Step 1: generate AES 256 bit random kek key */
- rc = ep11_genaeskey(card, domain, 256,
- 0x00006c00, /* EN/DECRYPT, WRAP/UNWRAP */
- kek, &keklen);
+ rc = _ep11_genaeskey(card, domain, 256,
+ 0x00006c00, /* EN/DECRYPT, WRAP/UNWRAP */
+ kek, &keklen);
if (rc) {
DEBUG_ERR(
"%s generate kek key failed, rc=%d\n",
__func__, rc);
goto out;
}
- kb = (struct ep11keyblob *)kek;
- memset(&kb->head, 0, sizeof(kb->head));
/* Step 2: encrypt clear key value with the kek key */
rc = ep11_cryptsingle(card, domain, 0, 0, def_iv, kek, keklen,
diff --git a/drivers/s390/crypto/zcrypt_ep11misc.h b/drivers/s390/crypto/zcrypt_ep11misc.h
index 912b3918c10a1..ed328c354bade 100644
--- a/drivers/s390/crypto/zcrypt_ep11misc.h
+++ b/drivers/s390/crypto/zcrypt_ep11misc.h
@@ -107,7 +107,7 @@ int ep11_get_domain_info(u16 card, u16 domain, struct ep11_domain_info *info);
* Generate (random) EP11 AES secure key.
*/
int ep11_genaeskey(u16 card, u16 domain, u32 keybitsize, u32 keygenflags,
- u8 *keybuf, size_t *keybufsize);
+ u8 *keybuf, size_t *keybufsize, u32 keybufver);
/*
* Generate EP11 AES secure key with given clear key value.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 126/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling for sysfs attributes
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (124 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 125/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling in PKEY_GENSECK2 IOCTL Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 127/600] s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs Greg Kroah-Hartman
` (484 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Holger Dengler, Ingo Franzki,
Heiko Carstens, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Holger Dengler <dengler@linux.ibm.com>
[ Upstream commit b9352e4b9b9eff949bcc6907b8569b3a1d992f1e ]
Commit 'fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC
private keys")' introduced a new PKEY_TYPE_EP11_AES securekey type as
a supplement to the existing PKEY_TYPE_EP11 (which won't work in
environments with session-bound keys). The pkey EP11 securekey
attributes use PKEY_TYPE_EP11_AES (instead of PKEY_TYPE_EP11)
keyblobs, to make the generated keyblobs usable also in environments,
where session-bound keys are required.
There should be no negative impacts to userspace because the internal
structure of the keyblobs is opaque. The increased size of the
generated keyblobs is reflected by the changed size of the attributes.
Fixes: fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC private keys")
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Reviewed-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/s390/include/uapi/asm/pkey.h | 2 +-
drivers/s390/crypto/pkey_api.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/s390/include/uapi/asm/pkey.h b/arch/s390/include/uapi/asm/pkey.h
index 924b876f992c1..29c6fd369761e 100644
--- a/arch/s390/include/uapi/asm/pkey.h
+++ b/arch/s390/include/uapi/asm/pkey.h
@@ -26,7 +26,7 @@
#define MAXCLRKEYSIZE 32 /* a clear key value may be up to 32 bytes */
#define MAXAESCIPHERKEYSIZE 136 /* our aes cipher keys have always 136 bytes */
#define MINEP11AESKEYBLOBSIZE 256 /* min EP11 AES key blob size */
-#define MAXEP11AESKEYBLOBSIZE 320 /* max EP11 AES key blob size */
+#define MAXEP11AESKEYBLOBSIZE 336 /* max EP11 AES key blob size */
/* Minimum size of a key blob */
#define MINKEYBLOBSIZE SECKEYBLOBSIZE
diff --git a/drivers/s390/crypto/pkey_api.c b/drivers/s390/crypto/pkey_api.c
index 79568da580c67..2b92ec20ed68e 100644
--- a/drivers/s390/crypto/pkey_api.c
+++ b/drivers/s390/crypto/pkey_api.c
@@ -1947,7 +1947,7 @@ static struct attribute_group ccacipher_attr_group = {
* (i.e. off != 0 or count < key blob size) -EINVAL is returned.
* This function and the sysfs attributes using it provide EP11 key blobs
* padded to the upper limit of MAXEP11AESKEYBLOBSIZE which is currently
- * 320 bytes.
+ * 336 bytes.
*/
static ssize_t pkey_ep11_aes_attr_read(enum pkey_key_size keybits,
bool is_xts, char *buf, loff_t off,
@@ -1976,7 +1976,7 @@ static ssize_t pkey_ep11_aes_attr_read(enum pkey_key_size keybits,
card = apqns[i] >> 16;
dom = apqns[i] & 0xFFFF;
rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize,
- PKEY_TYPE_EP11);
+ PKEY_TYPE_EP11_AES);
if (rc == 0)
break;
}
@@ -1987,7 +1987,7 @@ static ssize_t pkey_ep11_aes_attr_read(enum pkey_key_size keybits,
keysize = MAXEP11AESKEYBLOBSIZE;
buf += MAXEP11AESKEYBLOBSIZE;
rc = ep11_genaeskey(card, dom, keybits, 0, buf, &keysize,
- PKEY_TYPE_EP11);
+ PKEY_TYPE_EP11_AES);
if (rc == 0)
return 2 * MAXEP11AESKEYBLOBSIZE;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 127/600] s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (125 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 126/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling for sysfs attributes Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 128/600] irqchip/loongson-eiointc: Fix return value checking of eiointc_index Greg Kroah-Hartman
` (483 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Holger Dengler, Ingo Franzki,
Heiko Carstens, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Holger Dengler <dengler@linux.ibm.com>
[ Upstream commit cba33db3fc4dbf2e54294b0e499d2335a3a00d78 ]
Commit 'fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC
private keys")' introduced PKEY_TYPE_EP11_AES securekey blobs as a
supplement to the PKEY_TYPE_EP11 (which won't work in environments
with session-bound keys). This new keyblobs has a different maximum
size, so fix paes crypto module to accept also these larger keyblobs.
Fixes: fa6999e326fe ("s390/pkey: support CCA and EP11 secure ECC private keys")
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
Reviewed-by: Ingo Franzki <ifranzki@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/s390/crypto/paes_s390.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/s390/crypto/paes_s390.c b/arch/s390/crypto/paes_s390.c
index a279b7d23a5e2..621322eb0e681 100644
--- a/arch/s390/crypto/paes_s390.c
+++ b/arch/s390/crypto/paes_s390.c
@@ -35,7 +35,7 @@
* and padding is also possible, the limits need to be generous.
*/
#define PAES_MIN_KEYSIZE 16
-#define PAES_MAX_KEYSIZE 320
+#define PAES_MAX_KEYSIZE MAXEP11AESKEYBLOBSIZE
static u8 *ctrblk;
static DEFINE_MUTEX(ctrblk_lock);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 128/600] irqchip/loongson-eiointc: Fix return value checking of eiointc_index
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (126 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 127/600] s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 129/600] ACPI: x86: s2idle: Post-increment variables when getting constraints Greg Kroah-Hartman
` (482 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bibo Mao,
Philippe Mathieu-Daudé, Marc Zyngier, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bibo Mao <maobibo@loongson.cn>
[ Upstream commit 2e99b73afde18853754c5fae8e8d1a66fe5e3f64 ]
Return value of function eiointc_index is int, however it is converted
into uint32_t and then compared smaller than zero, this will cause logic
problem.
Fixes: dd281e1a1a93 ("irqchip: Add Loongson Extended I/O interrupt controller support")
Signed-off-by: Bibo Mao <maobibo@loongson.cn>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20230811095805.2974722-2-maobibo@loongson.cn
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/irqchip/irq-loongson-eiointc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/irqchip/irq-loongson-eiointc.c b/drivers/irqchip/irq-loongson-eiointc.c
index ac04aeaa2d308..3d99b8bdd8ef1 100644
--- a/drivers/irqchip/irq-loongson-eiointc.c
+++ b/drivers/irqchip/irq-loongson-eiointc.c
@@ -145,7 +145,7 @@ static int eiointc_router_init(unsigned int cpu)
int i, bit;
uint32_t data;
uint32_t node = cpu_to_eio_node(cpu);
- uint32_t index = eiointc_index(node);
+ int index = eiointc_index(node);
if (index < 0) {
pr_err("Error: invalid nodemap!\n");
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 129/600] ACPI: x86: s2idle: Post-increment variables when getting constraints
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (127 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 128/600] irqchip/loongson-eiointc: Fix return value checking of eiointc_index Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 130/600] ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table Greg Kroah-Hartman
` (481 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuppuswamy Sathyanarayanan,
Bjorn Helgaas, Mario Limonciello, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mario Limonciello <mario.limonciello@amd.com>
[ Upstream commit 3c6b1212d20bbbffcad5709ab0f2d5ed9b5859a8 ]
When code uses a pre-increment it makes the reader question "why".
In the constraint fetching code there is no reason for the variables
to be pre-incremented so adjust to post-increment.
No intended functional changes.
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Suggested-by: Bjorn Helgaas <helgaas@kernel.org>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Stable-dep-of: 9cc8cd086f05 ("ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/acpi/x86/s2idle.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index e499c60c45791..3a9195df1aab3 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -122,13 +122,13 @@ static void lpi_device_get_constraints_amd(void)
acpi_handle_debug(lps0_device_handle,
"LPI: constraints list begin:\n");
- for (j = 0; j < package->package.count; ++j) {
+ for (j = 0; j < package->package.count; j++) {
union acpi_object *info_obj = &package->package.elements[j];
struct lpi_device_constraint_amd dev_info = {};
struct lpi_constraints *list;
acpi_status status;
- for (k = 0; k < info_obj->package.count; ++k) {
+ for (k = 0; k < info_obj->package.count; k++) {
union acpi_object *obj = &info_obj->package.elements[k];
list = &lpi_constraints_table[lpi_constraints_table_size];
@@ -213,7 +213,7 @@ static void lpi_device_get_constraints(void)
if (!package)
continue;
- for (j = 0; j < package->package.count; ++j) {
+ for (j = 0; j < package->package.count; j++) {
union acpi_object *element =
&(package->package.elements[j]);
@@ -245,7 +245,7 @@ static void lpi_device_get_constraints(void)
constraint->min_dstate = -1;
- for (j = 0; j < package_count; ++j) {
+ for (j = 0; j < package_count; j++) {
union acpi_object *info_obj = &info.package[j];
union acpi_object *cnstr_pkg;
union acpi_object *obj;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 130/600] ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (128 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 129/600] ACPI: x86: s2idle: Post-increment variables when getting constraints Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 131/600] thermal/of: Fix potential uninitialized value access Greg Kroah-Hartman
` (480 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mario Limonciello, Rafael J. Wysocki,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mario Limonciello <mario.limonciello@amd.com>
[ Upstream commit 9cc8cd086f05d9a01026c65c98da88561e9c619e ]
The constraints table should be resetting the `list` object
after running through all of `info_obj` iterations.
This adjusts whitespace as well as less code will now be included
with each loop. This fixes a functional problem is fixed where a
badly formed package in the inner loop may have incorrect data.
Fixes: 146f1ed852a8 ("ACPI: PM: s2idle: Add AMD support to handle _DSM")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/acpi/x86/s2idle.c | 31 ++++++++++++-------------------
1 file changed, 12 insertions(+), 19 deletions(-)
diff --git a/drivers/acpi/x86/s2idle.c b/drivers/acpi/x86/s2idle.c
index 3a9195df1aab3..ec84da6cc1bff 100644
--- a/drivers/acpi/x86/s2idle.c
+++ b/drivers/acpi/x86/s2idle.c
@@ -128,12 +128,11 @@ static void lpi_device_get_constraints_amd(void)
struct lpi_constraints *list;
acpi_status status;
+ list = &lpi_constraints_table[lpi_constraints_table_size];
+
for (k = 0; k < info_obj->package.count; k++) {
union acpi_object *obj = &info_obj->package.elements[k];
- list = &lpi_constraints_table[lpi_constraints_table_size];
- list->min_dstate = -1;
-
switch (k) {
case 0:
dev_info.enabled = obj->integer.value;
@@ -148,27 +147,21 @@ static void lpi_device_get_constraints_amd(void)
dev_info.min_dstate = obj->integer.value;
break;
}
+ }
- if (!dev_info.enabled || !dev_info.name ||
- !dev_info.min_dstate)
- continue;
+ if (!dev_info.enabled || !dev_info.name ||
+ !dev_info.min_dstate)
+ continue;
- status = acpi_get_handle(NULL, dev_info.name,
- &list->handle);
- if (ACPI_FAILURE(status))
- continue;
+ status = acpi_get_handle(NULL, dev_info.name, &list->handle);
+ if (ACPI_FAILURE(status))
+ continue;
- acpi_handle_debug(lps0_device_handle,
- "Name:%s\n", dev_info.name);
+ acpi_handle_debug(lps0_device_handle,
+ "Name:%s\n", dev_info.name);
- list->min_dstate = dev_info.min_dstate;
+ list->min_dstate = dev_info.min_dstate;
- if (list->min_dstate < 0) {
- acpi_handle_debug(lps0_device_handle,
- "Incomplete constraint defined\n");
- continue;
- }
- }
lpi_constraints_table_size++;
}
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 131/600] thermal/of: Fix potential uninitialized value access
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (129 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 130/600] ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 132/600] cpufreq: amd-pstate-ut: Remove module parameter access Greg Kroah-Hartman
` (479 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Peng Fan, Rafael J. Wysocki,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peng Fan <peng.fan@nxp.com>
[ Upstream commit f96801f0cfcefc0a16b146596577c53c75ee9773 ]
If of_parse_phandle_with_args() called from __thermal_of_bind() or
__thermal_of_unbind() fails, cooling_spec.np will not be initialized,
so move the of_node_put() calls below the respective return value checks
to avoid dereferencing an uninitialized pointer.
Fixes: 3fd6d6e2b4e8 ("thermal/of: Rework the thermal device tree initialization")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/thermal/thermal_of.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/thermal_of.c b/drivers/thermal/thermal_of.c
index aacba30bc10c1..762d1990180bf 100644
--- a/drivers/thermal/thermal_of.c
+++ b/drivers/thermal/thermal_of.c
@@ -409,13 +409,13 @@ static int __thermal_of_unbind(struct device_node *map_np, int index, int trip_i
ret = of_parse_phandle_with_args(map_np, "cooling-device", "#cooling-cells",
index, &cooling_spec);
- of_node_put(cooling_spec.np);
-
if (ret < 0) {
pr_err("Invalid cooling-device entry\n");
return ret;
}
+ of_node_put(cooling_spec.np);
+
if (cooling_spec.args_count < 2) {
pr_err("wrong reference to cooling device, missing limits\n");
return -EINVAL;
@@ -442,13 +442,13 @@ static int __thermal_of_bind(struct device_node *map_np, int index, int trip_id,
ret = of_parse_phandle_with_args(map_np, "cooling-device", "#cooling-cells",
index, &cooling_spec);
- of_node_put(cooling_spec.np);
-
if (ret < 0) {
pr_err("Invalid cooling-device entry\n");
return ret;
}
+ of_node_put(cooling_spec.np);
+
if (cooling_spec.args_count < 2) {
pr_err("wrong reference to cooling device, missing limits\n");
return -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 132/600] cpufreq: amd-pstate-ut: Remove module parameter access
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (130 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 131/600] thermal/of: Fix potential uninitialized value access Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 133/600] cpufreq: amd-pstate-ut: Fix kernel panic when loading the driver Greg Kroah-Hartman
` (478 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mario Limonciello, Meng Li,
Wyes Karny, Swapnil Sapkal, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Swapnil Sapkal <swapnil.sapkal@amd.com>
[ Upstream commit 8d6e5e8268e89979d86501dbb8385ce2e6154de1 ]
In amd-pstate-ut, shared memory-based systems call
get_shared_mem() as part of amd_pstate_ut_check_enabled()
function. This function was written when CONFIG_X86_AMD_PSTATE
was tristate config and amd_pstate can be built as a module.
Currently CONFIG_X86_AMD_PSTATE is a boolean config and module
parameter shared_mem is removed. But amd-pstate-ut code still
accesses this module parameter. Remove those accesses.
Fixes: 456ca88d8a52 ("cpufreq: amd-pstate: change amd-pstate driver to be built-in type")
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Meng Li <li.meng@amd.com>
Reviewed-by: Wyes Karny <wyes.karny@amd.com>
Suggested-by: Wyes Karny <wyes.karny@amd.com>
Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
[ rjw: Subject edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/cpufreq/amd-pstate-ut.c | 22 ++--------------------
1 file changed, 2 insertions(+), 20 deletions(-)
diff --git a/drivers/cpufreq/amd-pstate-ut.c b/drivers/cpufreq/amd-pstate-ut.c
index e4a5b4d90f833..e7f452d221384 100644
--- a/drivers/cpufreq/amd-pstate-ut.c
+++ b/drivers/cpufreq/amd-pstate-ut.c
@@ -64,27 +64,9 @@ static struct amd_pstate_ut_struct amd_pstate_ut_cases[] = {
static bool get_shared_mem(void)
{
bool result = false;
- char path[] = "/sys/module/amd_pstate/parameters/shared_mem";
- char buf[5] = {0};
- struct file *filp = NULL;
- loff_t pos = 0;
- ssize_t ret;
-
- if (!boot_cpu_has(X86_FEATURE_CPPC)) {
- filp = filp_open(path, O_RDONLY, 0);
- if (IS_ERR(filp))
- pr_err("%s unable to open %s file!\n", __func__, path);
- else {
- ret = kernel_read(filp, &buf, sizeof(buf), &pos);
- if (ret < 0)
- pr_err("%s read %s file fail ret=%ld!\n",
- __func__, path, (long)ret);
- filp_close(filp, NULL);
- }
- if ('Y' == *buf)
- result = true;
- }
+ if (!boot_cpu_has(X86_FEATURE_CPPC))
+ result = true;
return result;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 133/600] cpufreq: amd-pstate-ut: Fix kernel panic when loading the driver
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (131 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 132/600] cpufreq: amd-pstate-ut: Remove module parameter access Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 134/600] x86/efistub: Fix PCI ROM preservation in mixed mode Greg Kroah-Hartman
` (477 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mario Limonciello, Meng Li,
Wyes Karny, Swapnil Sapkal, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Swapnil Sapkal <swapnil.sapkal@amd.com>
[ Upstream commit 60dd283804479c4a52f995b713f448e2cd65b8c8 ]
After loading the amd-pstate-ut driver, amd_pstate_ut_check_perf()
and amd_pstate_ut_check_freq() use cpufreq_cpu_get() to get the policy
of the CPU and mark it as busy.
In these functions, cpufreq_cpu_put() should be used to release the
policy, but it is not, so any other entity trying to access the policy
is blocked indefinitely.
One such scenario is when amd_pstate mode is changed, leading to the
following splat:
[ 1332.103727] INFO: task bash:2929 blocked for more than 120 seconds.
[ 1332.110001] Not tainted 6.5.0-rc2-amd-pstate-ut #5
[ 1332.115315] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[ 1332.123140] task:bash state:D stack:0 pid:2929 ppid:2873 flags:0x00004006
[ 1332.123143] Call Trace:
[ 1332.123145] <TASK>
[ 1332.123148] __schedule+0x3c1/0x16a0
[ 1332.123154] ? _raw_read_lock_irqsave+0x2d/0x70
[ 1332.123157] schedule+0x6f/0x110
[ 1332.123160] schedule_timeout+0x14f/0x160
[ 1332.123162] ? preempt_count_add+0x86/0xd0
[ 1332.123165] __wait_for_common+0x92/0x190
[ 1332.123168] ? __pfx_schedule_timeout+0x10/0x10
[ 1332.123170] wait_for_completion+0x28/0x30
[ 1332.123173] cpufreq_policy_put_kobj+0x4d/0x90
[ 1332.123177] cpufreq_policy_free+0x157/0x1d0
[ 1332.123178] ? preempt_count_add+0x58/0xd0
[ 1332.123180] cpufreq_remove_dev+0xb6/0x100
[ 1332.123182] subsys_interface_unregister+0x114/0x120
[ 1332.123185] ? preempt_count_add+0x58/0xd0
[ 1332.123187] ? __pfx_amd_pstate_change_driver_mode+0x10/0x10
[ 1332.123190] cpufreq_unregister_driver+0x3b/0xd0
[ 1332.123192] amd_pstate_change_driver_mode+0x1e/0x50
[ 1332.123194] store_status+0xe9/0x180
[ 1332.123197] dev_attr_store+0x1b/0x30
[ 1332.123199] sysfs_kf_write+0x42/0x50
[ 1332.123202] kernfs_fop_write_iter+0x143/0x1d0
[ 1332.123204] vfs_write+0x2df/0x400
[ 1332.123208] ksys_write+0x6b/0xf0
[ 1332.123210] __x64_sys_write+0x1d/0x30
[ 1332.123213] do_syscall_64+0x60/0x90
[ 1332.123216] ? fpregs_assert_state_consistent+0x2e/0x50
[ 1332.123219] ? exit_to_user_mode_prepare+0x49/0x1a0
[ 1332.123223] ? irqentry_exit_to_user_mode+0xd/0x20
[ 1332.123225] ? irqentry_exit+0x3f/0x50
[ 1332.123226] ? exc_page_fault+0x8e/0x190
[ 1332.123228] entry_SYSCALL_64_after_hwframe+0x6e/0xd8
[ 1332.123232] RIP: 0033:0x7fa74c514a37
[ 1332.123234] RSP: 002b:00007ffe31dd0788 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
[ 1332.123238] RAX: ffffffffffffffda RBX: 0000000000000008 RCX: 00007fa74c514a37
[ 1332.123239] RDX: 0000000000000008 RSI: 000055e27c447aa0 RDI: 0000000000000001
[ 1332.123241] RBP: 000055e27c447aa0 R08: 00007fa74c5d1460 R09: 000000007fffffff
[ 1332.123242] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000008
[ 1332.123244] R13: 00007fa74c61a780 R14: 00007fa74c616600 R15: 00007fa74c615a00
[ 1332.123247] </TASK>
Fix this by calling cpufreq_cpu_put() wherever necessary.
Fixes: 14eb1c96e3a3 ("cpufreq: amd-pstate: Add test module for amd-pstate driver")
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Meng Li <li.meng@amd.com>
Reviewed-by: Wyes Karny <wyes.karny@amd.com>
Suggested-by: Wyes Karny <wyes.karny@amd.com>
Signed-off-by: Swapnil Sapkal <swapnil.sapkal@amd.com>
[ rjw: Subject and changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/cpufreq/amd-pstate-ut.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/drivers/cpufreq/amd-pstate-ut.c b/drivers/cpufreq/amd-pstate-ut.c
index e7f452d221384..b448c8d6a16dd 100644
--- a/drivers/cpufreq/amd-pstate-ut.c
+++ b/drivers/cpufreq/amd-pstate-ut.c
@@ -140,7 +140,7 @@ static void amd_pstate_ut_check_perf(u32 index)
if (ret) {
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
pr_err("%s cppc_get_perf_caps ret=%d error!\n", __func__, ret);
- return;
+ goto skip_test;
}
nominal_perf = cppc_perf.nominal_perf;
@@ -151,7 +151,7 @@ static void amd_pstate_ut_check_perf(u32 index)
if (ret) {
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
pr_err("%s read CPPC_CAP1 ret=%d error!\n", __func__, ret);
- return;
+ goto skip_test;
}
nominal_perf = AMD_CPPC_NOMINAL_PERF(cap1);
@@ -169,7 +169,7 @@ static void amd_pstate_ut_check_perf(u32 index)
nominal_perf, cpudata->nominal_perf,
lowest_nonlinear_perf, cpudata->lowest_nonlinear_perf,
lowest_perf, cpudata->lowest_perf);
- return;
+ goto skip_test;
}
if (!((highest_perf >= nominal_perf) &&
@@ -180,11 +180,15 @@ static void amd_pstate_ut_check_perf(u32 index)
pr_err("%s cpu%d highest=%d >= nominal=%d > lowest_nonlinear=%d > lowest=%d > 0, the formula is incorrect!\n",
__func__, cpu, highest_perf, nominal_perf,
lowest_nonlinear_perf, lowest_perf);
- return;
+ goto skip_test;
}
+ cpufreq_cpu_put(policy);
}
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
+ return;
+skip_test:
+ cpufreq_cpu_put(policy);
}
/*
@@ -212,14 +216,14 @@ static void amd_pstate_ut_check_freq(u32 index)
pr_err("%s cpu%d max=%d >= nominal=%d > lowest_nonlinear=%d > min=%d > 0, the formula is incorrect!\n",
__func__, cpu, cpudata->max_freq, cpudata->nominal_freq,
cpudata->lowest_nonlinear_freq, cpudata->min_freq);
- return;
+ goto skip_test;
}
if (cpudata->min_freq != policy->min) {
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
pr_err("%s cpu%d cpudata_min_freq=%d policy_min=%d, they should be equal!\n",
__func__, cpu, cpudata->min_freq, policy->min);
- return;
+ goto skip_test;
}
if (cpudata->boost_supported) {
@@ -231,16 +235,20 @@ static void amd_pstate_ut_check_freq(u32 index)
pr_err("%s cpu%d policy_max=%d should be equal cpu_max=%d or cpu_nominal=%d !\n",
__func__, cpu, policy->max, cpudata->max_freq,
cpudata->nominal_freq);
- return;
+ goto skip_test;
}
} else {
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
pr_err("%s cpu%d must support boost!\n", __func__, cpu);
- return;
+ goto skip_test;
}
+ cpufreq_cpu_put(policy);
}
amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
+ return;
+skip_test:
+ cpufreq_cpu_put(policy);
}
static int __init amd_pstate_ut_init(void)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 134/600] x86/efistub: Fix PCI ROM preservation in mixed mode
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (132 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 133/600] cpufreq: amd-pstate-ut: Fix kernel panic when loading the driver Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 135/600] cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() Greg Kroah-Hartman
` (476 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mikel Rychliski, Ard Biesheuvel,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikel Rychliski <mikel@mikelr.com>
[ Upstream commit 8b94da92559f7e403dc7ab81937cc50f949ee2fd ]
preserve_pci_rom_image() was accessing the romsize field in
efi_pci_io_protocol_t directly instead of using the efi_table_attr()
helper. This prevents the ROM image from being saved correctly during a
mixed mode boot.
Fixes: 2c3625cb9fa2 ("efi/x86: Fold __setup_efi_pci32() and __setup_efi_pci64() into one function")
Signed-off-by: Mikel Rychliski <mikel@mikelr.com>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/firmware/efi/libstub/x86-stub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/firmware/efi/libstub/x86-stub.c b/drivers/firmware/efi/libstub/x86-stub.c
index 33a7811e12c65..4f0152b11a890 100644
--- a/drivers/firmware/efi/libstub/x86-stub.c
+++ b/drivers/firmware/efi/libstub/x86-stub.c
@@ -61,7 +61,7 @@ preserve_pci_rom_image(efi_pci_io_protocol_t *pci, struct pci_setup_rom **__rom)
rom->data.type = SETUP_PCI;
rom->data.len = size - sizeof(struct setup_data);
rom->data.next = 0;
- rom->pcilen = pci->romsize;
+ rom->pcilen = romsize;
*__rom = rom;
status = efi_call_proto(pci, pci.read, EfiPciIoWidthUint16,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 135/600] cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (133 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 134/600] x86/efistub: Fix PCI ROM preservation in mixed mode Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 136/600] selftests/bpf: Fix bpf_nf failure upon test rerun Greg Kroah-Hartman
` (475 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Liao Chang, Viresh Kumar,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Liao Chang <liaochang1@huawei.com>
[ Upstream commit 03997da042dac73c69e60d91942c727c76828b65 ]
Since the 'cpus' field of policy structure will become empty in the
cpufreq core API, it is better to use 'related_cpus' in the exit()
callback of driver.
Fixes: c3274763bfc3 ("cpufreq: powernow-k8: Initialize per-cpu data-structures properly")
Signed-off-by: Liao Chang <liaochang1@huawei.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/cpufreq/powernow-k8.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c
index d289036beff23..b10f7a1b77f11 100644
--- a/drivers/cpufreq/powernow-k8.c
+++ b/drivers/cpufreq/powernow-k8.c
@@ -1101,7 +1101,8 @@ static int powernowk8_cpu_exit(struct cpufreq_policy *pol)
kfree(data->powernow_table);
kfree(data);
- for_each_cpu(cpu, pol->cpus)
+ /* pol->cpus will be empty here, use related_cpus instead. */
+ for_each_cpu(cpu, pol->related_cpus)
per_cpu(powernow_data, cpu) = NULL;
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 136/600] selftests/bpf: Fix bpf_nf failure upon test rerun
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (134 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 135/600] cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 137/600] bpftool: use a local copy of perf_event to fix accessing :: Bpf_cookie Greg Kroah-Hartman
` (474 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alexei Starovoitov, Daniel Borkmann,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Borkmann <daniel@iogearbox.net>
[ Upstream commit 17e8e5d6e09adb4b4f4fb5c89b3ec3fcae2c64a6 ]
Alexei reported:
After fast forwarding bpf-next today bpf_nf test started to fail when
run twice:
$ ./test_progs -t bpf_nf
#17 bpf_nf:OK
Summary: 1/10 PASSED, 0 SKIPPED, 0 FAILED
$ ./test_progs -t bpf_nf
All error logs:
test_bpf_nf_ct:PASS:test_bpf_nf__open_and_load 0 nsec
test_bpf_nf_ct:PASS:iptables-legacy -t raw -A PREROUTING -j CONNMARK
--set-mark 42/0 0 nsec
(network_helpers.c:102: errno: Address already in use) Failed to bind socket
test_bpf_nf_ct:FAIL:start_server unexpected start_server: actual -1 < expected 0
#17/1 bpf_nf/xdp-ct:FAIL
test_bpf_nf_ct:PASS:test_bpf_nf__open_and_load 0 nsec
test_bpf_nf_ct:PASS:iptables-legacy -t raw -A PREROUTING -j CONNMARK
--set-mark 42/0 0 nsec
(network_helpers.c:102: errno: Address already in use) Failed to bind socket
test_bpf_nf_ct:FAIL:start_server unexpected start_server: actual -1 < expected 0
#17/2 bpf_nf/tc-bpf-ct:FAIL
#17 bpf_nf:FAIL
Summary: 0/8 PASSED, 0 SKIPPED, 1 FAILED
I was able to locally reproduce as well. Rearrange the connection teardown
so that the client closes its connection first so that we don't need to
linger in TCP time-wait.
Fixes: e81fbd4c1ba7 ("selftests/bpf: Add existing connection bpf_*_ct_lookup() test")
Reported-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/CAADnVQ+0dnDq_v_vH1EfkacbfGnHANaon7zsw10pMb-D9FS0Pw@mail.gmail.com
Link: https://lore.kernel.org/bpf/20230626131942.5100-1-daniel@iogearbox.net
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/bpf/prog_tests/bpf_nf.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/bpf_nf.c b/tools/testing/selftests/bpf/prog_tests/bpf_nf.c
index 8a838ea8bdf3b..b2998896f9f7b 100644
--- a/tools/testing/selftests/bpf/prog_tests/bpf_nf.c
+++ b/tools/testing/selftests/bpf/prog_tests/bpf_nf.c
@@ -123,12 +123,13 @@ static void test_bpf_nf_ct(int mode)
ASSERT_EQ(skel->data->test_snat_addr, 0, "Test for source natting");
ASSERT_EQ(skel->data->test_dnat_addr, 0, "Test for destination natting");
end:
- if (srv_client_fd != -1)
- close(srv_client_fd);
if (client_fd != -1)
close(client_fd);
+ if (srv_client_fd != -1)
+ close(srv_client_fd);
if (srv_fd != -1)
close(srv_fd);
+
snprintf(cmd, sizeof(cmd), iptables, "-D");
system(cmd);
test_bpf_nf__destroy(skel);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 137/600] bpftool: use a local copy of perf_event to fix accessing :: Bpf_cookie
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (135 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 136/600] selftests/bpf: Fix bpf_nf failure upon test rerun Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 138/600] bpftool: Define a local bpf_perf_link to fix accessing its fields Greg Kroah-Hartman
` (473 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Andrii Nakryiko, Alexander Lobakin,
Quentin Monnet, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Lobakin <alobakin@pm.me>
[ Upstream commit 4cbeeb0dc02f8ac7b975b2ab0080ace53d43d62a ]
When CONFIG_PERF_EVENTS is not set, struct perf_event remains empty.
However, the structure is being used by bpftool indirectly via BTF.
This leads to:
skeleton/pid_iter.bpf.c:49:30: error: no member named 'bpf_cookie' in 'struct perf_event'
return BPF_CORE_READ(event, bpf_cookie);
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
...
skeleton/pid_iter.bpf.c:49:9: error: returning 'void' from a function with incompatible result type '__u64' (aka 'unsigned long long')
return BPF_CORE_READ(event, bpf_cookie);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tools and samples can't use any CONFIG_ definitions, so the fields
used there should always be present.
Define struct perf_event___local with the `preserve_access_index`
attribute inside the pid_iter BPF prog to allow compiling on any
configs. CO-RE will substitute it with the real struct perf_event
accesses later on.
Fixes: cbdaf71f7e65 ("bpftool: Add bpf_cookie to link output")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230707095425.168126-2-quentin@isovalent.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/bpf/bpftool/skeleton/pid_iter.bpf.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
index eb05ea53afb12..e2af8e5fb29ec 100644
--- a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
+++ b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
@@ -15,6 +15,10 @@ enum bpf_obj_type {
BPF_OBJ_BTF,
};
+struct perf_event___local {
+ u64 bpf_cookie;
+} __attribute__((preserve_access_index));
+
extern const void bpf_link_fops __ksym;
extern const void bpf_map_fops __ksym;
extern const void bpf_prog_fops __ksym;
@@ -41,8 +45,8 @@ static __always_inline __u32 get_obj_id(void *ent, enum bpf_obj_type type)
/* could be used only with BPF_LINK_TYPE_PERF_EVENT links */
static __u64 get_bpf_cookie(struct bpf_link *link)
{
+ struct perf_event___local *event;
struct bpf_perf_link *perf_link;
- struct perf_event *event;
perf_link = container_of(link, struct bpf_perf_link, link);
event = BPF_CORE_READ(perf_link, perf_file, private_data);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 138/600] bpftool: Define a local bpf_perf_link to fix accessing its fields
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (136 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 137/600] bpftool: use a local copy of perf_event to fix accessing :: Bpf_cookie Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 139/600] bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c Greg Kroah-Hartman
` (472 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Andrii Nakryiko, Alexander Lobakin,
Quentin Monnet, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Lobakin <alobakin@pm.me>
[ Upstream commit 67a43462ee2405c94e985a747bdcb8e3a0d66203 ]
When building bpftool with !CONFIG_PERF_EVENTS:
skeleton/pid_iter.bpf.c:47:14: error: incomplete definition of type 'struct bpf_perf_link'
perf_link = container_of(link, struct bpf_perf_link, link);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helpers.h:74:22: note: expanded from macro 'container_of'
((type *)(__mptr - offsetof(type, member))); \
^~~~~~~~~~~~~~~~~~~~~~
tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helpers.h:68:60: note: expanded from macro 'offsetof'
#define offsetof(TYPE, MEMBER) ((unsigned long)&((TYPE *)0)->MEMBER)
~~~~~~~~~~~^
skeleton/pid_iter.bpf.c:44:9: note: forward declaration of 'struct bpf_perf_link'
struct bpf_perf_link *perf_link;
^
&bpf_perf_link is being defined and used only under the ifdef.
Define struct bpf_perf_link___local with the `preserve_access_index`
attribute inside the pid_iter BPF prog to allow compiling on any
configs. CO-RE will substitute it with the real struct bpf_perf_link
accesses later on.
container_of() uses offsetof(), which does the necessary CO-RE
relocation if the field is specified with `preserve_access_index` - as
is the case for struct bpf_perf_link___local.
Fixes: cbdaf71f7e65 ("bpftool: Add bpf_cookie to link output")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230707095425.168126-3-quentin@isovalent.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/bpf/bpftool/skeleton/pid_iter.bpf.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
index e2af8e5fb29ec..3a4c4f7d83d86 100644
--- a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
+++ b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
@@ -15,6 +15,11 @@ enum bpf_obj_type {
BPF_OBJ_BTF,
};
+struct bpf_perf_link___local {
+ struct bpf_link link;
+ struct file *perf_file;
+} __attribute__((preserve_access_index));
+
struct perf_event___local {
u64 bpf_cookie;
} __attribute__((preserve_access_index));
@@ -45,10 +50,10 @@ static __always_inline __u32 get_obj_id(void *ent, enum bpf_obj_type type)
/* could be used only with BPF_LINK_TYPE_PERF_EVENT links */
static __u64 get_bpf_cookie(struct bpf_link *link)
{
+ struct bpf_perf_link___local *perf_link;
struct perf_event___local *event;
- struct bpf_perf_link *perf_link;
- perf_link = container_of(link, struct bpf_perf_link, link);
+ perf_link = container_of(link, struct bpf_perf_link___local, link);
event = BPF_CORE_READ(perf_link, perf_file, private_data);
return BPF_CORE_READ(event, bpf_cookie);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 139/600] bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (137 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 138/600] bpftool: Define a local bpf_perf_link to fix accessing its fields Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 140/600] bpftool: Use a local bpf_perf_event_value to fix accessing its fields Greg Kroah-Hartman
` (471 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Quentin Monnet, Andrii Nakryiko,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Quentin Monnet <quentin@isovalent.com>
[ Upstream commit 44ba7b30e84fb40da2295e85a6d209e199fdc977 ]
In order to allow the BPF program in bpftool's pid_iter.bpf.c to compile
correctly on hosts where vmlinux.h does not define
BPF_LINK_TYPE_PERF_EVENT (running kernel versions lower than 5.15, for
example), define and use a local copy of the enum value. This requires
LLVM 12 or newer to build the BPF program.
Fixes: cbdaf71f7e65 ("bpftool: Add bpf_cookie to link output")
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230707095425.168126-4-quentin@isovalent.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/bpf/bpftool/skeleton/pid_iter.bpf.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
index 3a4c4f7d83d86..26004f0c5a6ae 100644
--- a/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
+++ b/tools/bpf/bpftool/skeleton/pid_iter.bpf.c
@@ -24,6 +24,10 @@ struct perf_event___local {
u64 bpf_cookie;
} __attribute__((preserve_access_index));
+enum bpf_link_type___local {
+ BPF_LINK_TYPE_PERF_EVENT___local = 7,
+};
+
extern const void bpf_link_fops __ksym;
extern const void bpf_map_fops __ksym;
extern const void bpf_prog_fops __ksym;
@@ -93,10 +97,13 @@ int iter(struct bpf_iter__task_file *ctx)
e.pid = task->tgid;
e.id = get_obj_id(file->private_data, obj_type);
- if (obj_type == BPF_OBJ_LINK) {
+ if (obj_type == BPF_OBJ_LINK &&
+ bpf_core_enum_value_exists(enum bpf_link_type___local,
+ BPF_LINK_TYPE_PERF_EVENT___local)) {
struct bpf_link *link = (struct bpf_link *) file->private_data;
- if (BPF_CORE_READ(link, type) == BPF_LINK_TYPE_PERF_EVENT) {
+ if (link->type == bpf_core_enum_value(enum bpf_link_type___local,
+ BPF_LINK_TYPE_PERF_EVENT___local)) {
e.has_bpf_cookie = true;
e.bpf_cookie = get_bpf_cookie(link);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 140/600] bpftool: Use a local bpf_perf_event_value to fix accessing its fields
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (138 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 139/600] bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 141/600] libbpf: Fix realloc API handling in zero-sized edge cases Greg Kroah-Hartman
` (470 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Andrii Nakryiko, Alexander Lobakin,
Quentin Monnet, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Lobakin <alobakin@pm.me>
[ Upstream commit 658ac06801315b739774a15796ff06913ef5cad5 ]
Fix the following error when building bpftool:
CLANG profiler.bpf.o
CLANG pid_iter.bpf.o
skeleton/profiler.bpf.c:18:21: error: invalid application of 'sizeof' to an incomplete type 'struct bpf_perf_event_value'
__uint(value_size, sizeof(struct bpf_perf_event_value));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helpers.h:13:39: note: expanded from macro '__uint'
tools/bpf/bpftool/bootstrap/libbpf/include/bpf/bpf_helper_defs.h:7:8: note: forward declaration of 'struct bpf_perf_event_value'
struct bpf_perf_event_value;
^
struct bpf_perf_event_value is being used in the kernel only when
CONFIG_BPF_EVENTS is enabled, so it misses a BTF entry then.
Define struct bpf_perf_event_value___local with the
`preserve_access_index` attribute inside the pid_iter BPF prog to
allow compiling on any configs. It is a full mirror of a UAPI
structure, so is compatible both with and w/o CO-RE.
bpf_perf_event_read_value() requires a pointer of the original type,
so a cast is needed.
Fixes: 47c09d6a9f67 ("bpftool: Introduce "prog profile" command")
Suggested-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Signed-off-by: Quentin Monnet <quentin@isovalent.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20230707095425.168126-5-quentin@isovalent.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/bpf/bpftool/skeleton/profiler.bpf.c | 27 ++++++++++++++---------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/tools/bpf/bpftool/skeleton/profiler.bpf.c b/tools/bpf/bpftool/skeleton/profiler.bpf.c
index ce5b65e07ab10..2f80edc682f11 100644
--- a/tools/bpf/bpftool/skeleton/profiler.bpf.c
+++ b/tools/bpf/bpftool/skeleton/profiler.bpf.c
@@ -4,6 +4,12 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
+struct bpf_perf_event_value___local {
+ __u64 counter;
+ __u64 enabled;
+ __u64 running;
+} __attribute__((preserve_access_index));
+
/* map of perf event fds, num_cpu * num_metric entries */
struct {
__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
@@ -15,14 +21,14 @@ struct {
struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(u32));
- __uint(value_size, sizeof(struct bpf_perf_event_value));
+ __uint(value_size, sizeof(struct bpf_perf_event_value___local));
} fentry_readings SEC(".maps");
/* accumulated readings */
struct {
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
__uint(key_size, sizeof(u32));
- __uint(value_size, sizeof(struct bpf_perf_event_value));
+ __uint(value_size, sizeof(struct bpf_perf_event_value___local));
} accum_readings SEC(".maps");
/* sample counts, one per cpu */
@@ -39,7 +45,7 @@ const volatile __u32 num_metric = 1;
SEC("fentry/XXX")
int BPF_PROG(fentry_XXX)
{
- struct bpf_perf_event_value *ptrs[MAX_NUM_MATRICS];
+ struct bpf_perf_event_value___local *ptrs[MAX_NUM_MATRICS];
u32 key = bpf_get_smp_processor_id();
u32 i;
@@ -53,10 +59,10 @@ int BPF_PROG(fentry_XXX)
}
for (i = 0; i < num_metric && i < MAX_NUM_MATRICS; i++) {
- struct bpf_perf_event_value reading;
+ struct bpf_perf_event_value___local reading;
int err;
- err = bpf_perf_event_read_value(&events, key, &reading,
+ err = bpf_perf_event_read_value(&events, key, (void *)&reading,
sizeof(reading));
if (err)
return 0;
@@ -68,14 +74,14 @@ int BPF_PROG(fentry_XXX)
}
static inline void
-fexit_update_maps(u32 id, struct bpf_perf_event_value *after)
+fexit_update_maps(u32 id, struct bpf_perf_event_value___local *after)
{
- struct bpf_perf_event_value *before, diff;
+ struct bpf_perf_event_value___local *before, diff;
before = bpf_map_lookup_elem(&fentry_readings, &id);
/* only account samples with a valid fentry_reading */
if (before && before->counter) {
- struct bpf_perf_event_value *accum;
+ struct bpf_perf_event_value___local *accum;
diff.counter = after->counter - before->counter;
diff.enabled = after->enabled - before->enabled;
@@ -93,7 +99,7 @@ fexit_update_maps(u32 id, struct bpf_perf_event_value *after)
SEC("fexit/XXX")
int BPF_PROG(fexit_XXX)
{
- struct bpf_perf_event_value readings[MAX_NUM_MATRICS];
+ struct bpf_perf_event_value___local readings[MAX_NUM_MATRICS];
u32 cpu = bpf_get_smp_processor_id();
u32 i, zero = 0;
int err;
@@ -102,7 +108,8 @@ int BPF_PROG(fexit_XXX)
/* read all events before updating the maps, to reduce error */
for (i = 0; i < num_metric && i < MAX_NUM_MATRICS; i++) {
err = bpf_perf_event_read_value(&events, cpu + i * num_cpu,
- readings + i, sizeof(*readings));
+ (void *)(readings + i),
+ sizeof(*readings));
if (err)
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 141/600] libbpf: Fix realloc API handling in zero-sized edge cases
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (139 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 140/600] bpftool: Use a local bpf_perf_event_value to fix accessing its fields Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 142/600] bpf: Clear the probe_addr for uprobe Greg Kroah-Hartman
` (469 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Andrii Nakryiko, Daniel Borkmann,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrii Nakryiko <andrii@kernel.org>
[ Upstream commit 8a0260dbf6553c969248b6530cafadac46562f47 ]
realloc() and reallocarray() can either return NULL or a special
non-NULL pointer, if their size argument is zero. This requires a bit
more care to handle NULL-as-valid-result situation differently from
NULL-as-error case. This has caused real issues before ([0]), and just
recently bit again in production when performing bpf_program__attach_usdt().
This patch fixes 4 places that do or potentially could suffer from this
mishandling of NULL, including the reported USDT-related one.
There are many other places where realloc()/reallocarray() is used and
NULL is always treated as an error value, but all those have guarantees
that their size is always non-zero, so those spot don't need any extra
handling.
[0] d08ab82f59d5 ("libbpf: Fix double-free when linker processes empty sections")
Fixes: 999783c8bbda ("libbpf: Wire up spec management and other arch-independent USDT logic")
Fixes: b63b3c490eee ("libbpf: Add bpf_program__set_insns function")
Fixes: 697f104db8a6 ("libbpf: Support custom SEC() handlers")
Fixes: b12688267280 ("libbpf: Change the order of data and text relocations.")
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20230711024150.1566433-1-andrii@kernel.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/lib/bpf/libbpf.c | 15 ++++++++++++---
tools/lib/bpf/usdt.c | 5 ++++-
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index b9a29d1053765..eeb2693128d8a 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -6063,7 +6063,11 @@ static int append_subprog_relos(struct bpf_program *main_prog, struct bpf_progra
if (main_prog == subprog)
return 0;
relos = libbpf_reallocarray(main_prog->reloc_desc, new_cnt, sizeof(*relos));
- if (!relos)
+ /* if new count is zero, reallocarray can return a valid NULL result;
+ * in this case the previous pointer will be freed, so we *have to*
+ * reassign old pointer to the new value (even if it's NULL)
+ */
+ if (!relos && new_cnt)
return -ENOMEM;
if (subprog->nr_reloc)
memcpy(relos + main_prog->nr_reloc, subprog->reloc_desc,
@@ -8345,7 +8349,8 @@ int bpf_program__set_insns(struct bpf_program *prog,
return -EBUSY;
insns = libbpf_reallocarray(prog->insns, new_insn_cnt, sizeof(*insns));
- if (!insns) {
+ /* NULL is a valid return from reallocarray if the new count is zero */
+ if (!insns && new_insn_cnt) {
pr_warn("prog '%s': failed to realloc prog code\n", prog->name);
return -ENOMEM;
}
@@ -8640,7 +8645,11 @@ int libbpf_unregister_prog_handler(int handler_id)
/* try to shrink the array, but it's ok if we couldn't */
sec_defs = libbpf_reallocarray(custom_sec_defs, custom_sec_def_cnt, sizeof(*sec_defs));
- if (sec_defs)
+ /* if new count is zero, reallocarray can return a valid NULL result;
+ * in this case the previous pointer will be freed, so we *have to*
+ * reassign old pointer to the new value (even if it's NULL)
+ */
+ if (sec_defs || custom_sec_def_cnt == 0)
custom_sec_defs = sec_defs;
return 0;
diff --git a/tools/lib/bpf/usdt.c b/tools/lib/bpf/usdt.c
index 49f3c3b7f6095..af1cb30556b46 100644
--- a/tools/lib/bpf/usdt.c
+++ b/tools/lib/bpf/usdt.c
@@ -852,8 +852,11 @@ static int bpf_link_usdt_detach(struct bpf_link *link)
* system is so exhausted on memory, it's the least of user's
* concerns, probably.
* So just do our best here to return those IDs to usdt_manager.
+ * Another edge case when we can legitimately get NULL is when
+ * new_cnt is zero, which can happen in some edge cases, so we
+ * need to be careful about that.
*/
- if (new_free_ids) {
+ if (new_free_ids || new_cnt == 0) {
memcpy(new_free_ids + man->free_spec_cnt, usdt_link->spec_ids,
usdt_link->spec_cnt * sizeof(*usdt_link->spec_ids));
man->free_spec_ids = new_free_ids;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 142/600] bpf: Clear the probe_addr for uprobe
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (140 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 141/600] libbpf: Fix realloc API handling in zero-sized edge cases Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 143/600] bpf: Fix an error in verifying a field in a union Greg Kroah-Hartman
` (468 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yafang Shao, Yonghong Song,
Jiri Olsa, Alexei Starovoitov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yafang Shao <laoar.shao@gmail.com>
[ Upstream commit 5125e757e62f6c1d5478db4c2b61a744060ddf3f ]
To avoid returning uninitialized or random values when querying the file
descriptor (fd) and accessing probe_addr, it is necessary to clear the
variable prior to its use.
Fixes: 41bdc4b40ed6 ("bpf: introduce bpf subcommand BPF_TASK_FD_QUERY")
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Yonghong Song <yhs@fb.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: https://lore.kernel.org/r/20230709025630.3735-6-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/linux/trace_events.h | 3 ++-
kernel/trace/bpf_trace.c | 2 +-
kernel/trace/trace_uprobe.c | 3 ++-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
index 04c59f8d801f1..422f4ca656cf9 100644
--- a/include/linux/trace_events.h
+++ b/include/linux/trace_events.h
@@ -863,7 +863,8 @@ extern int perf_uprobe_init(struct perf_event *event,
extern void perf_uprobe_destroy(struct perf_event *event);
extern int bpf_get_uprobe_info(const struct perf_event *event,
u32 *fd_type, const char **filename,
- u64 *probe_offset, bool perf_type_tracepoint);
+ u64 *probe_offset, u64 *probe_addr,
+ bool perf_type_tracepoint);
#endif
extern int ftrace_profile_set_filter(struct perf_event *event, int event_id,
char *filter_str);
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index ad04390883ada..9fc5db194027b 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -2390,7 +2390,7 @@ int bpf_get_perf_event_info(const struct perf_event *event, u32 *prog_id,
#ifdef CONFIG_UPROBE_EVENTS
if (flags & TRACE_EVENT_FL_UPROBE)
err = bpf_get_uprobe_info(event, fd_type, buf,
- probe_offset,
+ probe_offset, probe_addr,
event->attr.type == PERF_TYPE_TRACEPOINT);
#endif
}
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
index 2ac06a642863a..127c78aec17db 100644
--- a/kernel/trace/trace_uprobe.c
+++ b/kernel/trace/trace_uprobe.c
@@ -1418,7 +1418,7 @@ static void uretprobe_perf_func(struct trace_uprobe *tu, unsigned long func,
int bpf_get_uprobe_info(const struct perf_event *event, u32 *fd_type,
const char **filename, u64 *probe_offset,
- bool perf_type_tracepoint)
+ u64 *probe_addr, bool perf_type_tracepoint)
{
const char *pevent = trace_event_name(event->tp_event);
const char *group = event->tp_event->class->system;
@@ -1435,6 +1435,7 @@ int bpf_get_uprobe_info(const struct perf_event *event, u32 *fd_type,
: BPF_FD_TYPE_UPROBE;
*filename = tu->filename;
*probe_offset = tu->offset;
+ *probe_addr = 0;
return 0;
}
#endif /* CONFIG_PERF_EVENTS */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 143/600] bpf: Fix an error in verifying a field in a union
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (141 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 142/600] bpf: Clear the probe_addr for uprobe Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 144/600] crypto: qat - change value of default idle filter Greg Kroah-Hartman
` (467 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yafang Shao, Alexei Starovoitov,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yafang Shao <laoar.shao@gmail.com>
[ Upstream commit 33937607efa050d9e237e0c4ac4ada02d961c466 ]
We are utilizing BPF LSM to monitor BPF operations within our container
environment. When we add support for raw_tracepoint, it hits below
error.
; (const void *)attr->raw_tracepoint.name);
27: (79) r3 = *(u64 *)(r2 +0)
access beyond the end of member map_type (mend:4) in struct (anon) with off 0 size 8
It can be reproduced with below BPF prog.
SEC("lsm/bpf")
int BPF_PROG(bpf_audit, int cmd, union bpf_attr *attr, unsigned int size)
{
switch (cmd) {
case BPF_RAW_TRACEPOINT_OPEN:
bpf_printk("raw_tracepoint is %s", attr->raw_tracepoint.name);
break;
default:
break;
}
return 0;
}
The reason is that when accessing a field in a union, such as bpf_attr,
if the field is located within a nested struct that is not the first
member of the union, it can result in incorrect field verification.
union bpf_attr {
struct {
__u32 map_type; <<<< Actually it will find that field.
__u32 key_size;
__u32 value_size;
...
};
...
struct {
__u64 name; <<<< We want to verify this field.
__u32 prog_fd;
} raw_tracepoint;
};
Considering the potential deep nesting levels, finding a perfect
solution to address this issue has proven challenging. Therefore, I
propose a solution where we simply skip the verification process if the
field in question is located within a union.
Fixes: 7e3617a72df3 ("bpf: Add array support to btf_struct_access")
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Link: https://lore.kernel.org/r/20230713025642.27477-4-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/bpf/btf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
index fb78bb26786fc..7582ec4fd4131 100644
--- a/kernel/bpf/btf.c
+++ b/kernel/bpf/btf.c
@@ -5788,7 +5788,7 @@ static int btf_struct_walk(struct bpf_verifier_log *log, const struct btf *btf,
* that also allows using an array of int as a scratch
* space. e.g. skb->cb[].
*/
- if (off + size > mtrue_end) {
+ if (off + size > mtrue_end && !(*flag & PTR_UNTRUSTED)) {
bpf_log(log,
"access beyond the end of member %s (mend:%u) in struct %s with off %u size %u\n",
mname, mtrue_end, tname, off, size);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 144/600] crypto: qat - change value of default idle filter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (142 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 143/600] bpf: Fix an error in verifying a field in a union Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 145/600] tcp: tcp_enter_quickack_mode() should be static Greg Kroah-Hartman
` (466 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Giovanni Cabiddu, Damian Muszynski,
Herbert Xu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
[ Upstream commit 0f942bdfe9d463be3073301519492f8d53c6b2d5 ]
The power management configuration of 4xxx devices is too aggressive
and in some conditions the device might be prematurely put to a low
power state.
Increase the idle filter value to prevent that.
In future, this will be set by firmware.
Fixes: e5745f34113b ("crypto: qat - enable power management for QAT GEN4")
Signed-off-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Reviewed-by: Damian Muszynski <damian.muszynski@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/crypto/qat/qat_common/adf_gen4_pm.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/crypto/qat/qat_common/adf_gen4_pm.h b/drivers/crypto/qat/qat_common/adf_gen4_pm.h
index f8f8a9ee29e5b..db4326933d1c0 100644
--- a/drivers/crypto/qat/qat_common/adf_gen4_pm.h
+++ b/drivers/crypto/qat/qat_common/adf_gen4_pm.h
@@ -35,7 +35,7 @@
#define ADF_GEN4_PM_MSG_PENDING BIT(0)
#define ADF_GEN4_PM_MSG_PAYLOAD_BIT_MASK GENMASK(28, 1)
-#define ADF_GEN4_PM_DEFAULT_IDLE_FILTER (0x0)
+#define ADF_GEN4_PM_DEFAULT_IDLE_FILTER (0x6)
#define ADF_GEN4_PM_MAX_IDLE_FILTER (0x7)
int adf_gen4_enable_pm(struct adf_accel_dev *accel_dev);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 145/600] tcp: tcp_enter_quickack_mode() should be static
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (143 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 144/600] crypto: qat - change value of default idle filter Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 146/600] hwrng: nomadik - keep clock enabled while hwrng is registered Greg Kroah-Hartman
` (465 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Eric Dumazet, Yuchung Cheng,
Neal Cardwell, Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit 03b123debcbc8db987bda17ed8412cc011064c22 ]
After commit d2ccd7bc8acd ("tcp: avoid resetting ACK timer in DCTCP"),
tcp_enter_quickack_mode() is only used from net/ipv4/tcp_input.c.
Fixes: d2ccd7bc8acd ("tcp: avoid resetting ACK timer in DCTCP")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Yuchung Cheng <ycheng@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Link: https://lore.kernel.org/r/20230718162049.1444938-1-edumazet@google.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/tcp.h | 1 -
net/ipv4/tcp_input.c | 3 +--
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/include/net/tcp.h b/include/net/tcp.h
index e9c8f88f47696..5fd69f2342a44 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -355,7 +355,6 @@ ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos,
struct sk_buff *tcp_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp,
bool force_schedule);
-void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks);
static inline void tcp_dec_quickack_mode(struct sock *sk,
const unsigned int pkts)
{
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index e2d3ea2e34561..c697836f2b5b4 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -287,7 +287,7 @@ static void tcp_incr_quickack(struct sock *sk, unsigned int max_quickacks)
icsk->icsk_ack.quick = quickacks;
}
-void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks)
+static void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks)
{
struct inet_connection_sock *icsk = inet_csk(sk);
@@ -295,7 +295,6 @@ void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks)
inet_csk_exit_pingpong_mode(sk);
icsk->icsk_ack.ato = TCP_ATO_MIN;
}
-EXPORT_SYMBOL(tcp_enter_quickack_mode);
/* Send ACKs quickly, if "quick" count is not exhausted
* and the session is not interactive.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 146/600] hwrng: nomadik - keep clock enabled while hwrng is registered
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (144 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 145/600] tcp: tcp_enter_quickack_mode() should be static Greg Kroah-Hartman
@ 2023-09-11 13:42 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 147/600] hwrng: pic32 - use devm_clk_get_enabled Greg Kroah-Hartman
` (464 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:42 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Martin Kaiser, Herbert Xu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martin Kaiser <martin@kaiser.cx>
[ Upstream commit 039980de89dc9dd757418d6f296e4126cc3f86c3 ]
The nomadik driver uses devres to register itself with the hwrng core,
the driver will be unregistered from hwrng when its device goes out of
scope. This happens after the driver's remove function is called.
However, nomadik's clock is disabled in the remove function. There's a
short timeframe where nomadik is still registered with the hwrng core
although its clock is disabled. I suppose the clock must be active to
access the hardware and serve requests from the hwrng core.
Switch to devm_clk_get_enabled and let devres disable the clock and
unregister the hwrng. This avoids the race condition.
Fixes: 3e75241be808 ("hwrng: drivers - Use device-managed registration API")
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/char/hw_random/nomadik-rng.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/char/hw_random/nomadik-rng.c b/drivers/char/hw_random/nomadik-rng.c
index e8f9621e79541..3774adf903a83 100644
--- a/drivers/char/hw_random/nomadik-rng.c
+++ b/drivers/char/hw_random/nomadik-rng.c
@@ -13,8 +13,6 @@
#include <linux/clk.h>
#include <linux/err.h>
-static struct clk *rng_clk;
-
static int nmk_rng_read(struct hwrng *rng, void *data, size_t max, bool wait)
{
void __iomem *base = (void __iomem *)rng->priv;
@@ -36,21 +34,20 @@ static struct hwrng nmk_rng = {
static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id)
{
+ struct clk *rng_clk;
void __iomem *base;
int ret;
- rng_clk = devm_clk_get(&dev->dev, NULL);
+ rng_clk = devm_clk_get_enabled(&dev->dev, NULL);
if (IS_ERR(rng_clk)) {
dev_err(&dev->dev, "could not get rng clock\n");
ret = PTR_ERR(rng_clk);
return ret;
}
- clk_prepare_enable(rng_clk);
-
ret = amba_request_regions(dev, dev->dev.init_name);
if (ret)
- goto out_clk;
+ return ret;
ret = -ENOMEM;
base = devm_ioremap(&dev->dev, dev->res.start,
resource_size(&dev->res));
@@ -64,15 +61,12 @@ static int nmk_rng_probe(struct amba_device *dev, const struct amba_id *id)
out_release:
amba_release_regions(dev);
-out_clk:
- clk_disable_unprepare(rng_clk);
return ret;
}
static void nmk_rng_remove(struct amba_device *dev)
{
amba_release_regions(dev);
- clk_disable_unprepare(rng_clk);
}
static const struct amba_id nmk_rng_ids[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 147/600] hwrng: pic32 - use devm_clk_get_enabled
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (145 preceding siblings ...)
2023-09-11 13:42 ` [PATCH 6.1 146/600] hwrng: nomadik - keep clock enabled while hwrng is registered Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 148/600] regmap: rbtree: Use alloc_flags for memory allocations Greg Kroah-Hartman
` (463 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Martin Kaiser, Herbert Xu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martin Kaiser <martin@kaiser.cx>
[ Upstream commit 6755ad74aac0fb1c79b14724feb81b2f6ff25847 ]
Use devm_clk_get_enabled in the pic32 driver. Ensure that the clock is
enabled as long as the driver is registered with the hwrng core.
Fixes: 7ea39973d1e5 ("hwrng: pic32 - Use device-managed registration API")
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/char/hw_random/pic32-rng.c | 19 +++++--------------
1 file changed, 5 insertions(+), 14 deletions(-)
diff --git a/drivers/char/hw_random/pic32-rng.c b/drivers/char/hw_random/pic32-rng.c
index 99c8bd0859a14..e04a054e89307 100644
--- a/drivers/char/hw_random/pic32-rng.c
+++ b/drivers/char/hw_random/pic32-rng.c
@@ -36,7 +36,6 @@
struct pic32_rng {
void __iomem *base;
struct hwrng rng;
- struct clk *clk;
};
/*
@@ -70,6 +69,7 @@ static int pic32_rng_read(struct hwrng *rng, void *buf, size_t max,
static int pic32_rng_probe(struct platform_device *pdev)
{
struct pic32_rng *priv;
+ struct clk *clk;
u32 v;
int ret;
@@ -81,13 +81,9 @@ static int pic32_rng_probe(struct platform_device *pdev)
if (IS_ERR(priv->base))
return PTR_ERR(priv->base);
- priv->clk = devm_clk_get(&pdev->dev, NULL);
- if (IS_ERR(priv->clk))
- return PTR_ERR(priv->clk);
-
- ret = clk_prepare_enable(priv->clk);
- if (ret)
- return ret;
+ clk = devm_clk_get_enabled(&pdev->dev, NULL);
+ if (IS_ERR(clk))
+ return PTR_ERR(clk);
/* enable TRNG in enhanced mode */
v = TRNGEN | TRNGMOD;
@@ -98,15 +94,11 @@ static int pic32_rng_probe(struct platform_device *pdev)
ret = devm_hwrng_register(&pdev->dev, &priv->rng);
if (ret)
- goto err_register;
+ return ret;
platform_set_drvdata(pdev, priv);
return 0;
-
-err_register:
- clk_disable_unprepare(priv->clk);
- return ret;
}
static int pic32_rng_remove(struct platform_device *pdev)
@@ -114,7 +106,6 @@ static int pic32_rng_remove(struct platform_device *pdev)
struct pic32_rng *rng = platform_get_drvdata(pdev);
writel(0, rng->base + RNGCON);
- clk_disable_unprepare(rng->clk);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 148/600] regmap: rbtree: Use alloc_flags for memory allocations
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (146 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 147/600] hwrng: pic32 - use devm_clk_get_enabled Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 149/600] wifi: rtw89: debug: Fix error handling in rtw89_debug_priv_btc_manual_set() Greg Kroah-Hartman
` (462 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Guenter Roeck, Dan Carpenter,
Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit 0c8b0bf42c8cef56f7cd9cd876fbb7ece9217064 ]
The kunit tests discovered a sleeping in atomic bug. The allocations
in the regcache-rbtree code should use the map->alloc_flags instead of
GFP_KERNEL.
[ 5.005510] BUG: sleeping function called from invalid context at include/linux/sched/mm.h:306
[ 5.005960] in_atomic(): 1, irqs_disabled(): 128, non_block: 0, pid: 117, name: kunit_try_catch
[ 5.006219] preempt_count: 1, expected: 0
[ 5.006414] 1 lock held by kunit_try_catch/117:
[ 5.006590] #0: 833b9010 (regmap_kunit:86:(config)->lock){....}-{2:2}, at: regmap_lock_spinlock+0x14/0x1c
[ 5.007493] irq event stamp: 162
[ 5.007627] hardirqs last enabled at (161): [<80786738>] crng_make_state+0x1a0/0x294
[ 5.007871] hardirqs last disabled at (162): [<80c531ec>] _raw_spin_lock_irqsave+0x7c/0x80
[ 5.008119] softirqs last enabled at (0): [<801110ac>] copy_process+0x810/0x2138
[ 5.008356] softirqs last disabled at (0): [<00000000>] 0x0
[ 5.008688] CPU: 0 PID: 117 Comm: kunit_try_catch Tainted: G N 6.4.4-rc3-g0e8d2fdfb188 #1
[ 5.009011] Hardware name: Generic DT based system
[ 5.009277] unwind_backtrace from show_stack+0x18/0x1c
[ 5.009497] show_stack from dump_stack_lvl+0x38/0x5c
[ 5.009676] dump_stack_lvl from __might_resched+0x188/0x2d0
[ 5.009860] __might_resched from __kmem_cache_alloc_node+0x1dc/0x25c
[ 5.010061] __kmem_cache_alloc_node from kmalloc_trace+0x30/0xc8
[ 5.010254] kmalloc_trace from regcache_rbtree_write+0x26c/0x468
[ 5.010446] regcache_rbtree_write from _regmap_write+0x88/0x140
[ 5.010634] _regmap_write from regmap_write+0x44/0x68
[ 5.010803] regmap_write from basic_read_write+0x8c/0x270
[ 5.010980] basic_read_write from kunit_try_run_case+0x48/0xa0
Fixes: 28644c809f44 ("regmap: Add the rbtree cache support")
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: https://lore.kernel.org/all/ee59d128-413c-48ad-a3aa-d9d350c80042@roeck-us.net/
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/58f12a07-5f4b-4a8f-ab84-0a42d1908cb9@moroto.mountain
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/base/regmap/regcache-rbtree.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/base/regmap/regcache-rbtree.c b/drivers/base/regmap/regcache-rbtree.c
index fabf87058d80b..ae6b8788d5f3f 100644
--- a/drivers/base/regmap/regcache-rbtree.c
+++ b/drivers/base/regmap/regcache-rbtree.c
@@ -277,7 +277,7 @@ static int regcache_rbtree_insert_to_block(struct regmap *map,
blk = krealloc(rbnode->block,
blklen * map->cache_word_size,
- GFP_KERNEL);
+ map->alloc_flags);
if (!blk)
return -ENOMEM;
@@ -286,7 +286,7 @@ static int regcache_rbtree_insert_to_block(struct regmap *map,
if (BITS_TO_LONGS(blklen) > BITS_TO_LONGS(rbnode->blklen)) {
present = krealloc(rbnode->cache_present,
BITS_TO_LONGS(blklen) * sizeof(*present),
- GFP_KERNEL);
+ map->alloc_flags);
if (!present)
return -ENOMEM;
@@ -320,7 +320,7 @@ regcache_rbtree_node_alloc(struct regmap *map, unsigned int reg)
const struct regmap_range *range;
int i;
- rbnode = kzalloc(sizeof(*rbnode), GFP_KERNEL);
+ rbnode = kzalloc(sizeof(*rbnode), map->alloc_flags);
if (!rbnode)
return NULL;
@@ -346,13 +346,13 @@ regcache_rbtree_node_alloc(struct regmap *map, unsigned int reg)
}
rbnode->block = kmalloc_array(rbnode->blklen, map->cache_word_size,
- GFP_KERNEL);
+ map->alloc_flags);
if (!rbnode->block)
goto err_free;
rbnode->cache_present = kcalloc(BITS_TO_LONGS(rbnode->blklen),
sizeof(*rbnode->cache_present),
- GFP_KERNEL);
+ map->alloc_flags);
if (!rbnode->cache_present)
goto err_free_block;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 149/600] wifi: rtw89: debug: Fix error handling in rtw89_debug_priv_btc_manual_set()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (147 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 148/600] regmap: rbtree: Use alloc_flags for memory allocations Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 150/600] wifi: mt76: mt7921: fix non-PSC channel scan fail Greg Kroah-Hartman
` (461 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zhang Shurong, Ping-Ke Shih,
Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Shurong <zhang_shurong@foxmail.com>
[ Upstream commit 59b4cc439f184c5eaa34161ec67af1e16ffabed4 ]
If there is a failure during kstrtobool_from_user()
rtw89_debug_priv_btc_manual_set should return a negative error code
instead of returning the count directly.
Fix this bug by returning an error code instead of a count after
a failed call of the function "kstrtobool_from_user". Moreover
I omitted the label "out" with this source code correction.
Fixes: e3ec7017f6a2 ("rtw89: add Realtek 802.11ax driver")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Acked-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/tencent_1C09B99BD7DA9CAD18B00C8F0F050F540607@qq.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/realtek/rtw89/debug.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw89/debug.c b/drivers/net/wireless/realtek/rtw89/debug.c
index ec0af903961f0..3a8fe60d0bb7b 100644
--- a/drivers/net/wireless/realtek/rtw89/debug.c
+++ b/drivers/net/wireless/realtek/rtw89/debug.c
@@ -2302,12 +2302,14 @@ static ssize_t rtw89_debug_priv_btc_manual_set(struct file *filp,
struct rtw89_dev *rtwdev = debugfs_priv->rtwdev;
struct rtw89_btc *btc = &rtwdev->btc;
bool btc_manual;
+ int ret;
- if (kstrtobool_from_user(user_buf, count, &btc_manual))
- goto out;
+ ret = kstrtobool_from_user(user_buf, count, &btc_manual);
+ if (ret)
+ return ret;
btc->ctrl.manual = btc_manual;
-out:
+
return count;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 150/600] wifi: mt76: mt7921: fix non-PSC channel scan fail
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (148 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 149/600] wifi: rtw89: debug: Fix error handling in rtw89_debug_priv_btc_manual_set() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 151/600] udp: re-score reuseport groups when connected sockets are present Greg Kroah-Hartman
` (460 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ming Yen Hsieh, Deren Wu,
Felix Fietkau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
[ Upstream commit 0e5911bb7cc92c00dda9b4d635c1266b7ca915c6 ]
Due to the scan command may only request legacy bands and PSC channel
in 6GHz band, we are unable to scan the APs on non-PSC channel in this
case. Enable WIPHY_FLAG_SPLIT_SCAN_6GHZ to support non-PSC channel
(obtained during scan on legacy bands) in 6GHz scan request.
Fixes: 50ac15a511e3 ("mt76: mt7921: add 6GHz support")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/mediatek/mt76/mt7921/init.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/init.c b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
index 4ad66b3443838..c997b8d3ea590 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/init.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/init.c
@@ -80,7 +80,8 @@ mt7921_init_wiphy(struct ieee80211_hw *hw)
wiphy->max_sched_scan_ssids = MT76_CONNAC_MAX_SCHED_SCAN_SSID;
wiphy->max_match_sets = MT76_CONNAC_MAX_SCAN_MATCH;
wiphy->max_sched_scan_reqs = 1;
- wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
+ wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH |
+ WIPHY_FLAG_SPLIT_SCAN_6GHZ;
wiphy->reg_notifier = mt7921_regd_notifier;
wiphy->features |= NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR |
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 151/600] udp: re-score reuseport groups when connected sockets are present
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (149 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 150/600] wifi: mt76: mt7921: fix non-PSC channel scan fail Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 152/600] bpf: reject unhashed sockets in bpf_sk_assign Greg Kroah-Hartman
` (459 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Lorenz Bauer,
Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit f0ea27e7bfe1c34e1f451a63eb68faa1d4c3a86d ]
Contrary to TCP, UDP reuseport groups can contain TCP_ESTABLISHED
sockets. To support these properly we remember whether a group has
a connected socket and skip the fast reuseport early-return. In
effect we continue scoring all reuseport sockets and then choose the
one with the highest score.
The current code fails to re-calculate the score for the result of
lookup_reuseport. According to Kuniyuki Iwashima:
1) SO_INCOMING_CPU is set
-> selected sk might have +1 score
2) BPF prog returns ESTABLISHED and/or SO_INCOMING_CPU sk
-> selected sk will have more than 8
Using the old score could trigger more lookups depending on the
order that sockets are created.
sk -> sk (SO_INCOMING_CPU) -> sk (ESTABLISHED)
| |
`-> select the next SO_INCOMING_CPU sk
|
`-> select itself (We should save this lookup)
Fixes: efc6b6f6c311 ("udp: Improve load balancing for SO_REUSEPORT.")
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230720-so-reuseport-v6-1-7021b683cdae@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/ipv4/udp.c | 20 +++++++++++++++-----
net/ipv6/udp.c | 19 ++++++++++++++-----
2 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 956d6797c76f3..42c1f7d9a980a 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -445,14 +445,24 @@ static struct sock *udp4_lib_lookup2(struct net *net,
score = compute_score(sk, net, saddr, sport,
daddr, hnum, dif, sdif);
if (score > badness) {
- result = lookup_reuseport(net, sk, skb,
- saddr, sport, daddr, hnum);
+ badness = score;
+ result = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+ if (!result) {
+ result = sk;
+ continue;
+ }
+
/* Fall back to scoring if group has connections */
- if (result && !reuseport_has_conns(sk))
+ if (!reuseport_has_conns(sk))
return result;
- result = result ? : sk;
- badness = score;
+ /* Reuseport logic returned an error, keep original score. */
+ if (IS_ERR(result))
+ continue;
+
+ badness = compute_score(result, net, saddr, sport,
+ daddr, hnum, dif, sdif);
+
}
}
return result;
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 27348172b25b9..64b36c2ba774a 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -193,14 +193,23 @@ static struct sock *udp6_lib_lookup2(struct net *net,
score = compute_score(sk, net, saddr, sport,
daddr, hnum, dif, sdif);
if (score > badness) {
- result = lookup_reuseport(net, sk, skb,
- saddr, sport, daddr, hnum);
+ badness = score;
+ result = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+ if (!result) {
+ result = sk;
+ continue;
+ }
+
/* Fall back to scoring if group has connections */
- if (result && !reuseport_has_conns(sk))
+ if (!reuseport_has_conns(sk))
return result;
- result = result ? : sk;
- badness = score;
+ /* Reuseport logic returned an error, keep original score. */
+ if (IS_ERR(result))
+ continue;
+
+ badness = compute_score(sk, net, saddr, sport,
+ daddr, hnum, dif, sdif);
}
}
return result;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 152/600] bpf: reject unhashed sockets in bpf_sk_assign
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (150 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 151/600] udp: re-score reuseport groups when connected sockets are present Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 153/600] net: export inet_lookup_reuseport and inet6_lookup_reuseport Greg Kroah-Hartman
` (458 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Joe Stringer, Lorenz Bauer,
Kuniyuki Iwashima, Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit 67312adc96b5a585970d03b62412847afe2c6b01 ]
The semantics for bpf_sk_assign are as follows:
sk = some_lookup_func()
bpf_sk_assign(skb, sk)
bpf_sk_release(sk)
That is, the sk is not consumed by bpf_sk_assign. The function
therefore needs to make sure that sk lives long enough to be
consumed from __inet_lookup_skb. The path through the stack for a
TCPv4 packet is roughly:
netif_receive_skb_core: takes RCU read lock
__netif_receive_skb_core:
sch_handle_ingress:
tcf_classify:
bpf_sk_assign()
deliver_ptype_list_skb:
deliver_skb:
ip_packet_type->func == ip_rcv:
ip_rcv_core:
ip_rcv_finish_core:
dst_input:
ip_local_deliver:
ip_local_deliver_finish:
ip_protocol_deliver_rcu:
tcp_v4_rcv:
__inet_lookup_skb:
skb_steal_sock
The existing helper takes advantage of the fact that everything
happens in the same RCU critical section: for sockets with
SOCK_RCU_FREE set bpf_sk_assign never takes a reference.
skb_steal_sock then checks SOCK_RCU_FREE again and does sock_put
if necessary.
This approach assumes that SOCK_RCU_FREE is never set on a sk
between bpf_sk_assign and skb_steal_sock, but this invariant is
violated by unhashed UDP sockets. A new UDP socket is created
in TCP_CLOSE state but without SOCK_RCU_FREE set. That flag is only
added in udp_lib_get_port() which happens when a socket is bound.
When bpf_sk_assign was added it wasn't possible to access unhashed
UDP sockets from BPF, so this wasn't a problem. This changed
in commit 0c48eefae712 ("sock_map: Lift socket state restriction
for datagram sockets"), but the helper wasn't adjusted accordingly.
The following sequence of events will therefore lead to a refcount
leak:
1. Add socket(AF_INET, SOCK_DGRAM) to a sockmap.
2. Pull socket out of sockmap and bpf_sk_assign it. Since
SOCK_RCU_FREE is not set we increment the refcount.
3. bind() or connect() the socket, setting SOCK_RCU_FREE.
4. skb_steal_sock will now set refcounted = false due to
SOCK_RCU_FREE.
5. tcp_v4_rcv() skips sock_put().
Fix the problem by rejecting unhashed sockets in bpf_sk_assign().
This matches the behaviour of __inet_lookup_skb which is ultimately
the goal of bpf_sk_assign().
Fixes: cf7fbe660f2d ("bpf: Add socket assign support")
Cc: Joe Stringer <joe@cilium.io>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20230720-so-reuseport-v6-2-7021b683cdae@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/core/filter.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/net/core/filter.c b/net/core/filter.c
index 419ce7c61bd6b..9fd7c88b5db4e 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -7259,6 +7259,8 @@ BPF_CALL_3(bpf_sk_assign, struct sk_buff *, skb, struct sock *, sk, u64, flags)
return -ENETUNREACH;
if (unlikely(sk_fullsock(sk) && sk->sk_reuseport))
return -ESOCKTNOSUPPORT;
+ if (sk_unhashed(sk))
+ return -EOPNOTSUPP;
if (sk_is_refcounted(sk) &&
unlikely(!refcount_inc_not_zero(&sk->sk_refcnt)))
return -ENOENT;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 153/600] net: export inet_lookup_reuseport and inet6_lookup_reuseport
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (151 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 152/600] bpf: reject unhashed sockets in bpf_sk_assign Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 154/600] net: remove duplicate reuseport_lookup functions Greg Kroah-Hartman
` (457 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Lorenz Bauer,
Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit ce796e60b3b196b61fcc565df195443cbb846ef0 ]
Rename the existing reuseport helpers for IPv4 and IPv6 so that they
can be invoked in the follow up commit. Export them so that building
DCCP and IPv6 as a module works.
No change in functionality.
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230720-so-reuseport-v6-3-7021b683cdae@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Stable-dep-of: 9c02bec95954 ("bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/inet6_hashtables.h | 7 +++++++
include/net/inet_hashtables.h | 5 +++++
net/ipv4/inet_hashtables.c | 15 ++++++++-------
net/ipv6/inet6_hashtables.c | 19 ++++++++++---------
4 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index 56f1286583d3c..032ddab48f8f8 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -48,6 +48,13 @@ struct sock *__inet6_lookup_established(struct net *net,
const u16 hnum, const int dif,
const int sdif);
+struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk,
+ struct sk_buff *skb, int doff,
+ const struct in6_addr *saddr,
+ __be16 sport,
+ const struct in6_addr *daddr,
+ unsigned short hnum);
+
struct sock *inet6_lookup_listener(struct net *net,
struct inet_hashinfo *hashinfo,
struct sk_buff *skb, int doff,
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index 99bd823e97f62..8734f3488f5d0 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -379,6 +379,11 @@ struct sock *__inet_lookup_established(struct net *net,
const __be32 daddr, const u16 hnum,
const int dif, const int sdif);
+struct sock *inet_lookup_reuseport(struct net *net, struct sock *sk,
+ struct sk_buff *skb, int doff,
+ __be32 saddr, __be16 sport,
+ __be32 daddr, unsigned short hnum);
+
static inline struct sock *
inet_lookup_established(struct net *net, struct inet_hashinfo *hashinfo,
const __be32 saddr, const __be16 sport,
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index c19b462662ad0..6ed92624c95c4 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -332,10 +332,10 @@ static inline int compute_score(struct sock *sk, struct net *net,
return score;
}
-static inline struct sock *lookup_reuseport(struct net *net, struct sock *sk,
- struct sk_buff *skb, int doff,
- __be32 saddr, __be16 sport,
- __be32 daddr, unsigned short hnum)
+struct sock *inet_lookup_reuseport(struct net *net, struct sock *sk,
+ struct sk_buff *skb, int doff,
+ __be32 saddr, __be16 sport,
+ __be32 daddr, unsigned short hnum)
{
struct sock *reuse_sk = NULL;
u32 phash;
@@ -346,6 +346,7 @@ static inline struct sock *lookup_reuseport(struct net *net, struct sock *sk,
}
return reuse_sk;
}
+EXPORT_SYMBOL_GPL(inet_lookup_reuseport);
/*
* Here are some nice properties to exploit here. The BSD API
@@ -369,8 +370,8 @@ static struct sock *inet_lhash2_lookup(struct net *net,
sk_nulls_for_each_rcu(sk, node, &ilb2->nulls_head) {
score = compute_score(sk, net, hnum, daddr, dif, sdif);
if (score > hiscore) {
- result = lookup_reuseport(net, sk, skb, doff,
- saddr, sport, daddr, hnum);
+ result = inet_lookup_reuseport(net, sk, skb, doff,
+ saddr, sport, daddr, hnum);
if (result)
return result;
@@ -399,7 +400,7 @@ static inline struct sock *inet_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
+ reuse_sk = inet_lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
if (reuse_sk)
sk = reuse_sk;
return sk;
diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c
index b64b49012655e..b7c56867314ed 100644
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -111,12 +111,12 @@ static inline int compute_score(struct sock *sk, struct net *net,
return score;
}
-static inline struct sock *lookup_reuseport(struct net *net, struct sock *sk,
- struct sk_buff *skb, int doff,
- const struct in6_addr *saddr,
- __be16 sport,
- const struct in6_addr *daddr,
- unsigned short hnum)
+struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk,
+ struct sk_buff *skb, int doff,
+ const struct in6_addr *saddr,
+ __be16 sport,
+ const struct in6_addr *daddr,
+ unsigned short hnum)
{
struct sock *reuse_sk = NULL;
u32 phash;
@@ -127,6 +127,7 @@ static inline struct sock *lookup_reuseport(struct net *net, struct sock *sk,
}
return reuse_sk;
}
+EXPORT_SYMBOL_GPL(inet6_lookup_reuseport);
/* called with rcu_read_lock() */
static struct sock *inet6_lhash2_lookup(struct net *net,
@@ -143,8 +144,8 @@ static struct sock *inet6_lhash2_lookup(struct net *net,
sk_nulls_for_each_rcu(sk, node, &ilb2->nulls_head) {
score = compute_score(sk, net, hnum, daddr, dif, sdif);
if (score > hiscore) {
- result = lookup_reuseport(net, sk, skb, doff,
- saddr, sport, daddr, hnum);
+ result = inet6_lookup_reuseport(net, sk, skb, doff,
+ saddr, sport, daddr, hnum);
if (result)
return result;
@@ -175,7 +176,7 @@ static inline struct sock *inet6_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
+ reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
if (reuse_sk)
sk = reuse_sk;
return sk;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 154/600] net: remove duplicate reuseport_lookup functions
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (152 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 153/600] net: export inet_lookup_reuseport and inet6_lookup_reuseport Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 155/600] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign Greg Kroah-Hartman
` (456 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kuniyuki Iwashima, Lorenz Bauer,
Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit 0f495f7617229772403e683033abc473f0f0553c ]
There are currently four copies of reuseport_lookup: one each for
(TCP, UDP)x(IPv4, IPv6). This forces us to duplicate all callers of
those functions as well. This is already the case for sk_lookup
helpers (inet,inet6,udp4,udp6)_lookup_run_bpf.
There are two differences between the reuseport_lookup helpers:
1. They call different hash functions depending on protocol
2. UDP reuseport_lookup checks that sk_state != TCP_ESTABLISHED
Move the check for sk_state into the caller and use the INDIRECT_CALL
infrastructure to cut down the helpers to one per IP version.
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230720-so-reuseport-v6-4-7021b683cdae@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Stable-dep-of: 9c02bec95954 ("bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/inet6_hashtables.h | 11 ++++++++-
include/net/inet_hashtables.h | 15 ++++++++-----
net/ipv4/inet_hashtables.c | 20 +++++++++++------
net/ipv4/udp.c | 34 +++++++++++-----------------
net/ipv6/inet6_hashtables.c | 14 ++++++++----
net/ipv6/udp.c | 41 +++++++++++++---------------------
6 files changed, 72 insertions(+), 63 deletions(-)
diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index 032ddab48f8f8..f89320b6fee31 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -48,12 +48,21 @@ struct sock *__inet6_lookup_established(struct net *net,
const u16 hnum, const int dif,
const int sdif);
+typedef u32 (inet6_ehashfn_t)(const struct net *net,
+ const struct in6_addr *laddr, const u16 lport,
+ const struct in6_addr *faddr, const __be16 fport);
+
+inet6_ehashfn_t inet6_ehashfn;
+
+INDIRECT_CALLABLE_DECLARE(inet6_ehashfn_t udp6_ehashfn);
+
struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
const struct in6_addr *saddr,
__be16 sport,
const struct in6_addr *daddr,
- unsigned short hnum);
+ unsigned short hnum,
+ inet6_ehashfn_t *ehashfn);
struct sock *inet6_lookup_listener(struct net *net,
struct inet_hashinfo *hashinfo,
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index 8734f3488f5d0..ddfa2e67fdb51 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -379,10 +379,19 @@ struct sock *__inet_lookup_established(struct net *net,
const __be32 daddr, const u16 hnum,
const int dif, const int sdif);
+typedef u32 (inet_ehashfn_t)(const struct net *net,
+ const __be32 laddr, const __u16 lport,
+ const __be32 faddr, const __be16 fport);
+
+inet_ehashfn_t inet_ehashfn;
+
+INDIRECT_CALLABLE_DECLARE(inet_ehashfn_t udp_ehashfn);
+
struct sock *inet_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
__be32 saddr, __be16 sport,
- __be32 daddr, unsigned short hnum);
+ __be32 daddr, unsigned short hnum,
+ inet_ehashfn_t *ehashfn);
static inline struct sock *
inet_lookup_established(struct net *net, struct inet_hashinfo *hashinfo,
@@ -453,10 +462,6 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,
refcounted);
}
-u32 inet6_ehashfn(const struct net *net,
- const struct in6_addr *laddr, const u16 lport,
- const struct in6_addr *faddr, const __be16 fport);
-
static inline void sk_daddr_set(struct sock *sk, __be32 addr)
{
sk->sk_daddr = addr; /* alias of inet_daddr */
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 6ed92624c95c4..970da5b2bfe9c 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -28,9 +28,9 @@
#include <net/tcp.h>
#include <net/sock_reuseport.h>
-static u32 inet_ehashfn(const struct net *net, const __be32 laddr,
- const __u16 lport, const __be32 faddr,
- const __be16 fport)
+u32 inet_ehashfn(const struct net *net, const __be32 laddr,
+ const __u16 lport, const __be32 faddr,
+ const __be16 fport)
{
static u32 inet_ehash_secret __read_mostly;
@@ -39,6 +39,7 @@ static u32 inet_ehashfn(const struct net *net, const __be32 laddr,
return __inet_ehashfn(laddr, lport, faddr, fport,
inet_ehash_secret + net_hash_mix(net));
}
+EXPORT_SYMBOL_GPL(inet_ehashfn);
/* This function handles inet_sock, but also timewait and request sockets
* for IPv4/IPv6.
@@ -332,16 +333,20 @@ static inline int compute_score(struct sock *sk, struct net *net,
return score;
}
+INDIRECT_CALLABLE_DECLARE(inet_ehashfn_t udp_ehashfn);
+
struct sock *inet_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
__be32 saddr, __be16 sport,
- __be32 daddr, unsigned short hnum)
+ __be32 daddr, unsigned short hnum,
+ inet_ehashfn_t *ehashfn)
{
struct sock *reuse_sk = NULL;
u32 phash;
if (sk->sk_reuseport) {
- phash = inet_ehashfn(net, daddr, hnum, saddr, sport);
+ phash = INDIRECT_CALL_2(ehashfn, udp_ehashfn, inet_ehashfn,
+ net, daddr, hnum, saddr, sport);
reuse_sk = reuseport_select_sock(sk, phash, skb, doff);
}
return reuse_sk;
@@ -371,7 +376,7 @@ static struct sock *inet_lhash2_lookup(struct net *net,
score = compute_score(sk, net, hnum, daddr, dif, sdif);
if (score > hiscore) {
result = inet_lookup_reuseport(net, sk, skb, doff,
- saddr, sport, daddr, hnum);
+ saddr, sport, daddr, hnum, inet_ehashfn);
if (result)
return result;
@@ -400,7 +405,8 @@ static inline struct sock *inet_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = inet_lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
+ reuse_sk = inet_lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum,
+ inet_ehashfn);
if (reuse_sk)
sk = reuse_sk;
return sk;
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 42c1f7d9a980a..87686c9e4efca 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -400,9 +400,9 @@ static int compute_score(struct sock *sk, struct net *net,
return score;
}
-static u32 udp_ehashfn(const struct net *net, const __be32 laddr,
- const __u16 lport, const __be32 faddr,
- const __be16 fport)
+INDIRECT_CALLABLE_SCOPE
+u32 udp_ehashfn(const struct net *net, const __be32 laddr, const __u16 lport,
+ const __be32 faddr, const __be16 fport)
{
static u32 udp_ehash_secret __read_mostly;
@@ -412,22 +412,6 @@ static u32 udp_ehashfn(const struct net *net, const __be32 laddr,
udp_ehash_secret + net_hash_mix(net));
}
-static struct sock *lookup_reuseport(struct net *net, struct sock *sk,
- struct sk_buff *skb,
- __be32 saddr, __be16 sport,
- __be32 daddr, unsigned short hnum)
-{
- struct sock *reuse_sk = NULL;
- u32 hash;
-
- if (sk->sk_reuseport && sk->sk_state != TCP_ESTABLISHED) {
- hash = udp_ehashfn(net, daddr, hnum, saddr, sport);
- reuse_sk = reuseport_select_sock(sk, hash, skb,
- sizeof(struct udphdr));
- }
- return reuse_sk;
-}
-
/* called with rcu_read_lock() */
static struct sock *udp4_lib_lookup2(struct net *net,
__be32 saddr, __be16 sport,
@@ -446,7 +430,14 @@ static struct sock *udp4_lib_lookup2(struct net *net,
daddr, hnum, dif, sdif);
if (score > badness) {
badness = score;
- result = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+
+ if (sk->sk_state == TCP_ESTABLISHED) {
+ result = sk;
+ continue;
+ }
+
+ result = inet_lookup_reuseport(net, sk, skb, sizeof(struct udphdr),
+ saddr, sport, daddr, hnum, udp_ehashfn);
if (!result) {
result = sk;
continue;
@@ -485,7 +476,8 @@ static struct sock *udp4_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+ reuse_sk = inet_lookup_reuseport(net, sk, skb, sizeof(struct udphdr),
+ saddr, sport, daddr, hnum, udp_ehashfn);
if (reuse_sk)
sk = reuse_sk;
return sk;
diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c
index b7c56867314ed..3616225c89ef6 100644
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -39,6 +39,7 @@ u32 inet6_ehashfn(const struct net *net,
return __inet6_ehashfn(lhash, lport, fhash, fport,
inet6_ehash_secret + net_hash_mix(net));
}
+EXPORT_SYMBOL_GPL(inet6_ehashfn);
/*
* Sockets in TCP_CLOSE state are _always_ taken out of the hash, so
@@ -111,18 +112,22 @@ static inline int compute_score(struct sock *sk, struct net *net,
return score;
}
+INDIRECT_CALLABLE_DECLARE(inet6_ehashfn_t udp6_ehashfn);
+
struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
const struct in6_addr *saddr,
__be16 sport,
const struct in6_addr *daddr,
- unsigned short hnum)
+ unsigned short hnum,
+ inet6_ehashfn_t *ehashfn)
{
struct sock *reuse_sk = NULL;
u32 phash;
if (sk->sk_reuseport) {
- phash = inet6_ehashfn(net, daddr, hnum, saddr, sport);
+ phash = INDIRECT_CALL_INET(ehashfn, udp6_ehashfn, inet6_ehashfn,
+ net, daddr, hnum, saddr, sport);
reuse_sk = reuseport_select_sock(sk, phash, skb, doff);
}
return reuse_sk;
@@ -145,7 +150,7 @@ static struct sock *inet6_lhash2_lookup(struct net *net,
score = compute_score(sk, net, hnum, daddr, dif, sdif);
if (score > hiscore) {
result = inet6_lookup_reuseport(net, sk, skb, doff,
- saddr, sport, daddr, hnum);
+ saddr, sport, daddr, hnum, inet6_ehashfn);
if (result)
return result;
@@ -176,7 +181,8 @@ static inline struct sock *inet6_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff, saddr, sport, daddr, hnum);
+ reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff,
+ saddr, sport, daddr, hnum, inet6_ehashfn);
if (reuse_sk)
sk = reuse_sk;
return sk;
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 64b36c2ba774a..3408376b1863b 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -70,11 +70,12 @@ int udpv6_init_sock(struct sock *sk)
return 0;
}
-static u32 udp6_ehashfn(const struct net *net,
- const struct in6_addr *laddr,
- const u16 lport,
- const struct in6_addr *faddr,
- const __be16 fport)
+INDIRECT_CALLABLE_SCOPE
+u32 udp6_ehashfn(const struct net *net,
+ const struct in6_addr *laddr,
+ const u16 lport,
+ const struct in6_addr *faddr,
+ const __be16 fport)
{
static u32 udp6_ehash_secret __read_mostly;
static u32 udp_ipv6_hash_secret __read_mostly;
@@ -159,24 +160,6 @@ static int compute_score(struct sock *sk, struct net *net,
return score;
}
-static struct sock *lookup_reuseport(struct net *net, struct sock *sk,
- struct sk_buff *skb,
- const struct in6_addr *saddr,
- __be16 sport,
- const struct in6_addr *daddr,
- unsigned int hnum)
-{
- struct sock *reuse_sk = NULL;
- u32 hash;
-
- if (sk->sk_reuseport && sk->sk_state != TCP_ESTABLISHED) {
- hash = udp6_ehashfn(net, daddr, hnum, saddr, sport);
- reuse_sk = reuseport_select_sock(sk, hash, skb,
- sizeof(struct udphdr));
- }
- return reuse_sk;
-}
-
/* called with rcu_read_lock() */
static struct sock *udp6_lib_lookup2(struct net *net,
const struct in6_addr *saddr, __be16 sport,
@@ -194,7 +177,14 @@ static struct sock *udp6_lib_lookup2(struct net *net,
daddr, hnum, dif, sdif);
if (score > badness) {
badness = score;
- result = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+
+ if (sk->sk_state == TCP_ESTABLISHED) {
+ result = sk;
+ continue;
+ }
+
+ result = inet6_lookup_reuseport(net, sk, skb, sizeof(struct udphdr),
+ saddr, sport, daddr, hnum, udp6_ehashfn);
if (!result) {
result = sk;
continue;
@@ -234,7 +224,8 @@ static inline struct sock *udp6_lookup_run_bpf(struct net *net,
if (no_reuseport || IS_ERR_OR_NULL(sk))
return sk;
- reuse_sk = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum);
+ reuse_sk = inet6_lookup_reuseport(net, sk, skb, sizeof(struct udphdr),
+ saddr, sport, daddr, hnum, udp6_ehashfn);
if (reuse_sk)
sk = reuse_sk;
return sk;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 155/600] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (153 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 154/600] net: remove duplicate reuseport_lookup functions Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 156/600] wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH Greg Kroah-Hartman
` (455 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Borkmann, Joe Stringer,
Kuniyuki Iwashima, Lorenz Bauer, Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit 9c02bec95954252c3c01bfbb3f7560e0b95ca955 ]
Currently the bpf_sk_assign helper in tc BPF context refuses SO_REUSEPORT
sockets. This means we can't use the helper to steer traffic to Envoy,
which configures SO_REUSEPORT on its sockets. In turn, we're blocked
from removing TPROXY from our setup.
The reason that bpf_sk_assign refuses such sockets is that the
bpf_sk_lookup helpers don't execute SK_REUSEPORT programs. Instead,
one of the reuseport sockets is selected by hash. This could cause
dispatch to the "wrong" socket:
sk = bpf_sk_lookup_tcp(...) // select SO_REUSEPORT by hash
bpf_sk_assign(skb, sk) // SK_REUSEPORT wasn't executed
Fixing this isn't as simple as invoking SK_REUSEPORT from the lookup
helpers unfortunately. In the tc context, L2 headers are at the start
of the skb, while SK_REUSEPORT expects L3 headers instead.
Instead, we execute the SK_REUSEPORT program when the assigned socket
is pulled out of the skb, further up the stack. This creates some
trickiness with regards to refcounting as bpf_sk_assign will put both
refcounted and RCU freed sockets in skb->sk. reuseport sockets are RCU
freed. We can infer that the sk_assigned socket is RCU freed if the
reuseport lookup succeeds, but convincing yourself of this fact isn't
straight forward. Therefore we defensively check refcounting on the
sk_assign sock even though it's probably not required in practice.
Fixes: 8e368dc72e86 ("bpf: Fix use of sk->sk_reuseport from sk_assign")
Fixes: cf7fbe660f2d ("bpf: Add socket assign support")
Co-developed-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Cc: Joe Stringer <joe@cilium.io>
Link: https://lore.kernel.org/bpf/CACAyw98+qycmpQzKupquhkxbvWK4OFyDuuLMBNROnfWMZxUWeA@mail.gmail.com/
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230720-so-reuseport-v6-7-7021b683cdae@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/inet6_hashtables.h | 56 +++++++++++++++++++++++++++++++---
include/net/inet_hashtables.h | 49 +++++++++++++++++++++++++++--
include/net/sock.h | 7 +++--
include/uapi/linux/bpf.h | 3 --
net/core/filter.c | 2 --
net/ipv4/udp.c | 8 +++--
net/ipv6/udp.c | 8 +++--
tools/include/uapi/linux/bpf.h | 3 --
8 files changed, 115 insertions(+), 21 deletions(-)
diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index f89320b6fee31..475e672b4facc 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -94,6 +94,46 @@ static inline struct sock *__inet6_lookup(struct net *net,
daddr, hnum, dif, sdif);
}
+static inline
+struct sock *inet6_steal_sock(struct net *net, struct sk_buff *skb, int doff,
+ const struct in6_addr *saddr, const __be16 sport,
+ const struct in6_addr *daddr, const __be16 dport,
+ bool *refcounted, inet6_ehashfn_t *ehashfn)
+{
+ struct sock *sk, *reuse_sk;
+ bool prefetched;
+
+ sk = skb_steal_sock(skb, refcounted, &prefetched);
+ if (!sk)
+ return NULL;
+
+ if (!prefetched)
+ return sk;
+
+ if (sk->sk_protocol == IPPROTO_TCP) {
+ if (sk->sk_state != TCP_LISTEN)
+ return sk;
+ } else if (sk->sk_protocol == IPPROTO_UDP) {
+ if (sk->sk_state != TCP_CLOSE)
+ return sk;
+ } else {
+ return sk;
+ }
+
+ reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff,
+ saddr, sport, daddr, ntohs(dport),
+ ehashfn);
+ if (!reuse_sk)
+ return sk;
+
+ /* We've chosen a new reuseport sock which is never refcounted. This
+ * implies that sk also isn't refcounted.
+ */
+ WARN_ON_ONCE(*refcounted);
+
+ return reuse_sk;
+}
+
static inline struct sock *__inet6_lookup_skb(struct inet_hashinfo *hashinfo,
struct sk_buff *skb, int doff,
const __be16 sport,
@@ -101,14 +141,20 @@ static inline struct sock *__inet6_lookup_skb(struct inet_hashinfo *hashinfo,
int iif, int sdif,
bool *refcounted)
{
- struct sock *sk = skb_steal_sock(skb, refcounted);
-
+ struct net *net = dev_net(skb_dst(skb)->dev);
+ const struct ipv6hdr *ip6h = ipv6_hdr(skb);
+ struct sock *sk;
+
+ sk = inet6_steal_sock(net, skb, doff, &ip6h->saddr, sport, &ip6h->daddr, dport,
+ refcounted, inet6_ehashfn);
+ if (IS_ERR(sk))
+ return NULL;
if (sk)
return sk;
- return __inet6_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
- doff, &ipv6_hdr(skb)->saddr, sport,
- &ipv6_hdr(skb)->daddr, ntohs(dport),
+ return __inet6_lookup(net, hashinfo, skb,
+ doff, &ip6h->saddr, sport,
+ &ip6h->daddr, ntohs(dport),
iif, sdif, refcounted);
}
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index ddfa2e67fdb51..a1b8eb147ce73 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -442,6 +442,46 @@ static inline struct sock *inet_lookup(struct net *net,
return sk;
}
+static inline
+struct sock *inet_steal_sock(struct net *net, struct sk_buff *skb, int doff,
+ const __be32 saddr, const __be16 sport,
+ const __be32 daddr, const __be16 dport,
+ bool *refcounted, inet_ehashfn_t *ehashfn)
+{
+ struct sock *sk, *reuse_sk;
+ bool prefetched;
+
+ sk = skb_steal_sock(skb, refcounted, &prefetched);
+ if (!sk)
+ return NULL;
+
+ if (!prefetched)
+ return sk;
+
+ if (sk->sk_protocol == IPPROTO_TCP) {
+ if (sk->sk_state != TCP_LISTEN)
+ return sk;
+ } else if (sk->sk_protocol == IPPROTO_UDP) {
+ if (sk->sk_state != TCP_CLOSE)
+ return sk;
+ } else {
+ return sk;
+ }
+
+ reuse_sk = inet_lookup_reuseport(net, sk, skb, doff,
+ saddr, sport, daddr, ntohs(dport),
+ ehashfn);
+ if (!reuse_sk)
+ return sk;
+
+ /* We've chosen a new reuseport sock which is never refcounted. This
+ * implies that sk also isn't refcounted.
+ */
+ WARN_ON_ONCE(*refcounted);
+
+ return reuse_sk;
+}
+
static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,
struct sk_buff *skb,
int doff,
@@ -450,13 +490,18 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,
const int sdif,
bool *refcounted)
{
- struct sock *sk = skb_steal_sock(skb, refcounted);
+ struct net *net = dev_net(skb_dst(skb)->dev);
const struct iphdr *iph = ip_hdr(skb);
+ struct sock *sk;
+ sk = inet_steal_sock(net, skb, doff, iph->saddr, sport, iph->daddr, dport,
+ refcounted, inet_ehashfn);
+ if (IS_ERR(sk))
+ return NULL;
if (sk)
return sk;
- return __inet_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,
+ return __inet_lookup(net, hashinfo, skb,
doff, iph->saddr, sport,
iph->daddr, dport, inet_iif(skb), sdif,
refcounted);
diff --git a/include/net/sock.h b/include/net/sock.h
index d1f936ed97556..3a8b2cc23b914 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -2852,20 +2852,23 @@ sk_is_refcounted(struct sock *sk)
* skb_steal_sock - steal a socket from an sk_buff
* @skb: sk_buff to steal the socket from
* @refcounted: is set to true if the socket is reference-counted
+ * @prefetched: is set to true if the socket was assigned from bpf
*/
static inline struct sock *
-skb_steal_sock(struct sk_buff *skb, bool *refcounted)
+skb_steal_sock(struct sk_buff *skb, bool *refcounted, bool *prefetched)
{
if (skb->sk) {
struct sock *sk = skb->sk;
*refcounted = true;
- if (skb_sk_is_prefetched(skb))
+ *prefetched = skb_sk_is_prefetched(skb);
+ if (*prefetched)
*refcounted = sk_is_refcounted(sk);
skb->destructor = NULL;
skb->sk = NULL;
return sk;
}
+ *prefetched = false;
*refcounted = false;
return NULL;
}
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 51b9aa640ad2a..1304bec5c97a0 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -4079,9 +4079,6 @@ union bpf_attr {
* **-EOPNOTSUPP** if the operation is not supported, for example
* a call from outside of TC ingress.
*
- * **-ESOCKTNOSUPPORT** if the socket type is not supported
- * (reuseport).
- *
* long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
* Description
* Helper is overloaded depending on BPF program type. This
diff --git a/net/core/filter.c b/net/core/filter.c
index 9fd7c88b5db4e..ccc97d54d9a8b 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -7257,8 +7257,6 @@ BPF_CALL_3(bpf_sk_assign, struct sk_buff *, skb, struct sock *, sk, u64, flags)
return -EOPNOTSUPP;
if (unlikely(dev_net(skb->dev) != sock_net(sk)))
return -ENETUNREACH;
- if (unlikely(sk_fullsock(sk) && sk->sk_reuseport))
- return -ESOCKTNOSUPPORT;
if (sk_unhashed(sk))
return -EOPNOTSUPP;
if (sk_is_refcounted(sk) &&
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 87686c9e4efca..58c2f8df5fd70 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2442,7 +2442,11 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
if (udp4_csum_init(skb, uh, proto))
goto csum_error;
- sk = skb_steal_sock(skb, &refcounted);
+ sk = inet_steal_sock(net, skb, sizeof(struct udphdr), saddr, uh->source, daddr, uh->dest,
+ &refcounted, udp_ehashfn);
+ if (IS_ERR(sk))
+ goto no_sk;
+
if (sk) {
struct dst_entry *dst = skb_dst(skb);
int ret;
@@ -2463,7 +2467,7 @@ int __udp4_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
sk = __udp4_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
if (sk)
return udp_unicast_rcv_skb(sk, skb, uh);
-
+no_sk:
if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb))
goto drop;
nf_reset_ct(skb);
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 3408376b1863b..91b757066c935 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -983,7 +983,11 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
goto csum_error;
/* Check if the socket is already available, e.g. due to early demux */
- sk = skb_steal_sock(skb, &refcounted);
+ sk = inet6_steal_sock(net, skb, sizeof(struct udphdr), saddr, uh->source, daddr, uh->dest,
+ &refcounted, udp6_ehashfn);
+ if (IS_ERR(sk))
+ goto no_sk;
+
if (sk) {
struct dst_entry *dst = skb_dst(skb);
int ret;
@@ -1017,7 +1021,7 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
goto report_csum_error;
return udp6_unicast_rcv_skb(sk, skb, uh);
}
-
+no_sk:
reason = SKB_DROP_REASON_NO_SOCKET;
if (!uh->check)
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 51b9aa640ad2a..1304bec5c97a0 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -4079,9 +4079,6 @@ union bpf_attr {
* **-EOPNOTSUPP** if the operation is not supported, for example
* a call from outside of TC ingress.
*
- * **-ESOCKTNOSUPPORT** if the socket type is not supported
- * (reuseport).
- *
* long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
* Description
* Helper is overloaded depending on BPF program type. This
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 156/600] wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (154 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 155/600] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 157/600] spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe() Greg Kroah-Hartman
` (454 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Lin Ma, Felix Fietkau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit 74f12d511625e603fac8c0c2b6872e687e56dd61 ]
It seems that the nla_policy in mt76_tm_policy is missed for attribute
MT76_TM_ATTR_TX_LENGTH. This patch adds the correct description to make
sure the
u32 val = nla_get_u32(tb[MT76_TM_ATTR_TX_LENGTH]);
in function mt76_testmode_cmd() is safe and will not result in
out-of-attribute read.
Fixes: f0efa8621550 ("mt76: add API for testmode support")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/mediatek/mt76/testmode.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/wireless/mediatek/mt76/testmode.c b/drivers/net/wireless/mediatek/mt76/testmode.c
index 0accc71a91c9a..4644dace9bb34 100644
--- a/drivers/net/wireless/mediatek/mt76/testmode.c
+++ b/drivers/net/wireless/mediatek/mt76/testmode.c
@@ -8,6 +8,7 @@ const struct nla_policy mt76_tm_policy[NUM_MT76_TM_ATTRS] = {
[MT76_TM_ATTR_RESET] = { .type = NLA_FLAG },
[MT76_TM_ATTR_STATE] = { .type = NLA_U8 },
[MT76_TM_ATTR_TX_COUNT] = { .type = NLA_U32 },
+ [MT76_TM_ATTR_TX_LENGTH] = { .type = NLA_U32 },
[MT76_TM_ATTR_TX_RATE_MODE] = { .type = NLA_U8 },
[MT76_TM_ATTR_TX_RATE_NSS] = { .type = NLA_U8 },
[MT76_TM_ATTR_TX_RATE_IDX] = { .type = NLA_U8 },
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 157/600] spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (155 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 156/600] wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 158/600] can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM Greg Kroah-Hartman
` (453 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Zhang Shurong, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Shurong <zhang_shurong@foxmail.com>
[ Upstream commit 29a449e765ff70a5bd533be94babb6d36985d096 ]
The platform_get_irq might be failed and return a negative result. So
there should have an error handling code.
Fixed this by adding an error handling code.
Fixes: 8528547bcc33 ("spi: tegra: add spi driver for sflash controller")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Link: https://lore.kernel.org/r/tencent_71FC162D589E4788C2152AAC84CD8D5C6D06@qq.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/spi/spi-tegra20-sflash.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/spi/spi-tegra20-sflash.c b/drivers/spi/spi-tegra20-sflash.c
index 220ee08c4a06c..d4bebb4314172 100644
--- a/drivers/spi/spi-tegra20-sflash.c
+++ b/drivers/spi/spi-tegra20-sflash.c
@@ -455,7 +455,11 @@ static int tegra_sflash_probe(struct platform_device *pdev)
goto exit_free_master;
}
- tsd->irq = platform_get_irq(pdev, 0);
+ ret = platform_get_irq(pdev, 0);
+ if (ret < 0)
+ goto exit_free_master;
+ tsd->irq = ret;
+
ret = request_irq(tsd->irq, tegra_sflash_isr, 0,
dev_name(&pdev->dev), tsd);
if (ret < 0) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 158/600] can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (156 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 157/600] spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 159/600] wifi: mt76: mt7915: fix power-limits while chan_switch Greg Kroah-Hartman
` (452 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Marc Kleine-Budde, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marc Kleine-Budde <mkl@pengutronix.de>
[ Upstream commit 6c8bc15f02b85bc8f47074110d8fd8caf7a1e42d ]
In case of an RX overflow error from the CAN controller and an OOM
where no skb can be allocated, the error counters are not incremented.
Fix this by first incrementing the error counters and then allocate
the skb.
Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
Link: https://lore.kernel.org/all/20230718-gs_usb-cleanups-v1-7-c3b9154ec605@pengutronix.de
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/can/usb/gs_usb.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/net/can/usb/gs_usb.c b/drivers/net/can/usb/gs_usb.c
index 5858cbafbc965..264a0f764e011 100644
--- a/drivers/net/can/usb/gs_usb.c
+++ b/drivers/net/can/usb/gs_usb.c
@@ -626,6 +626,9 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
}
if (hf->flags & GS_CAN_FLAG_OVERFLOW) {
+ stats->rx_over_errors++;
+ stats->rx_errors++;
+
skb = alloc_can_err_skb(netdev, &cf);
if (!skb)
goto resubmit_urb;
@@ -633,8 +636,6 @@ static void gs_usb_receive_bulk_callback(struct urb *urb)
cf->can_id |= CAN_ERR_CRTL;
cf->len = CAN_ERR_DLC;
cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
- stats->rx_over_errors++;
- stats->rx_errors++;
netif_rx(skb);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 159/600] wifi: mt76: mt7915: fix power-limits while chan_switch
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (157 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 158/600] can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 160/600] wifi: mwifiex: Fix OOB and integer underflow when rx packets Greg Kroah-Hartman
` (451 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chad Monroe, Allen Ye, Ryder Lee,
Felix Fietkau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ryder Lee <ryder.lee@mediatek.com>
[ Upstream commit 6c0570bc21ec2073890aa252c8420ca7bec402e4 ]
If user changes the channel without completely disabling the interface the
txpower_sku values reported track the old channel the device was operating on.
If user bounces the interface the correct power tables are applied.
mt7915_sku_group_len array gets updated before the channel switch happens so it
uses data from the old channel.
Fixes: ecb187a74e18 ("mt76: mt7915: rework the flow of txpower setting")
Fixes: f1d962369d56 ("mt76: mt7915: implement HE per-rate tx power support")
Reported-By: Chad Monroe <chad.monroe@smartrg.com>
Tested-by: Chad Monroe <chad.monroe@smartrg.com>
Signed-off-by: Allen Ye <allen.ye@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/mediatek/mt76/mt7915/main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
index bda26bd62412e..3280843ea8566 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
@@ -455,7 +455,8 @@ static int mt7915_config(struct ieee80211_hw *hw, u32 changed)
ieee80211_wake_queues(hw);
}
- if (changed & IEEE80211_CONF_CHANGE_POWER) {
+ if (changed & (IEEE80211_CONF_CHANGE_POWER |
+ IEEE80211_CONF_CHANGE_CHANNEL)) {
ret = mt7915_mcu_set_txpower_sku(phy);
if (ret)
return ret;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 160/600] wifi: mwifiex: Fix OOB and integer underflow when rx packets
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (158 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 159/600] wifi: mt76: mt7915: fix power-limits while chan_switch Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 161/600] wifi: mwifiex: fix error recovery in PCIE buffer descriptor management Greg Kroah-Hartman
` (450 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Polaris Pi, Matthew Wang,
Brian Norris, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Polaris Pi <pinkperfect2021@gmail.com>
[ Upstream commit 11958528161731c58e105b501ed60b83a91ea941 ]
Make sure mwifiex_process_mgmt_packet,
mwifiex_process_sta_rx_packet and mwifiex_process_uap_rx_packet,
mwifiex_uap_queue_bridged_pkt and mwifiex_process_rx_packet
not out-of-bounds access the skb->data buffer.
Fixes: 2dbaf751b1de ("mwifiex: report received management frames to cfg80211")
Signed-off-by: Polaris Pi <pinkperfect2021@gmail.com>
Reviewed-by: Matthew Wang <matthewmwang@chromium.org>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230723070741.1544662-1-pinkperfect2021@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/marvell/mwifiex/sta_rx.c | 11 ++++++++++-
.../net/wireless/marvell/mwifiex/uap_txrx.c | 19 +++++++++++++++++++
drivers/net/wireless/marvell/mwifiex/util.c | 10 +++++++---
3 files changed, 36 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_rx.c b/drivers/net/wireless/marvell/mwifiex/sta_rx.c
index 13659b02ba882..f2899d53a43f9 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_rx.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_rx.c
@@ -86,6 +86,14 @@ int mwifiex_process_rx_packet(struct mwifiex_private *priv,
rx_pkt_len = le16_to_cpu(local_rx_pd->rx_pkt_length);
rx_pkt_hdr = (void *)local_rx_pd + rx_pkt_off;
+ if (sizeof(*rx_pkt_hdr) + rx_pkt_off > skb->len) {
+ mwifiex_dbg(priv->adapter, ERROR,
+ "wrong rx packet offset: len=%d, rx_pkt_off=%d\n",
+ skb->len, rx_pkt_off);
+ priv->stats.rx_dropped++;
+ dev_kfree_skb_any(skb);
+ }
+
if ((!memcmp(&rx_pkt_hdr->rfc1042_hdr, bridge_tunnel_header,
sizeof(bridge_tunnel_header))) ||
(!memcmp(&rx_pkt_hdr->rfc1042_hdr, rfc1042_header,
@@ -194,7 +202,8 @@ int mwifiex_process_sta_rx_packet(struct mwifiex_private *priv,
rx_pkt_hdr = (void *)local_rx_pd + rx_pkt_offset;
- if ((rx_pkt_offset + rx_pkt_length) > (u16) skb->len) {
+ if ((rx_pkt_offset + rx_pkt_length) > skb->len ||
+ sizeof(rx_pkt_hdr->eth803_hdr) + rx_pkt_offset > skb->len) {
mwifiex_dbg(adapter, ERROR,
"wrong rx packet: len=%d, rx_pkt_offset=%d, rx_pkt_length=%d\n",
skb->len, rx_pkt_offset, rx_pkt_length);
diff --git a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
index e495f7eaea033..04ff051f5d186 100644
--- a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
+++ b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
@@ -103,6 +103,15 @@ static void mwifiex_uap_queue_bridged_pkt(struct mwifiex_private *priv,
return;
}
+ if (sizeof(*rx_pkt_hdr) +
+ le16_to_cpu(uap_rx_pd->rx_pkt_offset) > skb->len) {
+ mwifiex_dbg(adapter, ERROR,
+ "wrong rx packet offset: len=%d,rx_pkt_offset=%d\n",
+ skb->len, le16_to_cpu(uap_rx_pd->rx_pkt_offset));
+ priv->stats.rx_dropped++;
+ dev_kfree_skb_any(skb);
+ }
+
if ((!memcmp(&rx_pkt_hdr->rfc1042_hdr, bridge_tunnel_header,
sizeof(bridge_tunnel_header))) ||
(!memcmp(&rx_pkt_hdr->rfc1042_hdr, rfc1042_header,
@@ -367,6 +376,16 @@ int mwifiex_process_uap_rx_packet(struct mwifiex_private *priv,
rx_pkt_type = le16_to_cpu(uap_rx_pd->rx_pkt_type);
rx_pkt_hdr = (void *)uap_rx_pd + le16_to_cpu(uap_rx_pd->rx_pkt_offset);
+ if (le16_to_cpu(uap_rx_pd->rx_pkt_offset) +
+ sizeof(rx_pkt_hdr->eth803_hdr) > skb->len) {
+ mwifiex_dbg(adapter, ERROR,
+ "wrong rx packet for struct ethhdr: len=%d, offset=%d\n",
+ skb->len, le16_to_cpu(uap_rx_pd->rx_pkt_offset));
+ priv->stats.rx_dropped++;
+ dev_kfree_skb_any(skb);
+ return 0;
+ }
+
ether_addr_copy(ta, rx_pkt_hdr->eth803_hdr.h_source);
if ((le16_to_cpu(uap_rx_pd->rx_pkt_offset) +
diff --git a/drivers/net/wireless/marvell/mwifiex/util.c b/drivers/net/wireless/marvell/mwifiex/util.c
index 94c2d219835da..745b1d925b217 100644
--- a/drivers/net/wireless/marvell/mwifiex/util.c
+++ b/drivers/net/wireless/marvell/mwifiex/util.c
@@ -393,11 +393,15 @@ mwifiex_process_mgmt_packet(struct mwifiex_private *priv,
}
rx_pd = (struct rxpd *)skb->data;
+ pkt_len = le16_to_cpu(rx_pd->rx_pkt_length);
+ if (pkt_len < sizeof(struct ieee80211_hdr) + sizeof(pkt_len)) {
+ mwifiex_dbg(priv->adapter, ERROR, "invalid rx_pkt_length");
+ return -1;
+ }
skb_pull(skb, le16_to_cpu(rx_pd->rx_pkt_offset));
skb_pull(skb, sizeof(pkt_len));
-
- pkt_len = le16_to_cpu(rx_pd->rx_pkt_length);
+ pkt_len -= sizeof(pkt_len);
ieee_hdr = (void *)skb->data;
if (ieee80211_is_mgmt(ieee_hdr->frame_control)) {
@@ -410,7 +414,7 @@ mwifiex_process_mgmt_packet(struct mwifiex_private *priv,
skb->data + sizeof(struct ieee80211_hdr),
pkt_len - sizeof(struct ieee80211_hdr));
- pkt_len -= ETH_ALEN + sizeof(pkt_len);
+ pkt_len -= ETH_ALEN;
rx_pd->rx_pkt_length = cpu_to_le16(pkt_len);
cfg80211_rx_mgmt(&priv->wdev, priv->roc_cfg.chan.center_freq,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 161/600] wifi: mwifiex: fix error recovery in PCIE buffer descriptor management
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (159 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 160/600] wifi: mwifiex: Fix OOB and integer underflow when rx packets Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 162/600] selftests/bpf: fix static assert compilation issue for test_cls_*.c Greg Kroah-Hartman
` (449 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dmitry Antipov, Brian Norris,
Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Antipov <dmantipov@yandex.ru>
[ Upstream commit 288c63d5cb4667a51a04668b3e2bb0ea499bc5f4 ]
Add missing 'kfree_skb()' in 'mwifiex_init_rxq_ring()' and never do
'kfree(card->rxbd_ring_vbase)' because this area is DMAed and should
be released with 'dma_free_coherent()'. The latter is performed in
'mwifiex_pcie_delete_rxbd_ring()', which is now called to recover
from possible errors in 'mwifiex_pcie_create_rxbd_ring()'. Likewise
for 'mwifiex_pcie_init_evt_ring()', 'kfree(card->evtbd_ring_vbase)'
'mwifiex_pcie_delete_evtbd_ring()' and 'mwifiex_pcie_create_rxbd_ring()'.
Fixes: d930faee141b ("mwifiex: add support for Marvell pcie8766 chipset")
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Acked-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230731074334.56463-1-dmantipov@yandex.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/marvell/mwifiex/pcie.c | 25 ++++++++++++++-------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
index 9a698a16a8f38..6697132ecc977 100644
--- a/drivers/net/wireless/marvell/mwifiex/pcie.c
+++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
@@ -189,6 +189,8 @@ static int mwifiex_pcie_probe_of(struct device *dev)
}
static void mwifiex_pcie_work(struct work_struct *work);
+static int mwifiex_pcie_delete_rxbd_ring(struct mwifiex_adapter *adapter);
+static int mwifiex_pcie_delete_evtbd_ring(struct mwifiex_adapter *adapter);
static int
mwifiex_map_pci_memory(struct mwifiex_adapter *adapter, struct sk_buff *skb,
@@ -792,14 +794,15 @@ static int mwifiex_init_rxq_ring(struct mwifiex_adapter *adapter)
if (!skb) {
mwifiex_dbg(adapter, ERROR,
"Unable to allocate skb for RX ring.\n");
- kfree(card->rxbd_ring_vbase);
return -ENOMEM;
}
if (mwifiex_map_pci_memory(adapter, skb,
MWIFIEX_RX_DATA_BUF_SIZE,
- DMA_FROM_DEVICE))
- return -1;
+ DMA_FROM_DEVICE)) {
+ kfree_skb(skb);
+ return -ENOMEM;
+ }
buf_pa = MWIFIEX_SKB_DMA_ADDR(skb);
@@ -849,7 +852,6 @@ static int mwifiex_pcie_init_evt_ring(struct mwifiex_adapter *adapter)
if (!skb) {
mwifiex_dbg(adapter, ERROR,
"Unable to allocate skb for EVENT buf.\n");
- kfree(card->evtbd_ring_vbase);
return -ENOMEM;
}
skb_put(skb, MAX_EVENT_SIZE);
@@ -857,8 +859,7 @@ static int mwifiex_pcie_init_evt_ring(struct mwifiex_adapter *adapter)
if (mwifiex_map_pci_memory(adapter, skb, MAX_EVENT_SIZE,
DMA_FROM_DEVICE)) {
kfree_skb(skb);
- kfree(card->evtbd_ring_vbase);
- return -1;
+ return -ENOMEM;
}
buf_pa = MWIFIEX_SKB_DMA_ADDR(skb);
@@ -1058,6 +1059,7 @@ static int mwifiex_pcie_delete_txbd_ring(struct mwifiex_adapter *adapter)
*/
static int mwifiex_pcie_create_rxbd_ring(struct mwifiex_adapter *adapter)
{
+ int ret;
struct pcie_service_card *card = adapter->card;
const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
@@ -1096,7 +1098,10 @@ static int mwifiex_pcie_create_rxbd_ring(struct mwifiex_adapter *adapter)
(u32)((u64)card->rxbd_ring_pbase >> 32),
card->rxbd_ring_size);
- return mwifiex_init_rxq_ring(adapter);
+ ret = mwifiex_init_rxq_ring(adapter);
+ if (ret)
+ mwifiex_pcie_delete_rxbd_ring(adapter);
+ return ret;
}
/*
@@ -1127,6 +1132,7 @@ static int mwifiex_pcie_delete_rxbd_ring(struct mwifiex_adapter *adapter)
*/
static int mwifiex_pcie_create_evtbd_ring(struct mwifiex_adapter *adapter)
{
+ int ret;
struct pcie_service_card *card = adapter->card;
const struct mwifiex_pcie_card_reg *reg = card->pcie.reg;
@@ -1161,7 +1167,10 @@ static int mwifiex_pcie_create_evtbd_ring(struct mwifiex_adapter *adapter)
(u32)((u64)card->evtbd_ring_pbase >> 32),
card->evtbd_ring_size);
- return mwifiex_pcie_init_evt_ring(adapter);
+ ret = mwifiex_pcie_init_evt_ring(adapter);
+ if (ret)
+ mwifiex_pcie_delete_evtbd_ring(adapter);
+ return ret;
}
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 162/600] selftests/bpf: fix static assert compilation issue for test_cls_*.c
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (160 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 161/600] wifi: mwifiex: fix error recovery in PCIE buffer descriptor management Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 163/600] kbuild: rust_is_available: remove -v option Greg Kroah-Hartman
` (448 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Colm Harrington, Alan Maguire,
Yipeng Zou, Yonghong Song, Alexei Starovoitov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Maguire <alan.maguire@oracle.com>
[ Upstream commit 416c6d01244ecbf0abfdb898fd091b50ef951b48 ]
commit bdeeed3498c7 ("libbpf: fix offsetof() and container_of() to work with CO-RE")
...was backported to stable trees such as 5.15. The problem is that with older
LLVM/clang (14/15) - which is often used for older kernels - we see compilation
failures in BPF selftests now:
In file included from progs/test_cls_redirect_subprogs.c:2:
progs/test_cls_redirect.c:90:2: error: static assertion expression is not an integral constant expression
sizeof(flow_ports_t) !=
^~~~~~~~~~~~~~~~~~~~~~~
progs/test_cls_redirect.c:91:3: note: cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression
offsetofend(struct bpf_sock_tuple, ipv4.dport) -
^
progs/test_cls_redirect.c:32:3: note: expanded from macro 'offsetofend'
(offsetof(TYPE, MEMBER) + sizeof((((TYPE *)0)->MEMBER)))
^
tools/testing/selftests/bpf/tools/include/bpf/bpf_helpers.h:86:33: note: expanded from macro 'offsetof'
^
In file included from progs/test_cls_redirect_subprogs.c:2:
progs/test_cls_redirect.c:95:2: error: static assertion expression is not an integral constant expression
sizeof(flow_ports_t) !=
^~~~~~~~~~~~~~~~~~~~~~~
progs/test_cls_redirect.c:96:3: note: cast that performs the conversions of a reinterpret_cast is not allowed in a constant expression
offsetofend(struct bpf_sock_tuple, ipv6.dport) -
^
progs/test_cls_redirect.c:32:3: note: expanded from macro 'offsetofend'
(offsetof(TYPE, MEMBER) + sizeof((((TYPE *)0)->MEMBER)))
^
tools/testing/selftests/bpf/tools/include/bpf/bpf_helpers.h:86:33: note: expanded from macro 'offsetof'
^
2 errors generated.
make: *** [Makefile:594: tools/testing/selftests/bpf/test_cls_redirect_subprogs.bpf.o] Error 1
The problem is the new offsetof() does not play nice with static asserts.
Given that the context is a static assert (and CO-RE relocation is not
needed at compile time), offsetof() usage can be replaced by restoring
the original offsetof() definition as __builtin_offsetof().
Fixes: bdeeed3498c7 ("libbpf: fix offsetof() and container_of() to work with CO-RE")
Reported-by: Colm Harrington <colm.harrington@oracle.com>
Signed-off-by: Alan Maguire <alan.maguire@oracle.com>
Tested-by: Yipeng Zou <zouyipeng@huawei.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Link: https://lore.kernel.org/r/20230802073906.3197480-1-alan.maguire@oracle.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/bpf/progs/test_cls_redirect.h | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/tools/testing/selftests/bpf/progs/test_cls_redirect.h b/tools/testing/selftests/bpf/progs/test_cls_redirect.h
index 76eab0aacba0c..233b089d1fbac 100644
--- a/tools/testing/selftests/bpf/progs/test_cls_redirect.h
+++ b/tools/testing/selftests/bpf/progs/test_cls_redirect.h
@@ -12,6 +12,15 @@
#include <linux/ipv6.h>
#include <linux/udp.h>
+/* offsetof() is used in static asserts, and the libbpf-redefined CO-RE
+ * friendly version breaks compilation for older clang versions <= 15
+ * when invoked in a static assert. Restore original here.
+ */
+#ifdef offsetof
+#undef offsetof
+#define offsetof(type, member) __builtin_offsetof(type, member)
+#endif
+
struct gre_base_hdr {
uint16_t flags;
uint16_t protocol;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 163/600] kbuild: rust_is_available: remove -v option
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (161 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 162/600] selftests/bpf: fix static assert compilation issue for test_cls_*.c Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 164/600] kbuild: rust_is_available: fix version check when CC has multiple arguments Greg Kroah-Hartman
` (447 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Masahiro Yamada, Miguel Ojeda,
Nathan Chancellor, Martin Rodriguez Reboredo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Masahiro Yamada <masahiroy@kernel.org>
[ Upstream commit d824d2f98565e7c4cb1b862c230198fbe1a968be ]
The -v option is passed when this script is invoked from Makefile,
but not when invoked from Kconfig.
As you can see in scripts/Kconfig.include, the 'success' macro suppresses
stdout and stderr anyway, so this script does not need to be quiet.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Tested-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230109061436.3146442-1-masahiroy@kernel.org
[ Reworded prefix to match the others in the patch series. ]
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Link: https://lore.kernel.org/r/20230616001631.463536-2-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Stable-dep-of: dee3a6b819c9 ("kbuild: rust_is_available: fix version check when CC has multiple arguments")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
Makefile | 4 +-
scripts/rust_is_available.sh | 96 +++++++++++++++---------------------
2 files changed, 42 insertions(+), 58 deletions(-)
diff --git a/Makefile b/Makefile
index 82aaa3ae7395b..c627e0bdb19f9 100644
--- a/Makefile
+++ b/Makefile
@@ -1291,7 +1291,7 @@ prepare0: archprepare
# All the preparing..
prepare: prepare0
ifdef CONFIG_RUST
- $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh -v
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh
$(Q)$(MAKE) $(build)=rust
endif
@@ -1817,7 +1817,7 @@ $(DOC_TARGETS):
# "Is Rust available?" target
PHONY += rustavailable
rustavailable:
- $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh -v && echo "Rust is available!"
+ $(Q)$(CONFIG_SHELL) $(srctree)/scripts/rust_is_available.sh && echo "Rust is available!"
# Documentation target
#
diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
index aebbf19139709..f43a010eaf305 100755
--- a/scripts/rust_is_available.sh
+++ b/scripts/rust_is_available.sh
@@ -2,8 +2,6 @@
# SPDX-License-Identifier: GPL-2.0
#
# Tests whether a suitable Rust toolchain is available.
-#
-# Pass `-v` for human output and more checks (as warnings).
set -e
@@ -23,21 +21,17 @@ get_canonical_version()
# Check that the Rust compiler exists.
if ! command -v "$RUSTC" >/dev/null; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** Rust compiler '$RUSTC' could not be found."
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** Rust compiler '$RUSTC' could not be found."
+ echo >&2 "***"
exit 1
fi
# Check that the Rust bindings generator exists.
if ! command -v "$BINDGEN" >/dev/null; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** Rust bindings generator '$BINDGEN' could not be found."
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** Rust bindings generator '$BINDGEN' could not be found."
+ echo >&2 "***"
exit 1
fi
@@ -53,16 +47,14 @@ rust_compiler_min_version=$($min_tool_version rustc)
rust_compiler_cversion=$(get_canonical_version $rust_compiler_version)
rust_compiler_min_cversion=$(get_canonical_version $rust_compiler_min_version)
if [ "$rust_compiler_cversion" -lt "$rust_compiler_min_cversion" ]; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** Rust compiler '$RUSTC' is too old."
- echo >&2 "*** Your version: $rust_compiler_version"
- echo >&2 "*** Minimum version: $rust_compiler_min_version"
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** Rust compiler '$RUSTC' is too old."
+ echo >&2 "*** Your version: $rust_compiler_version"
+ echo >&2 "*** Minimum version: $rust_compiler_min_version"
+ echo >&2 "***"
exit 1
fi
-if [ "$1" = -v ] && [ "$rust_compiler_cversion" -gt "$rust_compiler_min_cversion" ]; then
+if [ "$rust_compiler_cversion" -gt "$rust_compiler_min_cversion" ]; then
echo >&2 "***"
echo >&2 "*** Rust compiler '$RUSTC' is too new. This may or may not work."
echo >&2 "*** Your version: $rust_compiler_version"
@@ -82,16 +74,14 @@ rust_bindings_generator_min_version=$($min_tool_version bindgen)
rust_bindings_generator_cversion=$(get_canonical_version $rust_bindings_generator_version)
rust_bindings_generator_min_cversion=$(get_canonical_version $rust_bindings_generator_min_version)
if [ "$rust_bindings_generator_cversion" -lt "$rust_bindings_generator_min_cversion" ]; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** Rust bindings generator '$BINDGEN' is too old."
- echo >&2 "*** Your version: $rust_bindings_generator_version"
- echo >&2 "*** Minimum version: $rust_bindings_generator_min_version"
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** Rust bindings generator '$BINDGEN' is too old."
+ echo >&2 "*** Your version: $rust_bindings_generator_version"
+ echo >&2 "*** Minimum version: $rust_bindings_generator_min_version"
+ echo >&2 "***"
exit 1
fi
-if [ "$1" = -v ] && [ "$rust_bindings_generator_cversion" -gt "$rust_bindings_generator_min_cversion" ]; then
+if [ "$rust_bindings_generator_cversion" -gt "$rust_bindings_generator_min_cversion" ]; then
echo >&2 "***"
echo >&2 "*** Rust bindings generator '$BINDGEN' is too new. This may or may not work."
echo >&2 "*** Your version: $rust_bindings_generator_version"
@@ -110,13 +100,11 @@ bindgen_libclang_min_version=$($min_tool_version llvm)
bindgen_libclang_cversion=$(get_canonical_version $bindgen_libclang_version)
bindgen_libclang_min_cversion=$(get_canonical_version $bindgen_libclang_min_version)
if [ "$bindgen_libclang_cversion" -lt "$bindgen_libclang_min_cversion" ]; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** libclang (used by the Rust bindings generator '$BINDGEN') is too old."
- echo >&2 "*** Your version: $bindgen_libclang_version"
- echo >&2 "*** Minimum version: $bindgen_libclang_min_version"
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** libclang (used by the Rust bindings generator '$BINDGEN') is too old."
+ echo >&2 "*** Your version: $bindgen_libclang_version"
+ echo >&2 "*** Minimum version: $bindgen_libclang_min_version"
+ echo >&2 "***"
exit 1
fi
@@ -125,21 +113,19 @@ fi
#
# In the future, we might be able to perform a full version check, see
# https://github.com/rust-lang/rust-bindgen/issues/2138.
-if [ "$1" = -v ]; then
- cc_name=$($(dirname $0)/cc-version.sh "$CC" | cut -f1 -d' ')
- if [ "$cc_name" = Clang ]; then
- clang_version=$( \
- LC_ALL=C "$CC" --version 2>/dev/null \
- | sed -nE '1s:.*version ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
- )
- if [ "$clang_version" != "$bindgen_libclang_version" ]; then
- echo >&2 "***"
- echo >&2 "*** libclang (used by the Rust bindings generator '$BINDGEN')"
- echo >&2 "*** version does not match Clang's. This may be a problem."
- echo >&2 "*** libclang version: $bindgen_libclang_version"
- echo >&2 "*** Clang version: $clang_version"
- echo >&2 "***"
- fi
+cc_name=$($(dirname $0)/cc-version.sh "$CC" | cut -f1 -d' ')
+if [ "$cc_name" = Clang ]; then
+ clang_version=$( \
+ LC_ALL=C "$CC" --version 2>/dev/null \
+ | sed -nE '1s:.*version ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
+ )
+ if [ "$clang_version" != "$bindgen_libclang_version" ]; then
+ echo >&2 "***"
+ echo >&2 "*** libclang (used by the Rust bindings generator '$BINDGEN')"
+ echo >&2 "*** version does not match Clang's. This may be a problem."
+ echo >&2 "*** libclang version: $bindgen_libclang_version"
+ echo >&2 "*** Clang version: $clang_version"
+ echo >&2 "***"
fi
fi
@@ -150,11 +136,9 @@ rustc_sysroot=$("$RUSTC" $KRUSTFLAGS --print sysroot)
rustc_src=${RUST_LIB_SRC:-"$rustc_sysroot/lib/rustlib/src/rust/library"}
rustc_src_core="$rustc_src/core/src/lib.rs"
if [ ! -e "$rustc_src_core" ]; then
- if [ "$1" = -v ]; then
- echo >&2 "***"
- echo >&2 "*** Source code for the 'core' standard library could not be found"
- echo >&2 "*** at '$rustc_src_core'."
- echo >&2 "***"
- fi
+ echo >&2 "***"
+ echo >&2 "*** Source code for the 'core' standard library could not be found"
+ echo >&2 "*** at '$rustc_src_core'."
+ echo >&2 "***"
exit 1
fi
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 164/600] kbuild: rust_is_available: fix version check when CC has multiple arguments
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (162 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 163/600] kbuild: rust_is_available: remove -v option Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 165/600] kbuild: rust_is_available: add check for `bindgen` invocation Greg Kroah-Hartman
` (446 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Russell Currey,
Martin Rodriguez Reboredo, Nathan Chancellor, Miguel Ojeda,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Russell Currey <ruscur@russell.cc>
[ Upstream commit dee3a6b819c96fc8b1907577f585fd66f5c0fefe ]
rust_is_available.sh uses cc-version.sh to identify which C compiler is
in use, as scripts/Kconfig.include does. cc-version.sh isn't designed to
be able to handle multiple arguments in one variable, i.e. "ccache clang".
Its invocation in rust_is_available.sh quotes "$CC", which makes
$1 == "ccache clang" instead of the intended $1 == ccache & $2 == clang.
cc-version.sh could also be changed to handle having "ccache clang" as one
argument, but it only has the one consumer upstream, making it simpler to
fix the caller here.
Signed-off-by: Russell Currey <ruscur@russell.cc>
Fixes: 78521f3399ab ("scripts: add `rust_is_available.sh`")
Link: https://github.com/Rust-for-Linux/linux/pull/873
[ Reworded title prefix and reflow line to 75 columns. ]
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230616001631.463536-3-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
scripts/rust_is_available.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
index f43a010eaf305..0c9be438e4cd3 100755
--- a/scripts/rust_is_available.sh
+++ b/scripts/rust_is_available.sh
@@ -113,10 +113,10 @@ fi
#
# In the future, we might be able to perform a full version check, see
# https://github.com/rust-lang/rust-bindgen/issues/2138.
-cc_name=$($(dirname $0)/cc-version.sh "$CC" | cut -f1 -d' ')
+cc_name=$($(dirname $0)/cc-version.sh $CC | cut -f1 -d' ')
if [ "$cc_name" = Clang ]; then
clang_version=$( \
- LC_ALL=C "$CC" --version 2>/dev/null \
+ LC_ALL=C $CC --version 2>/dev/null \
| sed -nE '1s:.*version ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
)
if [ "$clang_version" != "$bindgen_libclang_version" ]; then
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 165/600] kbuild: rust_is_available: add check for `bindgen` invocation
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (163 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 164/600] kbuild: rust_is_available: fix version check when CC has multiple arguments Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 166/600] kbuild: rust_is_available: fix confusion when a version appears in the path Greg Kroah-Hartman
` (445 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nick Desaulniers,
François Valenduc, Alexandru Radovici, Matthew Leach,
Martin Rodriguez Reboredo, Masahiro Yamada, Nathan Chancellor,
Miguel Ojeda, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miguel Ojeda <ojeda@kernel.org>
[ Upstream commit 52cae7f28ed6c3992489f16bb355f5b623f0912e ]
`scripts/rust_is_available.sh` calls `bindgen` with a special
header in order to check whether the `libclang` version in use
is suitable.
However, the invocation itself may fail if, for instance, `bindgen`
cannot locate `libclang`. This is fine for Kconfig (since the
script will still fail and therefore disable Rust as it should),
but it is pretty confusing for users of the `rustavailable` target
given the error will be unrelated:
./scripts/rust_is_available.sh: 21: arithmetic expression: expecting primary: "100000 * + 100 * + "
make: *** [Makefile:1816: rustavailable] Error 2
Instead, run the `bindgen` invocation independently in a previous
step, saving its output and return code. If it fails, then show
the user a proper error message. Otherwise, continue as usual
with the saved output.
Since the previous patch we show a reference to the docs, and
the docs now explain how `bindgen` looks for `libclang`,
thus the error message can leverage the documentation, avoiding
duplication here (and making users aware of the setup guide in
the documentation).
Reported-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/rust-for-linux/CAKwvOdm5JT4wbdQQYuW+RT07rCi6whGBM2iUAyg8A1CmLXG6Nw@mail.gmail.com/
Reported-by: François Valenduc <francoisvalenduc@gmail.com>
Closes: https://github.com/Rust-for-Linux/linux/issues/934
Reported-by: Alexandru Radovici <msg4alex@gmail.com>
Closes: https://github.com/Rust-for-Linux/linux/pull/921
Reported-by: Matthew Leach <dev@mattleach.net>
Closes: https://lore.kernel.org/rust-for-linux/20230507084116.1099067-1-dev@mattleach.net/
Fixes: 78521f3399ab ("scripts: add `rust_is_available.sh`")
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Reviewed-by: Masahiro Yamada <masahiroy@kernel.org>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230616001631.463536-6-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
scripts/rust_is_available.sh | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
index 0c9be438e4cd3..c965895d80b97 100755
--- a/scripts/rust_is_available.sh
+++ b/scripts/rust_is_available.sh
@@ -90,8 +90,28 @@ if [ "$rust_bindings_generator_cversion" -gt "$rust_bindings_generator_min_cvers
fi
# Check that the `libclang` used by the Rust bindings generator is suitable.
+#
+# In order to do that, first invoke `bindgen` to get the `libclang` version
+# found by `bindgen`. This step may already fail if, for instance, `libclang`
+# is not found, thus inform the user in such a case.
+bindgen_libclang_output=$( \
+ LC_ALL=C "$BINDGEN" $(dirname $0)/rust_is_available_bindgen_libclang.h 2>&1 >/dev/null
+) || bindgen_libclang_code=$?
+if [ -n "$bindgen_libclang_code" ]; then
+ echo >&2 "***"
+ echo >&2 "*** Running '$BINDGEN' to check the libclang version (used by the Rust"
+ echo >&2 "*** bindings generator) failed with code $bindgen_libclang_code. This may be caused by"
+ echo >&2 "*** a failure to locate libclang. See output and docs below for details:"
+ echo >&2 "***"
+ echo >&2 "$bindgen_libclang_output"
+ echo >&2 "***"
+ exit 1
+fi
+
+# `bindgen` returned successfully, thus use the output to check that the version
+# of the `libclang` found by the Rust bindings generator is suitable.
bindgen_libclang_version=$( \
- LC_ALL=C "$BINDGEN" $(dirname $0)/rust_is_available_bindgen_libclang.h 2>&1 >/dev/null \
+ echo "$bindgen_libclang_output" \
| grep -F 'clang version ' \
| grep -oE '[0-9]+\.[0-9]+\.[0-9]+' \
| head -n 1 \
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 166/600] kbuild: rust_is_available: fix confusion when a version appears in the path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (164 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 165/600] kbuild: rust_is_available: add check for `bindgen` invocation Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 167/600] crypto: stm32 - Properly handle pm_runtime_get failing Greg Kroah-Hartman
` (444 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jordan Isaacs, Ethan D. Twardy,
Tiago Lam, Martin Rodriguez Reboredo, Nathan Chancellor,
Miguel Ojeda, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Miguel Ojeda <ojeda@kernel.org>
[ Upstream commit 9eb7e20e0c5cd069457845f965b3e8a7d736ecb7 ]
`bindgen`'s output for `libclang`'s version check contains paths, which
in turn may contain strings that look like version numbers [1][2]:
.../6.1.0-dev/.../rust_is_available_bindgen_libclang.h:2:9: warning: clang version 11.1.0 [-W#pragma-messages], err: false
which the script will pick up as the version instead of the latter.
It is also the case that versions may appear after the actual version
(e.g. distribution's version text), which was the reason behind `head` [3]:
.../rust-is-available-bindgen-libclang.h:2:9: warning: clang version 13.0.0 (Fedora 13.0.0-3.fc35) [-W#pragma-messages], err: false
Thus instead ask for a match after the `clang version` string.
Reported-by: Jordan Isaacs <mail@jdisaacs.com>
Closes: https://github.com/Rust-for-Linux/linux/issues/942 [1]
Reported-by: "Ethan D. Twardy" <ethan.twardy@gmail.com>
Closes: https://lore.kernel.org/rust-for-linux/20230528131802.6390-2-ethan.twardy@gmail.com/ [2]
Reported-by: Tiago Lam <tiagolam@gmail.com>
Closes: https://github.com/Rust-for-Linux/linux/pull/789 [3]
Fixes: 78521f3399ab ("scripts: add `rust_is_available.sh`")
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Reviewed-by: Ethan Twardy <ethan.twardy@gmail.com>
Tested-by: Ethan Twardy <ethan.twardy@gmail.com>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230616001631.463536-8-ojeda@kernel.org
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
scripts/rust_is_available.sh | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/scripts/rust_is_available.sh b/scripts/rust_is_available.sh
index c965895d80b97..7a925d2b20fc7 100755
--- a/scripts/rust_is_available.sh
+++ b/scripts/rust_is_available.sh
@@ -112,9 +112,7 @@ fi
# of the `libclang` found by the Rust bindings generator is suitable.
bindgen_libclang_version=$( \
echo "$bindgen_libclang_output" \
- | grep -F 'clang version ' \
- | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' \
- | head -n 1 \
+ | sed -nE 's:.*clang version ([0-9]+\.[0-9]+\.[0-9]+).*:\1:p'
)
bindgen_libclang_min_version=$($min_tool_version llvm)
bindgen_libclang_cversion=$(get_canonical_version $bindgen_libclang_version)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 167/600] crypto: stm32 - Properly handle pm_runtime_get failing
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (165 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 166/600] kbuild: rust_is_available: fix confusion when a version appears in the path Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 168/600] crypto: api - Use work queue in crypto_destroy_instance Greg Kroah-Hartman
` (443 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Uwe Kleine-König, Herbert Xu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
[ Upstream commit aec48805163338f8413118796c1dd035661b9140 ]
If pm_runtime_get() (disguised as pm_runtime_resume_and_get()) fails, this
means the clk wasn't prepared and enabled. Returning early in this case
however is wrong as then the following resource frees are skipped and this
is never catched up. So do all the cleanups but clk_disable_unprepare().
Also don't emit a warning, as stm32_hash_runtime_resume() already emitted
one.
Note that the return value of stm32_hash_remove() is mostly ignored by
the device core. The only effect of returning zero instead of an error
value is to suppress another warning in platform_remove(). So return 0
even if pm_runtime_resume_and_get() failed.
Fixes: 8b4d566de6a5 ("crypto: stm32/hash - Add power management support")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/crypto/stm32/stm32-hash.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/crypto/stm32/stm32-hash.c b/drivers/crypto/stm32/stm32-hash.c
index d33006d43f761..e3f765434d64e 100644
--- a/drivers/crypto/stm32/stm32-hash.c
+++ b/drivers/crypto/stm32/stm32-hash.c
@@ -1566,9 +1566,7 @@ static int stm32_hash_remove(struct platform_device *pdev)
if (!hdev)
return -ENODEV;
- ret = pm_runtime_resume_and_get(hdev->dev);
- if (ret < 0)
- return ret;
+ ret = pm_runtime_get_sync(hdev->dev);
stm32_hash_unregister_algs(hdev);
@@ -1584,7 +1582,8 @@ static int stm32_hash_remove(struct platform_device *pdev)
pm_runtime_disable(hdev->dev);
pm_runtime_put_noidle(hdev->dev);
- clk_disable_unprepare(hdev->clk);
+ if (ret >= 0)
+ clk_disable_unprepare(hdev->clk);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 168/600] crypto: api - Use work queue in crypto_destroy_instance
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (166 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 167/600] crypto: stm32 - Properly handle pm_runtime_get failing Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 169/600] Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() Greg Kroah-Hartman
` (442 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Florent Revest,
syzbot+d769eed29cc42d75e2a3, syzbot+610ec0671f51e838436e,
Herbert Xu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Herbert Xu <herbert@gondor.apana.org.au>
[ Upstream commit 9ae4577bc077a7e32c3c7d442c95bc76865c0f17 ]
The function crypto_drop_spawn expects to be called in process
context. However, when an instance is unregistered while it still
has active users, the last user may cause the instance to be freed
in atomic context.
Fix this by delaying the freeing to a work queue.
Fixes: 6bfd48096ff8 ("[CRYPTO] api: Added spawns")
Reported-by: Florent Revest <revest@chromium.org>
Reported-by: syzbot+d769eed29cc42d75e2a3@syzkaller.appspotmail.com
Reported-by: syzbot+610ec0671f51e838436e@syzkaller.appspotmail.com
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Florent Revest <revest@chromium.org>
Acked-by: Florent Revest <revest@chromium.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
crypto/algapi.c | 16 ++++++++++++++--
include/crypto/algapi.h | 3 +++
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/crypto/algapi.c b/crypto/algapi.c
index 8c3a869cc43a9..5dc9ccdd5a510 100644
--- a/crypto/algapi.c
+++ b/crypto/algapi.c
@@ -17,6 +17,7 @@
#include <linux/rtnetlink.h>
#include <linux/slab.h>
#include <linux/string.h>
+#include <linux/workqueue.h>
#include "internal.h"
@@ -74,15 +75,26 @@ static void crypto_free_instance(struct crypto_instance *inst)
inst->alg.cra_type->free(inst);
}
-static void crypto_destroy_instance(struct crypto_alg *alg)
+static void crypto_destroy_instance_workfn(struct work_struct *w)
{
- struct crypto_instance *inst = (void *)alg;
+ struct crypto_instance *inst = container_of(w, struct crypto_instance,
+ free_work);
struct crypto_template *tmpl = inst->tmpl;
crypto_free_instance(inst);
crypto_tmpl_put(tmpl);
}
+static void crypto_destroy_instance(struct crypto_alg *alg)
+{
+ struct crypto_instance *inst = container_of(alg,
+ struct crypto_instance,
+ alg);
+
+ INIT_WORK(&inst->free_work, crypto_destroy_instance_workfn);
+ schedule_work(&inst->free_work);
+}
+
/*
* This function adds a spawn to the list secondary_spawns which
* will be used at the end of crypto_remove_spawns to unregister
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
index 224b860647083..939a3196bf002 100644
--- a/include/crypto/algapi.h
+++ b/include/crypto/algapi.h
@@ -12,6 +12,7 @@
#include <linux/kconfig.h>
#include <linux/list.h>
#include <linux/types.h>
+#include <linux/workqueue.h>
#include <asm/unaligned.h>
@@ -60,6 +61,8 @@ struct crypto_instance {
struct crypto_spawn *spawns;
};
+ struct work_struct free_work;
+
void *__ctx[] CRYPTO_MINALIGN_ATTR;
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 169/600] Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (167 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 168/600] crypto: api - Use work queue in crypto_destroy_instance Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 170/600] Bluetooth: Fix potential use-after-free when clear keys Greg Kroah-Hartman
` (441 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yuanjun Gong, Luiz Augusto von Dentz,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuanjun Gong <ruc_gongyuanjun@163.com>
[ Upstream commit e8b5aed31355072faac8092ead4938ddec3111fd ]
in nokia_bluetooth_serdev_probe(), check the return value of
clk_prepare_enable() and return the error code if
clk_prepare_enable() returns an unexpected value.
Fixes: 7bb318680e86 ("Bluetooth: add nokia driver")
Signed-off-by: Yuanjun Gong <ruc_gongyuanjun@163.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/bluetooth/hci_nokia.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/hci_nokia.c b/drivers/bluetooth/hci_nokia.c
index 05f7f6de6863d..97da0b2bfd17e 100644
--- a/drivers/bluetooth/hci_nokia.c
+++ b/drivers/bluetooth/hci_nokia.c
@@ -734,7 +734,11 @@ static int nokia_bluetooth_serdev_probe(struct serdev_device *serdev)
return err;
}
- clk_prepare_enable(sysclk);
+ err = clk_prepare_enable(sysclk);
+ if (err) {
+ dev_err(dev, "could not enable sysclk: %d", err);
+ return err;
+ }
btdev->sysclk_speed = clk_get_rate(sysclk);
clk_disable_unprepare(sysclk);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 170/600] Bluetooth: Fix potential use-after-free when clear keys
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (168 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 169/600] Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 171/600] Bluetooth: hci_sync: Dont double print name in add/remove adv_monitor Greg Kroah-Hartman
` (440 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Min Li, Luiz Augusto von Dentz,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Min Li <lm0963hack@gmail.com>
[ Upstream commit 3673952cf0c6cf81b06c66a0b788abeeb02ff3ae ]
Similar to commit c5d2b6fa26b5 ("Bluetooth: Fix use-after-free in
hci_remove_ltk/hci_remove_irk"). We can not access k after kfree_rcu()
call.
Fixes: d7d41682efc2 ("Bluetooth: Fix Suspicious RCU usage warnings")
Signed-off-by: Min Li <lm0963hack@gmail.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bluetooth/hci_core.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index d034bf2a999e1..26884447d72be 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1074,9 +1074,9 @@ void hci_uuids_clear(struct hci_dev *hdev)
void hci_link_keys_clear(struct hci_dev *hdev)
{
- struct link_key *key;
+ struct link_key *key, *tmp;
- list_for_each_entry(key, &hdev->link_keys, list) {
+ list_for_each_entry_safe(key, tmp, &hdev->link_keys, list) {
list_del_rcu(&key->list);
kfree_rcu(key, rcu);
}
@@ -1084,9 +1084,9 @@ void hci_link_keys_clear(struct hci_dev *hdev)
void hci_smp_ltks_clear(struct hci_dev *hdev)
{
- struct smp_ltk *k;
+ struct smp_ltk *k, *tmp;
- list_for_each_entry(k, &hdev->long_term_keys, list) {
+ list_for_each_entry_safe(k, tmp, &hdev->long_term_keys, list) {
list_del_rcu(&k->list);
kfree_rcu(k, rcu);
}
@@ -1094,9 +1094,9 @@ void hci_smp_ltks_clear(struct hci_dev *hdev)
void hci_smp_irks_clear(struct hci_dev *hdev)
{
- struct smp_irk *k;
+ struct smp_irk *k, *tmp;
- list_for_each_entry(k, &hdev->identity_resolving_keys, list) {
+ list_for_each_entry_safe(k, tmp, &hdev->identity_resolving_keys, list) {
list_del_rcu(&k->list);
kfree_rcu(k, rcu);
}
@@ -1104,9 +1104,9 @@ void hci_smp_irks_clear(struct hci_dev *hdev)
void hci_blocked_keys_clear(struct hci_dev *hdev)
{
- struct blocked_key *b;
+ struct blocked_key *b, *tmp;
- list_for_each_entry(b, &hdev->blocked_keys, list) {
+ list_for_each_entry_safe(b, tmp, &hdev->blocked_keys, list) {
list_del_rcu(&b->list);
kfree_rcu(b, rcu);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 171/600] Bluetooth: hci_sync: Dont double print name in add/remove adv_monitor
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (169 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 170/600] Bluetooth: Fix potential use-after-free when clear keys Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 172/600] Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor() Greg Kroah-Hartman
` (439 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Luiz Augusto von Dentz,
Douglas Anderson, Luiz Augusto von Dentz, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Douglas Anderson <dianders@chromium.org>
[ Upstream commit 6f55eea116ba3646fb5fbb31de703f8cf79d8214 ]
The hci_add_adv_monitor() hci_remove_adv_monitor() functions call
bt_dev_dbg() to print some debug statements. The bt_dev_dbg() macro
automatically adds in the device's name. That means that we shouldn't
include the name in the bt_dev_dbg() calls.
Suggested-by: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Stable-dep-of: a2bcd2b63271 ("Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bluetooth/hci_core.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 26884447d72be..561e8a77f64cd 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1949,14 +1949,14 @@ int hci_add_adv_monitor(struct hci_dev *hdev, struct adv_monitor *monitor)
switch (hci_get_adv_monitor_offload_ext(hdev)) {
case HCI_ADV_MONITOR_EXT_NONE:
- bt_dev_dbg(hdev, "%s add monitor %d status %d", hdev->name,
+ bt_dev_dbg(hdev, "add monitor %d status %d",
monitor->handle, status);
/* Message was not forwarded to controller - not an error */
break;
case HCI_ADV_MONITOR_EXT_MSFT:
status = msft_add_monitor_pattern(hdev, monitor);
- bt_dev_dbg(hdev, "%s add monitor %d msft status %d", hdev->name,
+ bt_dev_dbg(hdev, "add monitor %d msft status %d",
monitor->handle, status);
break;
}
@@ -1976,15 +1976,15 @@ static int hci_remove_adv_monitor(struct hci_dev *hdev,
switch (hci_get_adv_monitor_offload_ext(hdev)) {
case HCI_ADV_MONITOR_EXT_NONE: /* also goes here when powered off */
- bt_dev_dbg(hdev, "%s remove monitor %d status %d", hdev->name,
+ bt_dev_dbg(hdev, "remove monitor %d status %d",
monitor->handle, status);
goto free_monitor;
case HCI_ADV_MONITOR_EXT_MSFT:
handle = monitor->handle;
status = msft_remove_monitor(hdev, monitor);
- bt_dev_dbg(hdev, "%s remove monitor %d msft status %d",
- hdev->name, handle, status);
+ bt_dev_dbg(hdev, "remove monitor %d msft status %d",
+ handle, status);
break;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 172/600] Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (170 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 171/600] Bluetooth: hci_sync: Dont double print name in add/remove adv_monitor Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 173/600] net: tcp: fix unexcepted socket die when snd_wnd is 0 Greg Kroah-Hartman
` (438 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Manish Mandlik,
Luiz Augusto von Dentz, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manish Mandlik <mmandlik@google.com>
[ Upstream commit a2bcd2b63271a93a695fabbfbf459c603d956d48 ]
KSAN reports use-after-free in hci_add_adv_monitor().
While adding an adv monitor,
hci_add_adv_monitor() calls ->
msft_add_monitor_pattern() calls ->
msft_add_monitor_sync() calls ->
msft_le_monitor_advertisement_cb() calls in an error case ->
hci_free_adv_monitor() which frees the *moniter.
This is referenced by bt_dev_dbg() in hci_add_adv_monitor().
Fix the bt_dev_dbg() by using handle instead of monitor->handle.
Fixes: b747a83690c8 ("Bluetooth: hci_sync: Refactor add Adv Monitor")
Signed-off-by: Manish Mandlik <mmandlik@google.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bluetooth/hci_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 561e8a77f64cd..146553c0054f6 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -1957,7 +1957,7 @@ int hci_add_adv_monitor(struct hci_dev *hdev, struct adv_monitor *monitor)
case HCI_ADV_MONITOR_EXT_MSFT:
status = msft_add_monitor_pattern(hdev, monitor);
bt_dev_dbg(hdev, "add monitor %d msft status %d",
- monitor->handle, status);
+ handle, status);
break;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 173/600] net: tcp: fix unexcepted socket die when snd_wnd is 0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (171 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 172/600] Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 174/600] selftests/bpf: Fix repeat option when kfunc_call verification fails Greg Kroah-Hartman
` (437 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Menglong Dong, Eric Dumazet,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Menglong Dong <imagedong@tencent.com>
[ Upstream commit e89688e3e97868451a5d05b38a9d2633d6785cd4 ]
In tcp_retransmit_timer(), a window shrunk connection will be regarded
as timeout if 'tcp_jiffies32 - tp->rcv_tstamp > TCP_RTO_MAX'. This is not
right all the time.
The retransmits will become zero-window probes in tcp_retransmit_timer()
if the 'snd_wnd==0'. Therefore, the icsk->icsk_rto will come up to
TCP_RTO_MAX sooner or later.
However, the timer can be delayed and be triggered after 122877ms, not
TCP_RTO_MAX, as I tested.
Therefore, 'tcp_jiffies32 - tp->rcv_tstamp > TCP_RTO_MAX' is always true
once the RTO come up to TCP_RTO_MAX, and the socket will die.
Fix this by replacing the 'tcp_jiffies32' with '(u32)icsk->icsk_timeout',
which is exact the timestamp of the timeout.
However, "tp->rcv_tstamp" can restart from idle, then tp->rcv_tstamp
could already be a long time (minutes or hours) in the past even on the
first RTO. So we double check the timeout with the duration of the
retransmission.
Meanwhile, making "2 * TCP_RTO_MAX" as the timeout to avoid the socket
dying too soon.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Link: https://lore.kernel.org/netdev/CADxym3YyMiO+zMD4zj03YPM3FBi-1LHi6gSD2XT8pyAMM096pg@mail.gmail.com/
Signed-off-by: Menglong Dong <imagedong@tencent.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/ipv4/tcp_timer.c | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index cf354c29ec123..44b49f7d1a9e6 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -441,6 +441,22 @@ static void tcp_fastopen_synack_timer(struct sock *sk, struct request_sock *req)
req->timeout << req->num_timeout, TCP_RTO_MAX);
}
+static bool tcp_rtx_probe0_timed_out(const struct sock *sk,
+ const struct sk_buff *skb)
+{
+ const struct tcp_sock *tp = tcp_sk(sk);
+ const int timeout = TCP_RTO_MAX * 2;
+ u32 rcv_delta, rtx_delta;
+
+ rcv_delta = inet_csk(sk)->icsk_timeout - tp->rcv_tstamp;
+ if (rcv_delta <= timeout)
+ return false;
+
+ rtx_delta = (u32)msecs_to_jiffies(tcp_time_stamp(tp) -
+ (tp->retrans_stamp ?: tcp_skb_timestamp(skb)));
+
+ return rtx_delta > timeout;
+}
/**
* tcp_retransmit_timer() - The TCP retransmit timeout handler
@@ -506,7 +522,7 @@ void tcp_retransmit_timer(struct sock *sk)
tp->snd_una, tp->snd_nxt);
}
#endif
- if (tcp_jiffies32 - tp->rcv_tstamp > TCP_RTO_MAX) {
+ if (tcp_rtx_probe0_timed_out(sk, skb)) {
tcp_write_err(sk);
goto out;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 174/600] selftests/bpf: Fix repeat option when kfunc_call verification fails
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (172 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 173/600] net: tcp: fix unexcepted socket die when snd_wnd is 0 Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 175/600] selftests/bpf: Clean up fmod_ret in bench_rename test script Greg Kroah-Hartman
` (436 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yipeng Zou, Daniel Borkmann,
Li Zetao, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yipeng Zou <zouyipeng@huawei.com>
[ Upstream commit 811915db674f8daf19bb4fcb67da9017235ce26d ]
There is no way where topts.repeat can be set to 1 when tc_test fails.
Fix the typo where the break statement slipped by one line.
Fixes: fb66223a244f ("selftests/bpf: add test for accessing ctx from syscall program type")
Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Li Zetao <lizetao1@huawei.com>
Link: https://lore.kernel.org/bpf/20230814031434.3077944-1-zouyipeng@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/bpf/prog_tests/kfunc_call.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/kfunc_call.c b/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
index 5af1ee8f0e6ee..36071f3f15ba1 100644
--- a/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
+++ b/tools/testing/selftests/bpf/prog_tests/kfunc_call.c
@@ -171,8 +171,8 @@ static void verify_fail(struct kfunc_test_params *param)
case tc_test:
topts.data_in = &pkt_v4;
topts.data_size_in = sizeof(pkt_v4);
- break;
topts.repeat = 1;
+ break;
}
skel = kfunc_call_fail__open_opts(&opts);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 175/600] selftests/bpf: Clean up fmod_ret in bench_rename test script
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (173 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 174/600] selftests/bpf: Fix repeat option when kfunc_call verification fails Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 176/600] spi: tegra114: Remove unnecessary NULL-pointer checks Greg Kroah-Hartman
` (435 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yipeng Zou, Daniel Borkmann,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yipeng Zou <zouyipeng@huawei.com>
[ Upstream commit 83a89c4b6ae93481d3f618aba6a29d89208d26ed ]
Running the bench_rename test script, the following error occurs:
# ./benchs/run_bench_rename.sh
base : 0.819 ± 0.012M/s
kprobe : 0.538 ± 0.009M/s
kretprobe : 0.503 ± 0.004M/s
rawtp : 0.779 ± 0.020M/s
fentry : 0.726 ± 0.007M/s
fexit : 0.691 ± 0.007M/s
benchmark 'rename-fmodret' not found
The bench_rename_fmodret has been removed in commit b000def2e052
("selftests: Remove fmod_ret from test_overhead"), thus remove it
from the runners in the test script.
Fixes: b000def2e052 ("selftests: Remove fmod_ret from test_overhead")
Signed-off-by: Yipeng Zou <zouyipeng@huawei.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/20230814030727.3010390-1-zouyipeng@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
tools/testing/selftests/bpf/benchs/run_bench_rename.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/bpf/benchs/run_bench_rename.sh b/tools/testing/selftests/bpf/benchs/run_bench_rename.sh
index 16f774b1cdbed..7b281dbe41656 100755
--- a/tools/testing/selftests/bpf/benchs/run_bench_rename.sh
+++ b/tools/testing/selftests/bpf/benchs/run_bench_rename.sh
@@ -2,7 +2,7 @@
set -eufo pipefail
-for i in base kprobe kretprobe rawtp fentry fexit fmodret
+for i in base kprobe kretprobe rawtp fentry fexit
do
summary=$(sudo ./bench -w2 -d5 -a rename-$i | tail -n1 | cut -d'(' -f1 | cut -d' ' -f3-)
printf "%-10s: %s\n" $i "$summary"
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 176/600] spi: tegra114: Remove unnecessary NULL-pointer checks
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (174 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 175/600] selftests/bpf: Clean up fmod_ret in bench_rename test script Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 177/600] net: Fix slab-out-of-bounds in inet[6]_steal_sock Greg Kroah-Hartman
` (434 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alexander Danilenko, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Danilenko <al.b.danilenko@gmail.com>
[ Upstream commit 373c36bf7914e3198ac2654dede499f340c52950 ]
cs_setup, cs_hold and cs_inactive points to fields of spi_device struct,
so there is no sense in checking them for NULL.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: 04e6bb0d6bb1 ("spi: modify set_cs_timing parameter")
Signed-off-by: Alexander Danilenko <al.b.danilenko@gmail.com>
Link: https://lore.kernel.org/r/20230815092058.4083-1-al.b.danilenko@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/spi/spi-tegra114.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
index d9be80e3e1bcb..6b56108308fc5 100644
--- a/drivers/spi/spi-tegra114.c
+++ b/drivers/spi/spi-tegra114.c
@@ -723,27 +723,23 @@ static int tegra_spi_set_hw_cs_timing(struct spi_device *spi)
struct spi_delay *setup = &spi->cs_setup;
struct spi_delay *hold = &spi->cs_hold;
struct spi_delay *inactive = &spi->cs_inactive;
- u8 setup_dly, hold_dly, inactive_dly;
+ u8 setup_dly, hold_dly;
u32 setup_hold;
u32 spi_cs_timing;
u32 inactive_cycles;
u8 cs_state;
- if ((setup && setup->unit != SPI_DELAY_UNIT_SCK) ||
- (hold && hold->unit != SPI_DELAY_UNIT_SCK) ||
- (inactive && inactive->unit != SPI_DELAY_UNIT_SCK)) {
+ if (setup->unit != SPI_DELAY_UNIT_SCK ||
+ hold->unit != SPI_DELAY_UNIT_SCK ||
+ inactive->unit != SPI_DELAY_UNIT_SCK) {
dev_err(&spi->dev,
"Invalid delay unit %d, should be SPI_DELAY_UNIT_SCK\n",
SPI_DELAY_UNIT_SCK);
return -EINVAL;
}
- setup_dly = setup ? setup->value : 0;
- hold_dly = hold ? hold->value : 0;
- inactive_dly = inactive ? inactive->value : 0;
-
- setup_dly = min_t(u8, setup_dly, MAX_SETUP_HOLD_CYCLES);
- hold_dly = min_t(u8, hold_dly, MAX_SETUP_HOLD_CYCLES);
+ setup_dly = min_t(u8, setup->value, MAX_SETUP_HOLD_CYCLES);
+ hold_dly = min_t(u8, hold->value, MAX_SETUP_HOLD_CYCLES);
if (setup_dly && hold_dly) {
setup_hold = SPI_SETUP_HOLD(setup_dly - 1, hold_dly - 1);
spi_cs_timing = SPI_CS_SETUP_HOLD(tspi->spi_cs_timing1,
@@ -755,7 +751,7 @@ static int tegra_spi_set_hw_cs_timing(struct spi_device *spi)
}
}
- inactive_cycles = min_t(u8, inactive_dly, MAX_INACTIVE_CYCLES);
+ inactive_cycles = min_t(u8, inactive->value, MAX_INACTIVE_CYCLES);
if (inactive_cycles)
inactive_cycles--;
cs_state = inactive_cycles ? 0 : 1;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 177/600] net: Fix slab-out-of-bounds in inet[6]_steal_sock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (175 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 176/600] spi: tegra114: Remove unnecessary NULL-pointer checks Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 178/600] net-memcg: Fix scope of sockmem pressure indicators Greg Kroah-Hartman
` (433 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kumar Kartikeya Dwivedi,
Lorenz Bauer, Martin KaFai Lau, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
[ Upstream commit 8897562f67b3e61ad736cd5c9f307447d33280e4 ]
Kumar reported a KASAN splat in tcp_v6_rcv:
bash-5.2# ./test_progs -t btf_skc_cls_ingress
...
[ 51.810085] BUG: KASAN: slab-out-of-bounds in tcp_v6_rcv+0x2d7d/0x3440
[ 51.810458] Read of size 2 at addr ffff8881053f038c by task test_progs/226
The problem is that inet[6]_steal_sock accesses sk->sk_protocol without
accounting for request or timewait sockets. To fix this we can't just
check sock_common->skc_reuseport since that flag is present on timewait
sockets.
Instead, add a fullsock check to avoid the out of bands access of sk_protocol.
Fixes: 9c02bec95954 ("bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign")
Reported-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Link: https://lore.kernel.org/r/20230815-bpf-next-v2-1-95126eaa4c1b@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/inet6_hashtables.h | 2 +-
include/net/inet_hashtables.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index 475e672b4facc..12780b8fb5630 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -107,7 +107,7 @@ struct sock *inet6_steal_sock(struct net *net, struct sk_buff *skb, int doff,
if (!sk)
return NULL;
- if (!prefetched)
+ if (!prefetched || !sk_fullsock(sk))
return sk;
if (sk->sk_protocol == IPPROTO_TCP) {
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index a1b8eb147ce73..9414cb4e6e624 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -455,7 +455,7 @@ struct sock *inet_steal_sock(struct net *net, struct sk_buff *skb, int doff,
if (!sk)
return NULL;
- if (!prefetched)
+ if (!prefetched || !sk_fullsock(sk))
return sk;
if (sk->sk_protocol == IPPROTO_TCP) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 178/600] net-memcg: Fix scope of sockmem pressure indicators
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (176 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 177/600] net: Fix slab-out-of-bounds in inet[6]_steal_sock Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 179/600] ice: ice_aq_check_events: fix off-by-one check when filling buffer Greg Kroah-Hartman
` (432 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Abel Wu, Shakeel Butt,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Abel Wu <wuyun.abel@bytedance.com>
[ Upstream commit ac8a52962164a50e693fa021d3564d7745b83a7f ]
Now there are two indicators of socket memory pressure sit inside
struct mem_cgroup, socket_pressure and tcpmem_pressure, indicating
memory reclaim pressure in memcg->memory and ->tcpmem respectively.
When in legacy mode (cgroupv1), the socket memory is charged into
->tcpmem which is independent of ->memory, so socket_pressure has
nothing to do with socket's pressure at all. Things could be worse
by taking socket_pressure into consideration in legacy mode, as a
pressure in ->memory can lead to premature reclamation/throttling
in socket.
While for the default mode (cgroupv2), the socket memory is charged
into ->memory, and ->tcpmem/->tcpmem_pressure are simply not used.
So {socket,tcpmem}_pressure are only used in default/legacy mode
respectively for indicating socket memory pressure. This patch fixes
the pieces of code that make mixed use of both.
Fixes: 8e8ae645249b ("mm: memcontrol: hook up vmpressure to socket pressure")
Signed-off-by: Abel Wu <wuyun.abel@bytedance.com>
Acked-by: Shakeel Butt <shakeelb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/linux/memcontrol.h | 9 +++++++--
mm/vmpressure.c | 8 ++++++++
2 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index e039763029563..099521835cd14 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -283,6 +283,11 @@ struct mem_cgroup {
atomic_long_t memory_events[MEMCG_NR_MEMORY_EVENTS];
atomic_long_t memory_events_local[MEMCG_NR_MEMORY_EVENTS];
+ /*
+ * Hint of reclaim pressure for socket memroy management. Note
+ * that this indicator should NOT be used in legacy cgroup mode
+ * where socket memory is accounted/charged separately.
+ */
unsigned long socket_pressure;
/* Legacy tcp memory accounting */
@@ -1704,8 +1709,8 @@ void mem_cgroup_sk_alloc(struct sock *sk);
void mem_cgroup_sk_free(struct sock *sk);
static inline bool mem_cgroup_under_socket_pressure(struct mem_cgroup *memcg)
{
- if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && memcg->tcpmem_pressure)
- return true;
+ if (!cgroup_subsys_on_dfl(memory_cgrp_subsys))
+ return !!memcg->tcpmem_pressure;
do {
if (time_before(jiffies, READ_ONCE(memcg->socket_pressure)))
return true;
diff --git a/mm/vmpressure.c b/mm/vmpressure.c
index b52644771cc43..22c6689d93027 100644
--- a/mm/vmpressure.c
+++ b/mm/vmpressure.c
@@ -244,6 +244,14 @@ void vmpressure(gfp_t gfp, struct mem_cgroup *memcg, bool tree,
if (mem_cgroup_disabled())
return;
+ /*
+ * The in-kernel users only care about the reclaim efficiency
+ * for this @memcg rather than the whole subtree, and there
+ * isn't and won't be any in-kernel user in a legacy cgroup.
+ */
+ if (!cgroup_subsys_on_dfl(memory_cgrp_subsys) && !tree)
+ return;
+
vmpr = memcg_to_vmpressure(memcg);
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 179/600] ice: ice_aq_check_events: fix off-by-one check when filling buffer
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (177 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 178/600] net-memcg: Fix scope of sockmem pressure indicators Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 180/600] crypto: caam - fix unchecked return value error Greg Kroah-Hartman
` (431 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jacob Keller, Przemek Kitszel,
Simon Horman, Tony Nguyen, Sasha Levin, Pucha Himasekhar Reddy
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Przemek Kitszel <przemyslaw.kitszel@intel.com>
[ Upstream commit e1e8a142c43336e3d25bfa1cb3a4ae7d00875c48 ]
Allow task's event buffer to be filled also in the case that it's size
is exactly the size of the message.
Fixes: d69ea414c9b4 ("ice: implement device flash update via devlink")
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/intel/ice/ice_main.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 7a00d297be3a9..3f98781e74b28 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1356,6 +1356,7 @@ int ice_aq_wait_for_event(struct ice_pf *pf, u16 opcode, unsigned long timeout,
static void ice_aq_check_events(struct ice_pf *pf, u16 opcode,
struct ice_rq_event_info *event)
{
+ struct ice_rq_event_info *task_ev;
struct ice_aq_task *task;
bool found = false;
@@ -1364,15 +1365,15 @@ static void ice_aq_check_events(struct ice_pf *pf, u16 opcode,
if (task->state || task->opcode != opcode)
continue;
- memcpy(&task->event->desc, &event->desc, sizeof(event->desc));
- task->event->msg_len = event->msg_len;
+ task_ev = task->event;
+ memcpy(&task_ev->desc, &event->desc, sizeof(event->desc));
+ task_ev->msg_len = event->msg_len;
/* Only copy the data buffer if a destination was set */
- if (task->event->msg_buf &&
- task->event->buf_len > event->buf_len) {
- memcpy(task->event->msg_buf, event->msg_buf,
+ if (task_ev->msg_buf && task_ev->buf_len >= event->buf_len) {
+ memcpy(task_ev->msg_buf, event->msg_buf,
event->buf_len);
- task->event->buf_len = event->buf_len;
+ task_ev->buf_len = event->buf_len;
}
task->state = ICE_AQ_TASK_COMPLETE;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 180/600] crypto: caam - fix unchecked return value error
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (178 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 179/600] ice: ice_aq_check_events: fix off-by-one check when filling buffer Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 181/600] hwrng: iproc-rng200 - Implement suspend and resume calls Greg Kroah-Hartman
` (430 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gaurav Jain, Meenakshi Aggarwal,
Herbert Xu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gaurav Jain <gaurav.jain@nxp.com>
[ Upstream commit e30685204711a6be40dec2622606950ccd37dafe ]
error:
Unchecked return value (CHECKED_RETURN)
check_return: Calling sg_miter_next without checking return value
fix:
added check if(!sg_miter_next)
Fixes: 8a2a0dd35f2e ("crypto: caam - strip input zeros from RSA input buffer")
Signed-off-by: Gaurav Jain <gaurav.jain@nxp.com>
Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>
Reviewed-by: Gaurav Jain <gaurav.jain@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/crypto/caam/caampkc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/crypto/caam/caampkc.c b/drivers/crypto/caam/caampkc.c
index 8867275767101..51b48b57266a6 100644
--- a/drivers/crypto/caam/caampkc.c
+++ b/drivers/crypto/caam/caampkc.c
@@ -223,7 +223,9 @@ static int caam_rsa_count_leading_zeros(struct scatterlist *sgl,
if (len && *buff)
break;
- sg_miter_next(&miter);
+ if (!sg_miter_next(&miter))
+ break;
+
buff = miter.addr;
len = miter.length;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 181/600] hwrng: iproc-rng200 - Implement suspend and resume calls
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (179 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 180/600] crypto: caam - fix unchecked return value error Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 182/600] lwt: Fix return values of BPF xmit ops Greg Kroah-Hartman
` (429 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Florian Fainelli, Herbert Xu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Fainelli <florian.fainelli@broadcom.com>
[ Upstream commit 8e03dd62e5be811efbf0cbeba47e79e793519105 ]
Chips such as BCM7278 support system wide suspend/resume which will
cause the HWRNG block to lose its state and reset to its power on reset
register values. We need to cleanup and re-initialize the HWRNG for it
to be functional coming out of a system suspend cycle.
Fixes: c3577f6100ca ("hwrng: iproc-rng200 - Add support for BCM7278")
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/char/hw_random/iproc-rng200.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
index 06bc060534d81..c0df053cbe4b2 100644
--- a/drivers/char/hw_random/iproc-rng200.c
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -182,6 +182,8 @@ static int iproc_rng200_probe(struct platform_device *pdev)
return PTR_ERR(priv->base);
}
+ dev_set_drvdata(dev, priv);
+
priv->rng.name = "iproc-rng200";
priv->rng.read = iproc_rng200_read;
priv->rng.init = iproc_rng200_init;
@@ -199,6 +201,28 @@ static int iproc_rng200_probe(struct platform_device *pdev)
return 0;
}
+static int __maybe_unused iproc_rng200_suspend(struct device *dev)
+{
+ struct iproc_rng200_dev *priv = dev_get_drvdata(dev);
+
+ iproc_rng200_cleanup(&priv->rng);
+
+ return 0;
+}
+
+static int __maybe_unused iproc_rng200_resume(struct device *dev)
+{
+ struct iproc_rng200_dev *priv = dev_get_drvdata(dev);
+
+ iproc_rng200_init(&priv->rng);
+
+ return 0;
+}
+
+static const struct dev_pm_ops iproc_rng200_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(iproc_rng200_suspend, iproc_rng200_resume)
+};
+
static const struct of_device_id iproc_rng200_of_match[] = {
{ .compatible = "brcm,bcm2711-rng200", },
{ .compatible = "brcm,bcm7211-rng200", },
@@ -212,6 +236,7 @@ static struct platform_driver iproc_rng200_driver = {
.driver = {
.name = "iproc-rng200",
.of_match_table = iproc_rng200_of_match,
+ .pm = &iproc_rng200_pm_ops,
},
.probe = iproc_rng200_probe,
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 182/600] lwt: Fix return values of BPF xmit ops
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (180 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 181/600] hwrng: iproc-rng200 - Implement suspend and resume calls Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 183/600] lwt: Check LWTUNNEL_XMIT_CONTINUE strictly Greg Kroah-Hartman
` (428 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jordan Griege, Martin KaFai Lau,
Stanislav Fomichev, Yan Zhai, Daniel Borkmann, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yan Zhai <yan@cloudflare.com>
[ Upstream commit 29b22badb7a84b783e3a4fffca16f7768fb31205 ]
BPF encap ops can return different types of positive values, such like
NET_RX_DROP, NET_XMIT_CN, NETDEV_TX_BUSY, and so on, from function
skb_do_redirect and bpf_lwt_xmit_reroute. At the xmit hook, such return
values would be treated implicitly as LWTUNNEL_XMIT_CONTINUE in
ip(6)_finish_output2. When this happens, skbs that have been freed would
continue to the neighbor subsystem, causing use-after-free bug and
kernel crashes.
To fix the incorrect behavior, skb_do_redirect return values can be
simply discarded, the same as tc-egress behavior. On the other hand,
bpf_lwt_xmit_reroute returns useful errors to local senders, e.g. PMTU
information. Thus convert its return values to avoid the conflict with
LWTUNNEL_XMIT_CONTINUE.
Fixes: 3a0af8fd61f9 ("bpf: BPF for lightweight tunnel infrastructure")
Reported-by: Jordan Griege <jgriege@cloudflare.com>
Suggested-by: Martin KaFai Lau <martin.lau@linux.dev>
Suggested-by: Stanislav Fomichev <sdf@google.com>
Signed-off-by: Yan Zhai <yan@cloudflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/0d2b878186cfe215fec6b45769c1cd0591d3628d.1692326837.git.yan@cloudflare.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/core/lwt_bpf.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/net/core/lwt_bpf.c b/net/core/lwt_bpf.c
index 8b6b5e72b2179..4a0797f0a154b 100644
--- a/net/core/lwt_bpf.c
+++ b/net/core/lwt_bpf.c
@@ -60,9 +60,8 @@ static int run_lwt_bpf(struct sk_buff *skb, struct bpf_lwt_prog *lwt,
ret = BPF_OK;
} else {
skb_reset_mac_header(skb);
- ret = skb_do_redirect(skb);
- if (ret == 0)
- ret = BPF_REDIRECT;
+ skb_do_redirect(skb);
+ ret = BPF_REDIRECT;
}
break;
@@ -255,7 +254,7 @@ static int bpf_lwt_xmit_reroute(struct sk_buff *skb)
err = dst_output(dev_net(skb_dst(skb)->dev), skb->sk, skb);
if (unlikely(err))
- return err;
+ return net_xmit_errno(err);
/* ip[6]_finish_output2 understand LWTUNNEL_XMIT_DONE */
return LWTUNNEL_XMIT_DONE;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 183/600] lwt: Check LWTUNNEL_XMIT_CONTINUE strictly
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (181 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 182/600] lwt: Fix return values of BPF xmit ops Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 184/600] fs: ocfs2: namei: check return value of ocfs2_add_entry() Greg Kroah-Hartman
` (427 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Yan Zhai,
Daniel Borkmann, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yan Zhai <yan@cloudflare.com>
[ Upstream commit a171fbec88a2c730b108c7147ac5e7b2f5a02b47 ]
LWTUNNEL_XMIT_CONTINUE is implicitly assumed in ip(6)_finish_output2,
such that any positive return value from a xmit hook could cause
unexpected continue behavior, despite that related skb may have been
freed. This could be error-prone for future xmit hook ops. One of the
possible errors is to return statuses of dst_output directly.
To make the code safer, redefine LWTUNNEL_XMIT_CONTINUE value to
distinguish from dst_output statuses and check the continue
condition explicitly.
Fixes: 3a0af8fd61f9 ("bpf: BPF for lightweight tunnel infrastructure")
Suggested-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Yan Zhai <yan@cloudflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/bpf/96b939b85eda00e8df4f7c080f770970a4c5f698.1692326837.git.yan@cloudflare.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/lwtunnel.h | 5 ++++-
net/ipv4/ip_output.c | 2 +-
net/ipv6/ip6_output.c | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/net/lwtunnel.h b/include/net/lwtunnel.h
index 6f15e6fa154e6..53bd2d02a4f0d 100644
--- a/include/net/lwtunnel.h
+++ b/include/net/lwtunnel.h
@@ -16,9 +16,12 @@
#define LWTUNNEL_STATE_INPUT_REDIRECT BIT(1)
#define LWTUNNEL_STATE_XMIT_REDIRECT BIT(2)
+/* LWTUNNEL_XMIT_CONTINUE should be distinguishable from dst_output return
+ * values (NET_XMIT_xxx and NETDEV_TX_xxx in linux/netdevice.h) for safety.
+ */
enum {
LWTUNNEL_XMIT_DONE,
- LWTUNNEL_XMIT_CONTINUE,
+ LWTUNNEL_XMIT_CONTINUE = 0x100,
};
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index acfe58d2f1dd7..ebd2cea5b7d7a 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -214,7 +214,7 @@ static int ip_finish_output2(struct net *net, struct sock *sk, struct sk_buff *s
if (lwtunnel_xmit_redirect(dst->lwtstate)) {
int res = lwtunnel_xmit(skb);
- if (res < 0 || res == LWTUNNEL_XMIT_DONE)
+ if (res != LWTUNNEL_XMIT_CONTINUE)
return res;
}
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 95a55c6630add..34192f7a166fb 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -112,7 +112,7 @@ static int ip6_finish_output2(struct net *net, struct sock *sk, struct sk_buff *
if (lwtunnel_xmit_redirect(dst->lwtstate)) {
int res = lwtunnel_xmit(skb);
- if (res < 0 || res == LWTUNNEL_XMIT_DONE)
+ if (res != LWTUNNEL_XMIT_CONTINUE)
return res;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 184/600] fs: ocfs2: namei: check return value of ocfs2_add_entry()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (182 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 183/600] lwt: Check LWTUNNEL_XMIT_CONTINUE strictly Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 185/600] net: annotate data-races around sk->sk_lingertime Greg Kroah-Hartman
` (426 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Artem Chernyshev, Joseph Qi,
Joel Becker, Kurt Hackel, Mark Fasheh, Junxiao Bi, Changwei Ge,
Gang He, Jun Piao, Andrew Morton, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Artem Chernyshev <artem.chernyshev@red-soft.ru>
[ Upstream commit 6b72e5f9e79360fce4f2be7fe81159fbdf4256a5 ]
Process result of ocfs2_add_entry() in case we have an error
value.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Link: https://lkml.kernel.org/r/20230803145417.177649-1-artem.chernyshev@red-soft.ru
Fixes: ccd979bdbce9 ("[PATCH] OCFS2: The Second Oracle Cluster Filesystem")
Signed-off-by: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
Cc: Artem Chernyshev <artem.chernyshev@red-soft.ru>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Kurt Hackel <kurt.hackel@oracle.com>
Cc: Mark Fasheh <mark@fasheh.com>
Cc: Junxiao Bi <junxiao.bi@oracle.com>
Cc: Changwei Ge <gechangwei@live.cn>
Cc: Gang He <ghe@suse.com>
Cc: Jun Piao <piaojun@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ocfs2/namei.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/fs/ocfs2/namei.c b/fs/ocfs2/namei.c
index 1c7ac433667df..04a8505bd97af 100644
--- a/fs/ocfs2/namei.c
+++ b/fs/ocfs2/namei.c
@@ -1535,6 +1535,10 @@ static int ocfs2_rename(struct user_namespace *mnt_userns,
status = ocfs2_add_entry(handle, new_dentry, old_inode,
OCFS2_I(old_inode)->ip_blkno,
new_dir_bh, &target_insert);
+ if (status < 0) {
+ mlog_errno(status);
+ goto bail;
+ }
}
old_inode->i_ctime = current_time(old_inode);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 185/600] net: annotate data-races around sk->sk_lingertime
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (183 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 184/600] fs: ocfs2: namei: check return value of ocfs2_add_entry() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 186/600] wifi: mwifiex: fix memory leak in mwifiex_histogram_read() Greg Kroah-Hartman
` (425 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Eric Dumazet, David S. Miller,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <edumazet@google.com>
[ Upstream commit bc1fb82ae11753c5dec53c667a055dc37796dbd2 ]
sk_getsockopt() runs locklessly. This means sk->sk_lingertime
can be read while other threads are changing its value.
Other reads also happen without socket lock being held,
and must be annotated.
Remove preprocessor logic using BITS_PER_LONG, compilers
are smart enough to figure this by themselves.
v2: fixed a clang W=1 (-Wtautological-constant-out-of-range-compare) warning
(Jakub)
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/bluetooth/iso.c | 2 +-
net/bluetooth/sco.c | 2 +-
net/core/sock.c | 18 +++++++++---------
net/sched/em_meta.c | 2 +-
net/smc/af_smc.c | 2 +-
5 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/net/bluetooth/iso.c b/net/bluetooth/iso.c
index 699e4f400df29..5cd2e775915be 100644
--- a/net/bluetooth/iso.c
+++ b/net/bluetooth/iso.c
@@ -1394,7 +1394,7 @@ static int iso_sock_release(struct socket *sock)
iso_sock_close(sk);
- if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
+ if (sock_flag(sk, SOCK_LINGER) && READ_ONCE(sk->sk_lingertime) &&
!(current->flags & PF_EXITING)) {
lock_sock(sk);
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index 1755f91a66f6a..6d4168cfeb563 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -1255,7 +1255,7 @@ static int sco_sock_release(struct socket *sock)
sco_sock_close(sk);
- if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
+ if (sock_flag(sk, SOCK_LINGER) && READ_ONCE(sk->sk_lingertime) &&
!(current->flags & PF_EXITING)) {
lock_sock(sk);
err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
diff --git a/net/core/sock.c b/net/core/sock.c
index 8b91d9f911336..fc475845c94d5 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -793,7 +793,7 @@ EXPORT_SYMBOL(sock_set_reuseport);
void sock_no_linger(struct sock *sk)
{
lock_sock(sk);
- sk->sk_lingertime = 0;
+ WRITE_ONCE(sk->sk_lingertime, 0);
sock_set_flag(sk, SOCK_LINGER);
release_sock(sk);
}
@@ -1219,15 +1219,15 @@ int sk_setsockopt(struct sock *sk, int level, int optname,
ret = -EFAULT;
break;
}
- if (!ling.l_onoff)
+ if (!ling.l_onoff) {
sock_reset_flag(sk, SOCK_LINGER);
- else {
-#if (BITS_PER_LONG == 32)
- if ((unsigned int)ling.l_linger >= MAX_SCHEDULE_TIMEOUT/HZ)
- sk->sk_lingertime = MAX_SCHEDULE_TIMEOUT;
+ } else {
+ unsigned long t_sec = ling.l_linger;
+
+ if (t_sec >= MAX_SCHEDULE_TIMEOUT / HZ)
+ WRITE_ONCE(sk->sk_lingertime, MAX_SCHEDULE_TIMEOUT);
else
-#endif
- sk->sk_lingertime = (unsigned int)ling.l_linger * HZ;
+ WRITE_ONCE(sk->sk_lingertime, t_sec * HZ);
sock_set_flag(sk, SOCK_LINGER);
}
break;
@@ -1678,7 +1678,7 @@ int sk_getsockopt(struct sock *sk, int level, int optname,
case SO_LINGER:
lv = sizeof(v.ling);
v.ling.l_onoff = sock_flag(sk, SOCK_LINGER);
- v.ling.l_linger = sk->sk_lingertime / HZ;
+ v.ling.l_linger = READ_ONCE(sk->sk_lingertime) / HZ;
break;
case SO_BSDCOMPAT:
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index b1f1b49d35edf..6f2f135aab676 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -502,7 +502,7 @@ META_COLLECTOR(int_sk_lingertime)
*err = -1;
return;
}
- dst->value = sk->sk_lingertime / HZ;
+ dst->value = READ_ONCE(sk->sk_lingertime) / HZ;
}
META_COLLECTOR(int_sk_err_qlen)
diff --git a/net/smc/af_smc.c b/net/smc/af_smc.c
index 84219c5121bc2..f774d840759d6 100644
--- a/net/smc/af_smc.c
+++ b/net/smc/af_smc.c
@@ -1807,7 +1807,7 @@ void smc_close_non_accepted(struct sock *sk)
lock_sock(sk);
if (!sk->sk_lingertime)
/* wait for peer closing */
- sk->sk_lingertime = SMC_MAX_STREAM_WAIT_TIMEOUT;
+ WRITE_ONCE(sk->sk_lingertime, SMC_MAX_STREAM_WAIT_TIMEOUT);
__smc_release(smc);
release_sock(sk);
sock_put(sk); /* sock_hold above */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 186/600] wifi: mwifiex: fix memory leak in mwifiex_histogram_read()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (184 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 185/600] net: annotate data-races around sk->sk_lingertime Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 187/600] wifi: mwifiex: Fix missed return in oob checks failed path Greg Kroah-Hartman
` (424 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Brian Norris, Dmitry Antipov,
Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Antipov <dmantipov@yandex.ru>
[ Upstream commit 9c8fd72a5c2a031cbc680a2990107ecd958ffcdb ]
Always free the zeroed page on return from 'mwifiex_histogram_read()'.
Fixes: cbf6e05527a7 ("mwifiex: add rx histogram statistics support")
Acked-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230802160726.85545-1-dmantipov@yandex.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/marvell/mwifiex/debugfs.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/marvell/mwifiex/debugfs.c b/drivers/net/wireless/marvell/mwifiex/debugfs.c
index bda53cb91f376..63f232c723374 100644
--- a/drivers/net/wireless/marvell/mwifiex/debugfs.c
+++ b/drivers/net/wireless/marvell/mwifiex/debugfs.c
@@ -253,8 +253,11 @@ mwifiex_histogram_read(struct file *file, char __user *ubuf,
if (!p)
return -ENOMEM;
- if (!priv || !priv->hist_data)
- return -EFAULT;
+ if (!priv || !priv->hist_data) {
+ ret = -EFAULT;
+ goto free_and_exit;
+ }
+
phist_data = priv->hist_data;
p += sprintf(p, "\n"
@@ -309,6 +312,8 @@ mwifiex_histogram_read(struct file *file, char __user *ubuf,
ret = simple_read_from_buffer(ubuf, count, ppos, (char *)page,
(unsigned long)p - page);
+free_and_exit:
+ free_page(page);
return ret;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 187/600] wifi: mwifiex: Fix missed return in oob checks failed path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (185 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 186/600] wifi: mwifiex: fix memory leak in mwifiex_histogram_read() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 188/600] ARM: dts: Add .dts files missing from the build Greg Kroah-Hartman
` (423 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Polaris Pi, Dmitry Antipov,
Brian Norris, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Polaris Pi <pinkperfect2021@gmail.com>
[ Upstream commit 2785851c627f2db05f9271f7f63661b5dbd95c4c ]
Add missed return in mwifiex_uap_queue_bridged_pkt() and
mwifiex_process_rx_packet().
Fixes: 119585281617 ("wifi: mwifiex: Fix OOB and integer underflow when rx packets")
Signed-off-by: Polaris Pi <pinkperfect2021@gmail.com>
Reported-by: Dmitry Antipov <dmantipov@yandex.ru>
Acked-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230810083911.3725248-1-pinkperfect2021@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/marvell/mwifiex/sta_rx.c | 1 +
drivers/net/wireless/marvell/mwifiex/uap_txrx.c | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_rx.c b/drivers/net/wireless/marvell/mwifiex/sta_rx.c
index f2899d53a43f9..65420ad674167 100644
--- a/drivers/net/wireless/marvell/mwifiex/sta_rx.c
+++ b/drivers/net/wireless/marvell/mwifiex/sta_rx.c
@@ -92,6 +92,7 @@ int mwifiex_process_rx_packet(struct mwifiex_private *priv,
skb->len, rx_pkt_off);
priv->stats.rx_dropped++;
dev_kfree_skb_any(skb);
+ return -1;
}
if ((!memcmp(&rx_pkt_hdr->rfc1042_hdr, bridge_tunnel_header,
diff --git a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
index 04ff051f5d186..c1b8d41dd7536 100644
--- a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
+++ b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
@@ -110,6 +110,7 @@ static void mwifiex_uap_queue_bridged_pkt(struct mwifiex_private *priv,
skb->len, le16_to_cpu(uap_rx_pd->rx_pkt_offset));
priv->stats.rx_dropped++;
dev_kfree_skb_any(skb);
+ return;
}
if ((!memcmp(&rx_pkt_hdr->rfc1042_hdr, bridge_tunnel_header,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 188/600] ARM: dts: Add .dts files missing from the build
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (186 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 187/600] wifi: mwifiex: Fix missed return in oob checks failed path Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 189/600] samples/bpf: fix bio latency check with tracepoint Greg Kroah-Hartman
` (422 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Rob Herring, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rob Herring <robh@kernel.org>
[ Upstream commit 86684c2481b6e6a46c2282acee13554e34e66071 ]
Comparing .dts files to built .dtb files yielded a few .dts files which
are never built. Add them to the build.
Signed-off-by: Rob Herring <robh@kernel.org>
Stable-dep-of: 92632115fb57 ("samples/bpf: fix bio latency check with tracepoint")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/Makefile | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 6aa7dc4db2fc8..df6d905eeb877 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -331,6 +331,7 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
kirkwood-iconnect.dtb \
kirkwood-iomega_ix2_200.dtb \
kirkwood-is2.dtb \
+ kirkwood-km_fixedeth.dtb \
kirkwood-km_kirkwood.dtb \
kirkwood-l-50.dtb \
kirkwood-laplug.dtb \
@@ -861,7 +862,10 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
am3517-craneboard.dtb \
am3517-evm.dtb \
am3517_mt_ventoux.dtb \
+ logicpd-torpedo-35xx-devkit.dtb \
logicpd-torpedo-37xx-devkit.dtb \
+ logicpd-torpedo-37xx-devkit-28.dtb \
+ logicpd-som-lv-35xx-devkit.dtb \
logicpd-som-lv-37xx-devkit.dtb \
omap3430-sdp.dtb \
omap3-beagle.dtb \
@@ -1527,6 +1531,8 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \
armada-388-helios4.dtb \
armada-388-rd.dtb
dtb-$(CONFIG_MACH_ARMADA_39X) += \
+ armada-390-db.dtb \
+ armada-395-gp.dtb \
armada-398-db.dtb
dtb-$(CONFIG_MACH_ARMADA_XP) += \
armada-xp-axpwifiap.dtb \
@@ -1556,6 +1562,7 @@ dtb-$(CONFIG_MACH_DOVE) += \
dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt2701-evb.dtb \
mt6580-evbp1.dtb \
+ mt6582-prestigio-pmt5008-3g.dtb \
mt6589-aquaris5.dtb \
mt6589-fairphone-fp1.dtb \
mt6592-evb.dtb \
@@ -1608,6 +1615,7 @@ dtb-$(CONFIG_ARCH_ASPEED) += \
aspeed-bmc-intel-s2600wf.dtb \
aspeed-bmc-inspur-fp5280g2.dtb \
aspeed-bmc-inspur-nf5280m6.dtb \
+ aspeed-bmc-inspur-on5263m5.dtb \
aspeed-bmc-lenovo-hr630.dtb \
aspeed-bmc-lenovo-hr855xg2.dtb \
aspeed-bmc-microsoft-olympus.dtb \
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 189/600] samples/bpf: fix bio latency check with tracepoint
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (187 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 188/600] ARM: dts: Add .dts files missing from the build Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 190/600] samples/bpf: fix broken map lookup probe Greg Kroah-Hartman
` (421 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel T. Lee, Alexei Starovoitov,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel T. Lee <danieltimlee@gmail.com>
[ Upstream commit 92632115fb57ff9e368f256913e96d6fd5abf5ab ]
Recently, a new tracepoint for the block layer, specifically the
block_io_start/done tracepoints, was introduced in commit 5a80bd075f3b
("block: introduce block_io_start/block_io_done tracepoints").
Previously, the kprobe entry used for this purpose was quite unstable
and inherently broke relevant probes [1]. Now that a stable tracepoint
is available, this commit replaces the bio latency check with it.
One of the changes made during this replacement is the key used for the
hash table. Since 'struct request' cannot be used as a hash key, the
approach taken follows that which was implemented in bcc/biolatency [2].
(uses dev:sector for the key)
[1]: https://github.com/iovisor/bcc/issues/4261
[2]: https://github.com/iovisor/bcc/pull/4691
Fixes: 450b7879e345 ("block: move blk_account_io_{start,done} to blk-mq.c")
Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Link: https://lore.kernel.org/r/20230818090119.477441-7-danieltimlee@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
samples/bpf/tracex3_kern.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
diff --git a/samples/bpf/tracex3_kern.c b/samples/bpf/tracex3_kern.c
index bde6591cb20c5..af235bd6615b1 100644
--- a/samples/bpf/tracex3_kern.c
+++ b/samples/bpf/tracex3_kern.c
@@ -11,6 +11,12 @@
#include <bpf/bpf_helpers.h>
#include <bpf/bpf_tracing.h>
+struct start_key {
+ dev_t dev;
+ u32 _pad;
+ sector_t sector;
+};
+
struct {
__uint(type, BPF_MAP_TYPE_HASH);
__type(key, long);
@@ -18,16 +24,17 @@ struct {
__uint(max_entries, 4096);
} my_map SEC(".maps");
-/* kprobe is NOT a stable ABI. If kernel internals change this bpf+kprobe
- * example will no longer be meaningful
- */
-SEC("kprobe/blk_mq_start_request")
-int bpf_prog1(struct pt_regs *ctx)
+/* from /sys/kernel/tracing/events/block/block_io_start/format */
+SEC("tracepoint/block/block_io_start")
+int bpf_prog1(struct trace_event_raw_block_rq *ctx)
{
- long rq = PT_REGS_PARM1(ctx);
u64 val = bpf_ktime_get_ns();
+ struct start_key key = {
+ .dev = ctx->dev,
+ .sector = ctx->sector
+ };
- bpf_map_update_elem(&my_map, &rq, &val, BPF_ANY);
+ bpf_map_update_elem(&my_map, &key, &val, BPF_ANY);
return 0;
}
@@ -49,21 +56,26 @@ struct {
__uint(max_entries, SLOTS);
} lat_map SEC(".maps");
-SEC("kprobe/__blk_account_io_done")
-int bpf_prog2(struct pt_regs *ctx)
+/* from /sys/kernel/tracing/events/block/block_io_done/format */
+SEC("tracepoint/block/block_io_done")
+int bpf_prog2(struct trace_event_raw_block_rq *ctx)
{
- long rq = PT_REGS_PARM1(ctx);
+ struct start_key key = {
+ .dev = ctx->dev,
+ .sector = ctx->sector
+ };
+
u64 *value, l, base;
u32 index;
- value = bpf_map_lookup_elem(&my_map, &rq);
+ value = bpf_map_lookup_elem(&my_map, &key);
if (!value)
return 0;
u64 cur_time = bpf_ktime_get_ns();
u64 delta = cur_time - *value;
- bpf_map_delete_elem(&my_map, &rq);
+ bpf_map_delete_elem(&my_map, &key);
/* the lines below are computing index = log10(delta)*10
* using integer arithmetic
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 190/600] samples/bpf: fix broken map lookup probe
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (188 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 189/600] samples/bpf: fix bio latency check with tracepoint Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 191/600] wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx Greg Kroah-Hartman
` (420 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel T. Lee, Alexei Starovoitov,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel T. Lee <danieltimlee@gmail.com>
[ Upstream commit d93a7cf6ca2cfcd7de5d06f753ce8d5e863316ac ]
In the commit 7c4cd051add3 ("bpf: Fix syscall's stackmap lookup
potential deadlock"), a potential deadlock issue was addressed, which
resulted in *_map_lookup_elem not triggering BPF programs.
(prior to lookup, bpf_disable_instrumentation() is used)
To resolve the broken map lookup probe using "htab_map_lookup_elem",
this commit introduces an alternative approach. Instead, it utilize
"bpf_map_copy_value" and apply a filter specifically for the hash table
with map_type.
Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com>
Fixes: 7c4cd051add3 ("bpf: Fix syscall's stackmap lookup potential deadlock")
Link: https://lore.kernel.org/r/20230818090119.477441-8-danieltimlee@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
samples/bpf/tracex6_kern.c | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/samples/bpf/tracex6_kern.c b/samples/bpf/tracex6_kern.c
index acad5712d8b4f..fd602c2774b8b 100644
--- a/samples/bpf/tracex6_kern.c
+++ b/samples/bpf/tracex6_kern.c
@@ -2,6 +2,8 @@
#include <linux/version.h>
#include <uapi/linux/bpf.h>
#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+#include <bpf/bpf_core_read.h>
struct {
__uint(type, BPF_MAP_TYPE_PERF_EVENT_ARRAY);
@@ -45,13 +47,24 @@ int bpf_prog1(struct pt_regs *ctx)
return 0;
}
-SEC("kprobe/htab_map_lookup_elem")
-int bpf_prog2(struct pt_regs *ctx)
+/*
+ * Since *_map_lookup_elem can't be expected to trigger bpf programs
+ * due to potential deadlocks (bpf_disable_instrumentation), this bpf
+ * program will be attached to bpf_map_copy_value (which is called
+ * from map_lookup_elem) and will only filter the hashtable type.
+ */
+SEC("kprobe/bpf_map_copy_value")
+int BPF_KPROBE(bpf_prog2, struct bpf_map *map)
{
u32 key = bpf_get_smp_processor_id();
struct bpf_perf_event_value *val, buf;
+ enum bpf_map_type type;
int error;
+ type = BPF_CORE_READ(map, map_type);
+ if (type != BPF_MAP_TYPE_HASH)
+ return 0;
+
error = bpf_perf_event_read_value(&counters, key, &buf, sizeof(buf));
if (error)
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 191/600] wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (189 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 190/600] samples/bpf: fix broken map lookup probe Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 192/600] wifi: ath9k: protect WMI command response buffer replacement with a lock Greg Kroah-Hartman
` (419 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Fedor Pchelkin,
Toke Høiland-Jørgensen, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fedor Pchelkin <pchelkin@ispras.ru>
[ Upstream commit b674fb513e2e7a514fcde287c0f73915d393fdb6 ]
Currently, the synchronization between ath9k_wmi_cmd() and
ath9k_wmi_ctrl_rx() is exposed to a race condition which, although being
rather unlikely, can lead to invalid behaviour of ath9k_wmi_cmd().
Consider the following scenario:
CPU0 CPU1
ath9k_wmi_cmd(...)
mutex_lock(&wmi->op_mutex)
ath9k_wmi_cmd_issue(...)
wait_for_completion_timeout(...)
---
timeout
---
/* the callback is being processed
* before last_seq_id became zero
*/
ath9k_wmi_ctrl_rx(...)
spin_lock_irqsave(...)
/* wmi->last_seq_id check here
* doesn't detect timeout yet
*/
spin_unlock_irqrestore(...)
/* last_seq_id is zeroed to
* indicate there was a timeout
*/
wmi->last_seq_id = 0
mutex_unlock(&wmi->op_mutex)
return -ETIMEDOUT
ath9k_wmi_cmd(...)
mutex_lock(&wmi->op_mutex)
/* the buffer is replaced with
* another one
*/
wmi->cmd_rsp_buf = rsp_buf
wmi->cmd_rsp_len = rsp_len
ath9k_wmi_cmd_issue(...)
spin_lock_irqsave(...)
spin_unlock_irqrestore(...)
wait_for_completion_timeout(...)
/* the continuation of the
* callback left after the first
* ath9k_wmi_cmd call
*/
ath9k_wmi_rsp_callback(...)
/* copying data designated
* to already timeouted
* WMI command into an
* inappropriate wmi_cmd_buf
*/
memcpy(...)
complete(&wmi->cmd_wait)
/* awakened by the bogus callback
* => invalid return result
*/
mutex_unlock(&wmi->op_mutex)
return 0
To fix this, update last_seq_id on timeout path inside ath9k_wmi_cmd()
under the wmi_lock. Move ath9k_wmi_rsp_callback() under wmi_lock inside
ath9k_wmi_ctrl_rx() so that the wmi->cmd_wait can be completed only for
initially designated wmi_cmd call, otherwise the path would be rejected
with last_seq_id check.
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
Fixes: fb9987d0f748 ("ath9k_htc: Support for AR9271 chipset.")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230425192607.18015-1-pchelkin@ispras.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath9k/wmi.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c
index d652c647d56b5..04f363cb90fe5 100644
--- a/drivers/net/wireless/ath/ath9k/wmi.c
+++ b/drivers/net/wireless/ath/ath9k/wmi.c
@@ -242,10 +242,10 @@ static void ath9k_wmi_ctrl_rx(void *priv, struct sk_buff *skb,
spin_unlock_irqrestore(&wmi->wmi_lock, flags);
goto free_skb;
}
- spin_unlock_irqrestore(&wmi->wmi_lock, flags);
/* WMI command response */
ath9k_wmi_rsp_callback(wmi, skb);
+ spin_unlock_irqrestore(&wmi->wmi_lock, flags);
free_skb:
kfree_skb(skb);
@@ -308,8 +308,8 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id,
struct ath_common *common = ath9k_hw_common(ah);
u16 headroom = sizeof(struct htc_frame_hdr) +
sizeof(struct wmi_cmd_hdr);
+ unsigned long time_left, flags;
struct sk_buff *skb;
- unsigned long time_left;
int ret = 0;
if (ah->ah_flags & AH_UNPLUGGED)
@@ -345,7 +345,9 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id,
if (!time_left) {
ath_dbg(common, WMI, "Timeout waiting for WMI command: %s\n",
wmi_cmd_to_name(cmd_id));
+ spin_lock_irqsave(&wmi->wmi_lock, flags);
wmi->last_seq_id = 0;
+ spin_unlock_irqrestore(&wmi->wmi_lock, flags);
mutex_unlock(&wmi->op_mutex);
return -ETIMEDOUT;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 192/600] wifi: ath9k: protect WMI command response buffer replacement with a lock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (190 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 191/600] wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 193/600] wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute Greg Kroah-Hartman
` (418 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Fedor Pchelkin,
Toke Høiland-Jørgensen, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fedor Pchelkin <pchelkin@ispras.ru>
[ Upstream commit 454994cfa9e4c18b6df9f78b60db8eadc20a6c25 ]
If ath9k_wmi_cmd() has exited with a timeout, it is possible that during
next ath9k_wmi_cmd() call the wmi_rsp callback for previous wmi command
writes to new wmi->cmd_rsp_buf and makes a completion. This results in an
invalid ath9k_wmi_cmd() return value.
Move the replacement of WMI command response buffer and length under
wmi_lock. Note that last_seq_id value is updated there, too.
Thus, the buffer cannot be written to by a belated wmi_rsp callback
because that path is properly rejected by the last_seq_id check.
Found by Linux Verification Center (linuxtesting.org) with Syzkaller.
Fixes: fb9987d0f748 ("ath9k_htc: Support for AR9271 chipset.")
Signed-off-by: Fedor Pchelkin <pchelkin@ispras.ru>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230425192607.18015-2-pchelkin@ispras.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath9k/wmi.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/wmi.c b/drivers/net/wireless/ath/ath9k/wmi.c
index 04f363cb90fe5..1476b42b52a91 100644
--- a/drivers/net/wireless/ath/ath9k/wmi.c
+++ b/drivers/net/wireless/ath/ath9k/wmi.c
@@ -283,7 +283,8 @@ int ath9k_wmi_connect(struct htc_target *htc, struct wmi *wmi,
static int ath9k_wmi_cmd_issue(struct wmi *wmi,
struct sk_buff *skb,
- enum wmi_cmd_id cmd, u16 len)
+ enum wmi_cmd_id cmd, u16 len,
+ u8 *rsp_buf, u32 rsp_len)
{
struct wmi_cmd_hdr *hdr;
unsigned long flags;
@@ -293,6 +294,11 @@ static int ath9k_wmi_cmd_issue(struct wmi *wmi,
hdr->seq_no = cpu_to_be16(++wmi->tx_seq_id);
spin_lock_irqsave(&wmi->wmi_lock, flags);
+
+ /* record the rsp buffer and length */
+ wmi->cmd_rsp_buf = rsp_buf;
+ wmi->cmd_rsp_len = rsp_len;
+
wmi->last_seq_id = wmi->tx_seq_id;
spin_unlock_irqrestore(&wmi->wmi_lock, flags);
@@ -333,11 +339,7 @@ int ath9k_wmi_cmd(struct wmi *wmi, enum wmi_cmd_id cmd_id,
goto out;
}
- /* record the rsp buffer and length */
- wmi->cmd_rsp_buf = rsp_buf;
- wmi->cmd_rsp_len = rsp_len;
-
- ret = ath9k_wmi_cmd_issue(wmi, skb, cmd_id, cmd_len);
+ ret = ath9k_wmi_cmd_issue(wmi, skb, cmd_id, cmd_len, rsp_buf, rsp_len);
if (ret)
goto out;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 193/600] wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (191 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 192/600] wifi: ath9k: protect WMI command response buffer replacement with a lock Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 194/600] mac80211: make ieee80211_tx_info padding explicit Greg Kroah-Hartman
` (417 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lin Ma, Simon Horman, Johannes Berg,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit 218d690c49b7e9c94ad0d317adbdd4af846ea0dc ]
The previous commit dd3e4fc75b4a ("nl80211/cfg80211: add BSS color to
NDP ranging parameters") adds a parameter for NDP ranging by introducing
a new attribute type named NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR.
However, the author forgot to also describe the nla_policy at
nl80211_pmsr_ftm_req_attr_policy (net/wireless/nl80211.c). Just
complement it to avoid malformed attribute that causes out-of-attribute
access.
Fixes: dd3e4fc75b4a ("nl80211/cfg80211: add BSS color to NDP ranging parameters")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20230809033151.768910-1-linma@zju.edu.cn
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/wireless/nl80211.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index c2363d44a1ffc..12c7c89d5be1d 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -323,6 +323,7 @@ nl80211_pmsr_ftm_req_attr_policy[NL80211_PMSR_FTM_REQ_ATTR_MAX + 1] = {
[NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED] = { .type = NLA_FLAG },
[NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED] = { .type = NLA_FLAG },
[NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK] = { .type = NLA_FLAG },
+ [NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR] = { .type = NLA_U8 },
};
static const struct nla_policy
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 194/600] mac80211: make ieee80211_tx_info padding explicit
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (192 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 193/600] wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 195/600] wifi: mwifiex: avoid possible NULL skb pointer dereference Greg Kroah-Hartman
` (416 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Arnd Bergmann, Kees Cook,
Johannes Berg, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <arnd@arndb.de>
[ Upstream commit a7a2ef0c4b3efbd7d6f3fabd87dbbc0b3f2de5af ]
While looking at a bug, I got rather confused by the layout of the
'status' field in ieee80211_tx_info. Apparently, the intention is that
status_driver_data[] is used for driver specific data, and fills up the
size of the union to 40 bytes, just like the other ones.
This is indeed what actually happens, but only because of the
combination of two mistakes:
- "void *status_driver_data[18 / sizeof(void *)];" is intended
to be 18 bytes long but is actually two bytes shorter because of
rounding-down in the division, to a multiple of the pointer
size (4 bytes or 8 bytes).
- The other fields combined are intended to be 22 bytes long, but
are actually 24 bytes because of padding in front of the
unaligned tx_time member, and in front of the pointer array.
The two mistakes cancel out. so the size ends up fine, but it seems
more helpful to make this explicit, by having a multiple of 8 bytes
in the size calculation and explicitly describing the padding.
Fixes: ea5907db2a9cc ("mac80211: fix struct ieee80211_tx_info size")
Fixes: 02219b3abca59 ("mac80211: add WMM admission control support")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230623152443.2296825-2-arnd@kernel.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/net/mac80211.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 8a338c33118f9..43173204d6d5e 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1141,9 +1141,11 @@ struct ieee80211_tx_info {
u8 ampdu_ack_len;
u8 ampdu_len;
u8 antenna;
+ u8 pad;
u16 tx_time;
u8 flags;
- void *status_driver_data[18 / sizeof(void *)];
+ u8 pad2;
+ void *status_driver_data[16 / sizeof(void *)];
} status;
struct {
struct ieee80211_tx_rate driver_rates[
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 195/600] wifi: mwifiex: avoid possible NULL skb pointer dereference
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (193 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 194/600] mac80211: make ieee80211_tx_info padding explicit Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 196/600] Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave() Greg Kroah-Hartman
` (415 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Brian Norris, Dmitry Antipov,
Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Antipov <dmantipov@yandex.ru>
[ Upstream commit 35a7a1ce7c7d61664ee54f5239a1f120ab95a87e ]
In 'mwifiex_handle_uap_rx_forward()', always check the value
returned by 'skb_copy()' to avoid potential NULL pointer
dereference in 'mwifiex_uap_queue_bridged_pkt()', and drop
original skb in case of copying failure.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: 838e4f449297 ("mwifiex: improve uAP RX handling")
Acked-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230814095041.16416-1-dmantipov@yandex.ru
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/marvell/mwifiex/uap_txrx.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
index c1b8d41dd7536..b8b9a0fcb19cd 100644
--- a/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
+++ b/drivers/net/wireless/marvell/mwifiex/uap_txrx.c
@@ -253,7 +253,15 @@ int mwifiex_handle_uap_rx_forward(struct mwifiex_private *priv,
if (is_multicast_ether_addr(ra)) {
skb_uap = skb_copy(skb, GFP_ATOMIC);
- mwifiex_uap_queue_bridged_pkt(priv, skb_uap);
+ if (likely(skb_uap)) {
+ mwifiex_uap_queue_bridged_pkt(priv, skb_uap);
+ } else {
+ mwifiex_dbg(adapter, ERROR,
+ "failed to copy skb for uAP\n");
+ priv->stats.rx_dropped++;
+ dev_kfree_skb_any(skb);
+ return -1;
+ }
} else {
if (mwifiex_get_sta_entry(priv, ra)) {
/* Requeue Intra-BSS packet */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 196/600] Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (194 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 195/600] wifi: mwifiex: avoid possible NULL skb pointer dereference Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 197/600] arm64: mm: use ptep_clear() instead of pte_clear() in clear_flush() Greg Kroah-Hartman
` (414 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jinjie Ruan, Luiz Augusto von Dentz,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <ruanjinjie@huawei.com>
[ Upstream commit 2a05334d7f91ff189692089c05fc48cc1d8204de ]
It is not allowed to call kfree_skb() from hardware interrupt
context or with hardware interrupts being disabled.
So replace kfree_skb() with dev_kfree_skb_irq() under
spin_lock_irqsave(). Compile tested only.
Fixes: baac6276c0a9 ("Bluetooth: btusb: handle mSBC audio over USB Endpoints")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/bluetooth/btusb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index d6f405763c56f..f2062c2a28da8 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -1984,7 +1984,7 @@ static int btusb_switch_alt_setting(struct hci_dev *hdev, int new_alts)
* alternate setting.
*/
spin_lock_irqsave(&data->rxlock, flags);
- kfree_skb(data->sco_skb);
+ dev_kfree_skb_irq(data->sco_skb);
data->sco_skb = NULL;
spin_unlock_irqrestore(&data->rxlock, flags);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 197/600] arm64: mm: use ptep_clear() instead of pte_clear() in clear_flush()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (195 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 196/600] Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 198/600] wifi: ath9k: use IS_ERR() with debugfs_create_dir() Greg Kroah-Hartman
` (413 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Qi Zheng, Will Deacon,
Catalin Marinas, Kefeng Wang, Muchun Song, Pasha Tatashin,
Andrew Morton, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Qi Zheng <zhengqi.arch@bytedance.com>
[ Upstream commit 00de2c9f26b15f1a6f2af516dd8ec5f8d28189b7 ]
In clear_flush(), the original pte may be a present entry, so we should
use ptep_clear() to let page_table_check track the pte clearing operation,
otherwise it may cause false positive in subsequent set_pte_at().
Link: https://lkml.kernel.org/r/20230810093241.1181142-1-qi.zheng@linux.dev
Fixes: 42b2547137f5 ("arm64/mm: enable ARCH_SUPPORTS_PAGE_TABLE_CHECK")
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Acked-by: Will Deacon <will@kernel.org>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/mm/hugetlbpage.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
index 35e9a468d13e6..134dcf6bc650c 100644
--- a/arch/arm64/mm/hugetlbpage.c
+++ b/arch/arm64/mm/hugetlbpage.c
@@ -236,7 +236,7 @@ static void clear_flush(struct mm_struct *mm,
unsigned long i, saddr = addr;
for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
- pte_clear(mm, addr, ptep);
+ ptep_clear(mm, addr, ptep);
flush_tlb_range(&vma, saddr, addr);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 198/600] wifi: ath9k: use IS_ERR() with debugfs_create_dir()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (196 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 197/600] arm64: mm: use ptep_clear() instead of pte_clear() in clear_flush() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 199/600] ice: avoid executing commands on other ports when driving sync Greg Kroah-Hartman
` (412 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Wang Ming,
Toke Høiland-Jørgensen, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wang Ming <machel@vivo.com>
[ Upstream commit 1e4134610d93271535ecf900a676e1f094e9944c ]
The debugfs_create_dir() function returns error pointers,
it never returns NULL. Most incorrect error checks were fixed,
but the one in ath9k_htc_init_debug() was forgotten.
Fix the remaining error check.
Fixes: e5facc75fa91 ("ath9k_htc: Cleanup HTC debugfs")
Signed-off-by: Wang Ming <machel@vivo.com>
Acked-by: Toke Høiland-Jørgensen <toke@toke.dk>
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
Link: https://lore.kernel.org/r/20230713030358.12379-1-machel@vivo.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath9k/htc_drv_debug.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
index b3ed65e5c4da8..c55aab01fff5d 100644
--- a/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_debug.c
@@ -491,7 +491,7 @@ int ath9k_htc_init_debug(struct ath_hw *ah)
priv->debug.debugfs_phy = debugfs_create_dir(KBUILD_MODNAME,
priv->hw->wiphy->debugfsdir);
- if (!priv->debug.debugfs_phy)
+ if (IS_ERR(priv->debug.debugfs_phy))
return -ENOMEM;
ath9k_cmn_spectral_init_debug(&priv->spec_priv, priv->debug.debugfs_phy);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 199/600] ice: avoid executing commands on other ports when driving sync
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (197 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 198/600] wifi: ath9k: use IS_ERR() with debugfs_create_dir() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 200/600] net: arcnet: Do not call kfree_skb() under local_irq_disable() Greg Kroah-Hartman
` (411 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Siddaraju DH, Jacob Keller,
Tony Nguyen, Simon Horman, David S. Miller, Sasha Levin,
Sunitha Mekala
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jacob Keller <jacob.e.keller@intel.com>
[ Upstream commit 0aacec49c29e7c5b1487e859b0c0a42388c34092 ]
The ice hardware has a synchronization mechanism used to drive the
simultaneous application of commands on both PHY ports and the source timer
in the MAC.
When issuing a sync via ice_ptp_exec_tmr_cmd(), the hardware will
simultaneously apply the commands programmed for the main timer and each
PHY port. Neither the main timer command register, nor the PHY port command
registers auto clear on command execution.
During the execution of a timer command intended for a single port on E822
devices, such as those used to configure a PHY during link up, the driver
is not correctly clearing the previous commands.
This results in unintentionally executing the last programmed command on
the main timer and other PHY ports whenever performing reconfiguration on
E822 ports after link up. This results in unintended side effects on other
timers, depending on what command was previously programmed.
To fix this, the driver must ensure that the main timer and all other PHY
ports are properly initialized to perform no action.
The enumeration for timer commands does not include an enumeration value
for doing nothing. Introduce ICE_PTP_NOP for this purpose. When writing a
timer command to hardware, leave the command bits set to zero which
indicates that no operation should be performed on that port.
Modify ice_ptp_one_port_cmd() to always initialize all ports. For all ports
other than the one being configured, write their timer command register to
ICE_PTP_NOP. This ensures that no side effect happens on the timer command.
To fix this for the PHY ports, modify ice_ptp_one_port_cmd() to always
initialize all other ports to ICE_PTP_NOP. This ensures that no side
effects happen on the other ports.
Call ice_ptp_src_cmd() with a command value if ICE_PTP_NOP in
ice_sync_phy_timer_e822() and ice_start_phy_timer_e822().
With both of these changes, the driver should no longer execute a stale
command on the main timer or another PHY port when reconfiguring one of the
PHY ports after link up.
Fixes: 3a7496234d17 ("ice: implement basic E822 PTP support")
Signed-off-by: Siddaraju DH <siddaraju.dh@intel.com>
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Sunitha Mekala <sunithax.d.mekala@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 55 +++++++++++++++++++--
drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 3 +-
2 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
index 772b1f566d6ed..813acd6a4b469 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
+++ b/drivers/net/ethernet/intel/ice/ice_ptp_hw.c
@@ -131,6 +131,8 @@ static void ice_ptp_src_cmd(struct ice_hw *hw, enum ice_ptp_tmr_cmd cmd)
case READ_TIME:
cmd_val |= GLTSYN_CMD_READ_TIME;
break;
+ case ICE_PTP_NOP:
+ break;
}
wr32(hw, GLTSYN_CMD, cmd_val);
@@ -1200,18 +1202,18 @@ ice_ptp_read_port_capture(struct ice_hw *hw, u8 port, u64 *tx_ts, u64 *rx_ts)
}
/**
- * ice_ptp_one_port_cmd - Prepare a single PHY port for a timer command
+ * ice_ptp_write_port_cmd_e822 - Prepare a single PHY port for a timer command
* @hw: pointer to HW struct
* @port: Port to which cmd has to be sent
* @cmd: Command to be sent to the port
*
* Prepare the requested port for an upcoming timer sync command.
*
- * Note there is no equivalent of this operation on E810, as that device
- * always handles all external PHYs internally.
+ * Do not use this function directly. If you want to configure exactly one
+ * port, use ice_ptp_one_port_cmd() instead.
*/
static int
-ice_ptp_one_port_cmd(struct ice_hw *hw, u8 port, enum ice_ptp_tmr_cmd cmd)
+ice_ptp_write_port_cmd_e822(struct ice_hw *hw, u8 port, enum ice_ptp_tmr_cmd cmd)
{
u32 cmd_val, val;
u8 tmr_idx;
@@ -1235,6 +1237,8 @@ ice_ptp_one_port_cmd(struct ice_hw *hw, u8 port, enum ice_ptp_tmr_cmd cmd)
case ADJ_TIME_AT_TIME:
cmd_val |= PHY_CMD_ADJ_TIME_AT_TIME;
break;
+ case ICE_PTP_NOP:
+ break;
}
/* Tx case */
@@ -1280,6 +1284,39 @@ ice_ptp_one_port_cmd(struct ice_hw *hw, u8 port, enum ice_ptp_tmr_cmd cmd)
return 0;
}
+/**
+ * ice_ptp_one_port_cmd - Prepare one port for a timer command
+ * @hw: pointer to the HW struct
+ * @configured_port: the port to configure with configured_cmd
+ * @configured_cmd: timer command to prepare on the configured_port
+ *
+ * Prepare the configured_port for the configured_cmd, and prepare all other
+ * ports for ICE_PTP_NOP. This causes the configured_port to execute the
+ * desired command while all other ports perform no operation.
+ */
+static int
+ice_ptp_one_port_cmd(struct ice_hw *hw, u8 configured_port,
+ enum ice_ptp_tmr_cmd configured_cmd)
+{
+ u8 port;
+
+ for (port = 0; port < ICE_NUM_EXTERNAL_PORTS; port++) {
+ enum ice_ptp_tmr_cmd cmd;
+ int err;
+
+ if (port == configured_port)
+ cmd = configured_cmd;
+ else
+ cmd = ICE_PTP_NOP;
+
+ err = ice_ptp_write_port_cmd_e822(hw, port, cmd);
+ if (err)
+ return err;
+ }
+
+ return 0;
+}
+
/**
* ice_ptp_port_cmd_e822 - Prepare all ports for a timer command
* @hw: pointer to the HW struct
@@ -1296,7 +1333,7 @@ ice_ptp_port_cmd_e822(struct ice_hw *hw, enum ice_ptp_tmr_cmd cmd)
for (port = 0; port < ICE_NUM_EXTERNAL_PORTS; port++) {
int err;
- err = ice_ptp_one_port_cmd(hw, port, cmd);
+ err = ice_ptp_write_port_cmd_e822(hw, port, cmd);
if (err)
return err;
}
@@ -2245,6 +2282,9 @@ static int ice_sync_phy_timer_e822(struct ice_hw *hw, u8 port)
if (err)
goto err_unlock;
+ /* Do not perform any action on the main timer */
+ ice_ptp_src_cmd(hw, ICE_PTP_NOP);
+
/* Issue the sync to activate the time adjustment */
ice_ptp_exec_tmr_cmd(hw);
@@ -2371,6 +2411,9 @@ ice_start_phy_timer_e822(struct ice_hw *hw, u8 port, bool bypass)
if (err)
return err;
+ /* Do not perform any action on the main timer */
+ ice_ptp_src_cmd(hw, ICE_PTP_NOP);
+
ice_ptp_exec_tmr_cmd(hw);
err = ice_read_phy_reg_e822(hw, port, P_REG_PS, &val);
@@ -2914,6 +2957,8 @@ static int ice_ptp_port_cmd_e810(struct ice_hw *hw, enum ice_ptp_tmr_cmd cmd)
case ADJ_TIME_AT_TIME:
cmd_val = GLTSYN_CMD_ADJ_INIT_TIME;
break;
+ case ICE_PTP_NOP:
+ return 0;
}
/* Read, modify, write */
diff --git a/drivers/net/ethernet/intel/ice/ice_ptp_hw.h b/drivers/net/ethernet/intel/ice/ice_ptp_hw.h
index 2bda64c76abc3..071f545aa85e8 100644
--- a/drivers/net/ethernet/intel/ice/ice_ptp_hw.h
+++ b/drivers/net/ethernet/intel/ice/ice_ptp_hw.h
@@ -9,7 +9,8 @@ enum ice_ptp_tmr_cmd {
INIT_INCVAL,
ADJ_TIME,
ADJ_TIME_AT_TIME,
- READ_TIME
+ READ_TIME,
+ ICE_PTP_NOP,
};
enum ice_ptp_serdes {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 200/600] net: arcnet: Do not call kfree_skb() under local_irq_disable()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (198 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 199/600] ice: avoid executing commands on other ports when driving sync Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 201/600] mlxsw: i2c: Fix chunk size setting in output mailbox buffer Greg Kroah-Hartman
` (410 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jinjie Ruan, David S. Miller,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <ruanjinjie@huawei.com>
[ Upstream commit 786c96e92fb9e854cb8b0cb7399bb2fb28e15c4b ]
It is not allowed to call kfree_skb() from hardware interrupt
context or with hardware interrupts being disabled.
So replace kfree_skb() with dev_kfree_skb_irq() under
local_irq_disable(). Compile tested only.
Fixes: 05fcd31cc472 ("arcnet: add err_skb package for package status feedback")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/arcnet/arcnet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/arcnet/arcnet.c b/drivers/net/arcnet/arcnet.c
index 1bad1866ae462..a48220f91a2df 100644
--- a/drivers/net/arcnet/arcnet.c
+++ b/drivers/net/arcnet/arcnet.c
@@ -468,7 +468,7 @@ static void arcnet_reply_tasklet(struct tasklet_struct *t)
ret = sock_queue_err_skb(sk, ackskb);
if (ret)
- kfree_skb(ackskb);
+ dev_kfree_skb_irq(ackskb);
local_irq_enable();
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 201/600] mlxsw: i2c: Fix chunk size setting in output mailbox buffer
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (199 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 200/600] net: arcnet: Do not call kfree_skb() under local_irq_disable() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 202/600] mlxsw: i2c: Limit single transaction buffer size Greg Kroah-Hartman
` (409 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vadim Pasternak, Ido Schimmel,
Petr Machata, David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vadim Pasternak <vadimp@nvidia.com>
[ Upstream commit 146c7c330507c0384bf29d567186632bfe975927 ]
The driver reads commands output from the output mailbox. If the size
of the output mailbox is not a multiple of the transaction /
block size, then the driver will not issue enough read transactions
to read the entire output, which can result in driver initialization
errors.
Fix by determining the number of transactions using DIV_ROUND_UP().
Fixes: 3029a693beda ("mlxsw: i2c: Allow flexible setting of I2C transactions size")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
index f5f5f8dc3d190..26e05f129e35a 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
@@ -444,7 +444,7 @@ mlxsw_i2c_cmd(struct device *dev, u16 opcode, u32 in_mod, size_t in_mbox_size,
} else {
/* No input mailbox is case of initialization query command. */
reg_size = MLXSW_I2C_MAX_DATA_SIZE;
- num = reg_size / mlxsw_i2c->block_size;
+ num = DIV_ROUND_UP(reg_size, mlxsw_i2c->block_size);
if (mutex_lock_interruptible(&mlxsw_i2c->cmd.lock) < 0) {
dev_err(&client->dev, "Could not acquire lock");
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 202/600] mlxsw: i2c: Limit single transaction buffer size
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (200 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 201/600] mlxsw: i2c: Fix chunk size setting in output mailbox buffer Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 203/600] mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter Greg Kroah-Hartman
` (408 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vadim Pasternak, Petr Machata,
David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vadim Pasternak <vadimp@nvidia.com>
[ Upstream commit d7248f1cc835bd80e936dc5b2d94b149bdd0077d ]
Maximum size of buffer is obtained from underlying I2C adapter and in
case adapter allows I2C transaction buffer size greater than 100 bytes,
transaction will fail due to firmware limitation.
As a result driver will fail initialization.
Limit the maximum size of transaction buffer by 100 bytes to fit to
firmware.
Remove unnecessary calculation:
max_t(u16, MLXSW_I2C_BLK_DEF, quirk_size).
This condition can not happened.
Fixes: 3029a693beda ("mlxsw: i2c: Allow flexible setting of I2C transactions size")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/mellanox/mlxsw/i2c.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/i2c.c b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
index 26e05f129e35a..3beefc167da91 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/i2c.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/i2c.c
@@ -48,6 +48,7 @@
#define MLXSW_I2C_MBOX_SIZE_BITS 12
#define MLXSW_I2C_ADDR_BUF_SIZE 4
#define MLXSW_I2C_BLK_DEF 32
+#define MLXSW_I2C_BLK_MAX 100
#define MLXSW_I2C_RETRY 5
#define MLXSW_I2C_TIMEOUT_MSECS 5000
#define MLXSW_I2C_MAX_DATA_SIZE 256
@@ -653,7 +654,7 @@ static int mlxsw_i2c_probe(struct i2c_client *client,
return -EOPNOTSUPP;
}
- mlxsw_i2c->block_size = max_t(u16, MLXSW_I2C_BLK_DEF,
+ mlxsw_i2c->block_size = min_t(u16, MLXSW_I2C_BLK_MAX,
min_t(u16, quirks->max_read_len,
quirks->max_write_len));
} else {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 203/600] mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (201 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 202/600] mlxsw: i2c: Limit single transaction buffer size Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 204/600] hwmon: (tmp513) Fix the channel number in tmp51x_is_visible() Greg Kroah-Hartman
` (407 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vadim Pasternak, Ido Schimmel,
Petr Machata, David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vadim Pasternak <vadimp@nvidia.com>
[ Upstream commit 3fc134a07438055fc93ce1bbacf2702ddd09500c ]
Transceiver module temperature sensors are indexed after ASIC and
platform sensors. The current label printing method does not take this
into account and simply prints the index of the transceiver module
sensor.
On new systems that have platform sensors this results in incorrect
(shifted) transceiver module labels being printed:
$ sensors
[...]
front panel 002: +37.0°C (crit = +70.0°C, emerg = +75.0°C)
front panel 003: +47.0°C (crit = +70.0°C, emerg = +75.0°C)
[...]
Fix by taking the sensor count into account. After the fix:
$ sensors
[...]
front panel 001: +37.0°C (crit = +70.0°C, emerg = +75.0°C)
front panel 002: +47.0°C (crit = +70.0°C, emerg = +75.0°C)
[...]
Fixes: a53779de6a0e ("mlxsw: core: Add QSFP module temperature label attribute to hwmon")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c
index 70735068cf292..0fd290d776ffe 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/core_hwmon.c
@@ -405,7 +405,8 @@ mlxsw_hwmon_module_temp_label_show(struct device *dev,
container_of(attr, struct mlxsw_hwmon_attr, dev_attr);
return sprintf(buf, "front panel %03u\n",
- mlxsw_hwmon_attr->type_index);
+ mlxsw_hwmon_attr->type_index + 1 -
+ mlxsw_hwmon_attr->mlxsw_hwmon_dev->sensor_count);
}
static ssize_t
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 204/600] hwmon: (tmp513) Fix the channel number in tmp51x_is_visible()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (202 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 203/600] mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 205/600] octeontx2-pf: Refactor schedular queue alloc/free calls Greg Kroah-Hartman
` (406 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Guenter Roeck, Biju Das, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Biju Das <biju.das.jz@bp.renesas.com>
[ Upstream commit d103337e38e7e64c3d915029e947b1cb0b512737 ]
The supported channels for this driver are {0..3}. Fix the incorrect
channel in tmp51x_is_visible().
Reported-by: Guenter Roeck <linux@roeck-us.net>
Closes: https://lore.kernel.org/all/ea0eccc0-a29f-41e4-9049-a1a13f8b16f1@roeck-us.net/
Fixes: 59dfa75e5d82 ("hwmon: Add driver for Texas Instruments TMP512/513 sensor chips.")
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Link: https://lore.kernel.org/r/20230824204456.401580-2-biju.das.jz@bp.renesas.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hwmon/tmp513.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/hwmon/tmp513.c b/drivers/hwmon/tmp513.c
index 7d5f7441aceb1..b9a93ee9c2364 100644
--- a/drivers/hwmon/tmp513.c
+++ b/drivers/hwmon/tmp513.c
@@ -434,7 +434,7 @@ static umode_t tmp51x_is_visible(const void *_data,
switch (type) {
case hwmon_temp:
- if (data->id == tmp512 && channel == 4)
+ if (data->id == tmp512 && channel == 3)
return 0;
switch (attr) {
case hwmon_temp_input:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 205/600] octeontx2-pf: Refactor schedular queue alloc/free calls
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (203 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 204/600] hwmon: (tmp513) Fix the channel number in tmp51x_is_visible() Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 206/600] octeontx2-pf: Fix PFC TX scheduler free Greg Kroah-Hartman
` (405 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hariprasad Kelam,
Naveen Mamindlapalli, Sunil Kovvuri Goutham, David S. Miller,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hariprasad Kelam <hkelam@marvell.com>
[ Upstream commit 6b4b2ded9c4282deea421eef144ab0ced954721c ]
1. Upon txschq free request, the transmit schedular config in hardware
is not getting reset. This patch adds necessary changes to do the same.
2. Current implementation calls txschq alloc during interface
initialization and in response handler updates the default txschq array.
This creates a problem for htb offload where txsch alloc will be called
for every tc class. This patch addresses the issue by reading txschq
response in mbox caller function instead in the response handler.
3. Current otx2_txschq_stop routine tries to free all txschq nodes
allocated to the interface. This creates a problem for htb offload.
This patch introduces the otx2_txschq_free_one to free txschq in a
given level.
Signed-off-by: Hariprasad Kelam <hkelam@marvell.com>
Signed-off-by: Naveen Mamindlapalli <naveenm@marvell.com>
Signed-off-by: Sunil Kovvuri Goutham <sgoutham@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: a9ac2e187795 ("octeontx2-pf: Fix PFC TX scheduler free")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../ethernet/marvell/octeontx2/af/rvu_nix.c | 45 +++++++++++++
.../marvell/octeontx2/nic/otx2_common.c | 67 ++++++++++++-------
.../marvell/octeontx2/nic/otx2_common.h | 3 +-
.../ethernet/marvell/octeontx2/nic/otx2_pf.c | 13 +---
.../ethernet/marvell/octeontx2/nic/otx2_vf.c | 4 --
5 files changed, 94 insertions(+), 38 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
index 5541e284cd3f0..c85e0180d96da 100644
--- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
+++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c
@@ -1691,6 +1691,42 @@ handle_txschq_shaper_update(struct rvu *rvu, int blkaddr, int nixlf,
return true;
}
+static void nix_reset_tx_schedule(struct rvu *rvu, int blkaddr,
+ int lvl, int schq)
+{
+ u64 tlx_parent = 0, tlx_schedule = 0;
+
+ switch (lvl) {
+ case NIX_TXSCH_LVL_TL2:
+ tlx_parent = NIX_AF_TL2X_PARENT(schq);
+ tlx_schedule = NIX_AF_TL2X_SCHEDULE(schq);
+ break;
+ case NIX_TXSCH_LVL_TL3:
+ tlx_parent = NIX_AF_TL3X_PARENT(schq);
+ tlx_schedule = NIX_AF_TL3X_SCHEDULE(schq);
+ break;
+ case NIX_TXSCH_LVL_TL4:
+ tlx_parent = NIX_AF_TL4X_PARENT(schq);
+ tlx_schedule = NIX_AF_TL4X_SCHEDULE(schq);
+ break;
+ case NIX_TXSCH_LVL_MDQ:
+ /* no need to reset SMQ_CFG as HW clears this CSR
+ * on SMQ flush
+ */
+ tlx_parent = NIX_AF_MDQX_PARENT(schq);
+ tlx_schedule = NIX_AF_MDQX_SCHEDULE(schq);
+ break;
+ default:
+ return;
+ }
+
+ if (tlx_parent)
+ rvu_write64(rvu, blkaddr, tlx_parent, 0x0);
+
+ if (tlx_schedule)
+ rvu_write64(rvu, blkaddr, tlx_schedule, 0x0);
+}
+
/* Disable shaping of pkts by a scheduler queue
* at a given scheduler level.
*/
@@ -2040,6 +2076,7 @@ int rvu_mbox_handler_nix_txsch_alloc(struct rvu *rvu,
pfvf_map[schq] = TXSCH_MAP(pcifunc, 0);
nix_reset_tx_linkcfg(rvu, blkaddr, lvl, schq);
nix_reset_tx_shaping(rvu, blkaddr, nixlf, lvl, schq);
+ nix_reset_tx_schedule(rvu, blkaddr, lvl, schq);
}
for (idx = 0; idx < req->schq[lvl]; idx++) {
@@ -2049,6 +2086,7 @@ int rvu_mbox_handler_nix_txsch_alloc(struct rvu *rvu,
pfvf_map[schq] = TXSCH_MAP(pcifunc, 0);
nix_reset_tx_linkcfg(rvu, blkaddr, lvl, schq);
nix_reset_tx_shaping(rvu, blkaddr, nixlf, lvl, schq);
+ nix_reset_tx_schedule(rvu, blkaddr, lvl, schq);
}
}
@@ -2137,6 +2175,7 @@ static int nix_txschq_free(struct rvu *rvu, u16 pcifunc)
continue;
nix_reset_tx_linkcfg(rvu, blkaddr, lvl, schq);
nix_clear_tx_xoff(rvu, blkaddr, lvl, schq);
+ nix_reset_tx_shaping(rvu, blkaddr, nixlf, lvl, schq);
}
}
nix_clear_tx_xoff(rvu, blkaddr, NIX_TXSCH_LVL_TL1,
@@ -2175,6 +2214,7 @@ static int nix_txschq_free(struct rvu *rvu, u16 pcifunc)
for (schq = 0; schq < txsch->schq.max; schq++) {
if (TXSCH_MAP_FUNC(txsch->pfvf_map[schq]) != pcifunc)
continue;
+ nix_reset_tx_schedule(rvu, blkaddr, lvl, schq);
rvu_free_rsrc(&txsch->schq, schq);
txsch->pfvf_map[schq] = TXSCH_MAP(0, NIX_TXSCHQ_FREE);
}
@@ -2234,6 +2274,9 @@ static int nix_txschq_free_one(struct rvu *rvu,
*/
nix_clear_tx_xoff(rvu, blkaddr, lvl, schq);
+ nix_reset_tx_linkcfg(rvu, blkaddr, lvl, schq);
+ nix_reset_tx_shaping(rvu, blkaddr, nixlf, lvl, schq);
+
/* Flush if it is a SMQ. Onus of disabling
* TL2/3 queue links before SMQ flush is on user
*/
@@ -2243,6 +2286,8 @@ static int nix_txschq_free_one(struct rvu *rvu,
goto err;
}
+ nix_reset_tx_schedule(rvu, blkaddr, lvl, schq);
+
/* Free the resource */
rvu_free_rsrc(&txsch->schq, schq);
txsch->pfvf_map[schq] = TXSCH_MAP(0, NIX_TXSCHQ_FREE);
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index 8a41ad8ca04f1..dd97731f81698 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -716,7 +716,8 @@ EXPORT_SYMBOL(otx2_smq_flush);
int otx2_txsch_alloc(struct otx2_nic *pfvf)
{
struct nix_txsch_alloc_req *req;
- int lvl;
+ struct nix_txsch_alloc_rsp *rsp;
+ int lvl, schq, rc;
/* Get memory to put this msg */
req = otx2_mbox_alloc_msg_nix_txsch_alloc(&pfvf->mbox);
@@ -726,33 +727,68 @@ int otx2_txsch_alloc(struct otx2_nic *pfvf)
/* Request one schq per level */
for (lvl = 0; lvl < NIX_TXSCH_LVL_CNT; lvl++)
req->schq[lvl] = 1;
+ rc = otx2_sync_mbox_msg(&pfvf->mbox);
+ if (rc)
+ return rc;
- return otx2_sync_mbox_msg(&pfvf->mbox);
+ rsp = (struct nix_txsch_alloc_rsp *)
+ otx2_mbox_get_rsp(&pfvf->mbox.mbox, 0, &req->hdr);
+ if (IS_ERR(rsp))
+ return PTR_ERR(rsp);
+
+ /* Setup transmit scheduler list */
+ for (lvl = 0; lvl < NIX_TXSCH_LVL_CNT; lvl++)
+ for (schq = 0; schq < rsp->schq[lvl]; schq++)
+ pfvf->hw.txschq_list[lvl][schq] =
+ rsp->schq_list[lvl][schq];
+
+ pfvf->hw.txschq_link_cfg_lvl = rsp->link_cfg_lvl;
+
+ return 0;
}
-int otx2_txschq_stop(struct otx2_nic *pfvf)
+void otx2_txschq_free_one(struct otx2_nic *pfvf, u16 lvl, u16 schq)
{
struct nix_txsch_free_req *free_req;
- int lvl, schq, err;
+ int err;
mutex_lock(&pfvf->mbox.lock);
- /* Free the transmit schedulers */
+
free_req = otx2_mbox_alloc_msg_nix_txsch_free(&pfvf->mbox);
if (!free_req) {
mutex_unlock(&pfvf->mbox.lock);
- return -ENOMEM;
+ netdev_err(pfvf->netdev,
+ "Failed alloc txschq free req\n");
+ return;
}
- free_req->flags = TXSCHQ_FREE_ALL;
+ free_req->schq_lvl = lvl;
+ free_req->schq = schq;
+
err = otx2_sync_mbox_msg(&pfvf->mbox);
+ if (err) {
+ netdev_err(pfvf->netdev,
+ "Failed stop txschq %d at level %d\n", schq, lvl);
+ }
+
mutex_unlock(&pfvf->mbox.lock);
+}
+
+void otx2_txschq_stop(struct otx2_nic *pfvf)
+{
+ int lvl, schq;
+
+ /* free non QOS TLx nodes */
+ for (lvl = 0; lvl < NIX_TXSCH_LVL_CNT; lvl++)
+ otx2_txschq_free_one(pfvf, lvl,
+ pfvf->hw.txschq_list[lvl][0]);
/* Clear the txschq list */
for (lvl = 0; lvl < NIX_TXSCH_LVL_CNT; lvl++) {
for (schq = 0; schq < MAX_TXSCHQ_PER_FUNC; schq++)
pfvf->hw.txschq_list[lvl][schq] = 0;
}
- return err;
+
}
void otx2_sqb_flush(struct otx2_nic *pfvf)
@@ -1629,21 +1665,6 @@ void mbox_handler_cgx_fec_stats(struct otx2_nic *pfvf,
pfvf->hw.cgx_fec_uncorr_blks += rsp->fec_uncorr_blks;
}
-void mbox_handler_nix_txsch_alloc(struct otx2_nic *pf,
- struct nix_txsch_alloc_rsp *rsp)
-{
- int lvl, schq;
-
- /* Setup transmit scheduler list */
- for (lvl = 0; lvl < NIX_TXSCH_LVL_CNT; lvl++)
- for (schq = 0; schq < rsp->schq[lvl]; schq++)
- pf->hw.txschq_list[lvl][schq] =
- rsp->schq_list[lvl][schq];
-
- pf->hw.txschq_link_cfg_lvl = rsp->link_cfg_lvl;
-}
-EXPORT_SYMBOL(mbox_handler_nix_txsch_alloc);
-
void mbox_handler_npa_lf_alloc(struct otx2_nic *pfvf,
struct npa_lf_alloc_rsp *rsp)
{
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
index 241016ca64d05..8a9793b06769f 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h
@@ -917,7 +917,8 @@ int otx2_config_nix(struct otx2_nic *pfvf);
int otx2_config_nix_queues(struct otx2_nic *pfvf);
int otx2_txschq_config(struct otx2_nic *pfvf, int lvl, int prio, bool pfc_en);
int otx2_txsch_alloc(struct otx2_nic *pfvf);
-int otx2_txschq_stop(struct otx2_nic *pfvf);
+void otx2_txschq_stop(struct otx2_nic *pfvf);
+void otx2_txschq_free_one(struct otx2_nic *pfvf, u16 lvl, u16 schq);
void otx2_sqb_flush(struct otx2_nic *pfvf);
int __otx2_alloc_rbuf(struct otx2_nic *pfvf, struct otx2_pool *pool,
dma_addr_t *dma);
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
index c236dba80ff1a..17e546d0d7e55 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c
@@ -791,10 +791,6 @@ static void otx2_process_pfaf_mbox_msg(struct otx2_nic *pf,
case MBOX_MSG_NIX_LF_ALLOC:
mbox_handler_nix_lf_alloc(pf, (struct nix_lf_alloc_rsp *)msg);
break;
- case MBOX_MSG_NIX_TXSCH_ALLOC:
- mbox_handler_nix_txsch_alloc(pf,
- (struct nix_txsch_alloc_rsp *)msg);
- break;
case MBOX_MSG_NIX_BP_ENABLE:
mbox_handler_nix_bp_enable(pf, (struct nix_bp_cfg_rsp *)msg);
break;
@@ -1517,8 +1513,7 @@ static int otx2_init_hw_resources(struct otx2_nic *pf)
otx2_free_cq_res(pf);
otx2_ctx_disable(mbox, NIX_AQ_CTYPE_RQ, false);
err_free_txsch:
- if (otx2_txschq_stop(pf))
- dev_err(pf->dev, "%s failed to stop TX schedulers\n", __func__);
+ otx2_txschq_stop(pf);
err_free_sq_ptrs:
otx2_sq_free_sqbs(pf);
err_free_rq_ptrs:
@@ -1553,15 +1548,13 @@ static void otx2_free_hw_resources(struct otx2_nic *pf)
struct mbox *mbox = &pf->mbox;
struct otx2_cq_queue *cq;
struct msg_req *req;
- int qidx, err;
+ int qidx;
/* Ensure all SQE are processed */
otx2_sqb_flush(pf);
/* Stop transmission */
- err = otx2_txschq_stop(pf);
- if (err)
- dev_err(pf->dev, "RVUPF: Failed to stop/free TX schedulers\n");
+ otx2_txschq_stop(pf);
#ifdef CONFIG_DCB
if (pf->pfc_en)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
index 53366dbfbf27c..f8f0c01f62a14 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_vf.c
@@ -70,10 +70,6 @@ static void otx2vf_process_vfaf_mbox_msg(struct otx2_nic *vf,
case MBOX_MSG_NIX_LF_ALLOC:
mbox_handler_nix_lf_alloc(vf, (struct nix_lf_alloc_rsp *)msg);
break;
- case MBOX_MSG_NIX_TXSCH_ALLOC:
- mbox_handler_nix_txsch_alloc(vf,
- (struct nix_txsch_alloc_rsp *)msg);
- break;
case MBOX_MSG_NIX_BP_ENABLE:
mbox_handler_nix_bp_enable(vf, (struct nix_bp_cfg_rsp *)msg);
break;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 206/600] octeontx2-pf: Fix PFC TX scheduler free
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (204 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 205/600] octeontx2-pf: Refactor schedular queue alloc/free calls Greg Kroah-Hartman
@ 2023-09-11 13:43 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 207/600] cteonxt2-pf: Fix backpressure config for multiple PFC priorities to work simultaneously Greg Kroah-Hartman
` (404 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:43 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Suman Ghosh, Simon Horman,
Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Suman Ghosh <sumang@marvell.com>
[ Upstream commit a9ac2e18779597f280d68a5b5f5bdd51a34080fa ]
During PFC TX schedulers free, flag TXSCHQ_FREE_ALL was being set
which caused free up all schedulers other than the PFC schedulers.
This patch fixes that to free only the PFC Tx schedulers.
Fixes: 99c969a83d82 ("octeontx2-pf: Add egress PFC support")
Signed-off-by: Suman Ghosh <sumang@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20230824081032.436432-2-sumang@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../ethernet/marvell/octeontx2/nic/otx2_common.c | 1 +
.../ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 15 ++++-----------
2 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
index dd97731f81698..011355e73696e 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c
@@ -773,6 +773,7 @@ void otx2_txschq_free_one(struct otx2_nic *pfvf, u16 lvl, u16 schq)
mutex_unlock(&pfvf->mbox.lock);
}
+EXPORT_SYMBOL(otx2_txschq_free_one);
void otx2_txschq_stop(struct otx2_nic *pfvf)
{
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
index ccaf97bb1ce03..6492749dd7c89 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
@@ -125,19 +125,12 @@ int otx2_pfc_txschq_alloc(struct otx2_nic *pfvf)
static int otx2_pfc_txschq_stop_one(struct otx2_nic *pfvf, u8 prio)
{
- struct nix_txsch_free_req *free_req;
+ int lvl;
- mutex_lock(&pfvf->mbox.lock);
/* free PFC TLx nodes */
- free_req = otx2_mbox_alloc_msg_nix_txsch_free(&pfvf->mbox);
- if (!free_req) {
- mutex_unlock(&pfvf->mbox.lock);
- return -ENOMEM;
- }
-
- free_req->flags = TXSCHQ_FREE_ALL;
- otx2_sync_mbox_msg(&pfvf->mbox);
- mutex_unlock(&pfvf->mbox.lock);
+ for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++)
+ otx2_txschq_free_one(pfvf, lvl,
+ pfvf->pfc_schq_list[lvl][prio]);
pfvf->pfc_alloc_status[prio] = false;
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 207/600] cteonxt2-pf: Fix backpressure config for multiple PFC priorities to work simultaneously
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (205 preceding siblings ...)
2023-09-11 13:43 ` [PATCH 6.1 206/600] octeontx2-pf: Fix PFC TX scheduler free Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 208/600] sfc: Check firmware supports Ethernet PTP filter Greg Kroah-Hartman
` (403 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Suman Ghosh, Simon Horman,
Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Suman Ghosh <sumang@marvell.com>
[ Upstream commit 597d0ec0e4ca6a912affea4cc94df08959e9ec74 ]
MAC (CGX or RPM) asserts backpressure at TL3 or TL2 node of the egress
hierarchical scheduler tree depending on link level config done. If
there are multiple PFC priorities enabled at a time and for all such
flows to backoff, each priority will have to assert backpressure at
different TL3/TL2 scheduler nodes and these flows will need to submit
egress pkts to these nodes.
Current PFC configuration has an issue where in only one backpressure
scheduler node is being allocated which is resulting in only one PFC
priority to work. This patch fixes this issue.
Fixes: 99c969a83d82 ("octeontx2-pf: Add egress PFC support")
Signed-off-by: Suman Ghosh <sumang@marvell.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20230824081032.436432-4-sumang@marvell.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
index 6492749dd7c89..bfddbff7bcdfb 100644
--- a/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
+++ b/drivers/net/ethernet/marvell/octeontx2/nic/otx2_dcbnl.c
@@ -70,7 +70,7 @@ static int otx2_pfc_txschq_alloc_one(struct otx2_nic *pfvf, u8 prio)
* link config level. These rest of the scheduler can be
* same as hw.txschq_list.
*/
- for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++)
+ for (lvl = 0; lvl <= pfvf->hw.txschq_link_cfg_lvl; lvl++)
req->schq[lvl] = 1;
rc = otx2_sync_mbox_msg(&pfvf->mbox);
@@ -83,7 +83,7 @@ static int otx2_pfc_txschq_alloc_one(struct otx2_nic *pfvf, u8 prio)
return PTR_ERR(rsp);
/* Setup transmit scheduler list */
- for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++) {
+ for (lvl = 0; lvl <= pfvf->hw.txschq_link_cfg_lvl; lvl++) {
if (!rsp->schq[lvl])
return -ENOSPC;
@@ -128,7 +128,7 @@ static int otx2_pfc_txschq_stop_one(struct otx2_nic *pfvf, u8 prio)
int lvl;
/* free PFC TLx nodes */
- for (lvl = 0; lvl < pfvf->hw.txschq_link_cfg_lvl; lvl++)
+ for (lvl = 0; lvl <= pfvf->hw.txschq_link_cfg_lvl; lvl++)
otx2_txschq_free_one(pfvf, lvl,
pfvf->pfc_schq_list[lvl][prio]);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 208/600] sfc: Check firmware supports Ethernet PTP filter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (206 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 207/600] cteonxt2-pf: Fix backpressure config for multiple PFC priorities to work simultaneously Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 209/600] net/sched: sch_hfsc: Ensure inner classes have fsc curve Greg Kroah-Hartman
` (402 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alex Austin, Edward Cree,
Pieter Jansen van Vuuren, Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Austin <alex.austin@amd.com>
[ Upstream commit c4413a20fa6d7c4888009fb7dd391685f196cd36 ]
Not all firmware variants support RSS filters. Do not fail all PTP
functionality when raw ethernet PTP filters fail to insert.
Fixes: e4616f64726b ("sfc: support PTP over Ethernet")
Signed-off-by: Alex Austin <alex.austin@amd.com>
Acked-by: Edward Cree <ecree.xilinx@gmail.com>
Reviewed-by: Pieter Jansen van Vuuren <pieter.jansen-van-vuuren@amd.com>
Link: https://lore.kernel.org/r/20230824164657.42379-1-alex.austin@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/sfc/ptp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c
index eaef4a15008a3..692c7f132e9f9 100644
--- a/drivers/net/ethernet/sfc/ptp.c
+++ b/drivers/net/ethernet/sfc/ptp.c
@@ -1387,7 +1387,8 @@ static int efx_ptp_insert_multicast_filters(struct efx_nic *efx)
goto fail;
rc = efx_ptp_insert_eth_filter(efx);
- if (rc < 0)
+ /* Not all firmware variants support this filter */
+ if (rc < 0 && rc != -EPROTONOSUPPORT)
goto fail;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 209/600] net/sched: sch_hfsc: Ensure inner classes have fsc curve
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (207 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 208/600] sfc: Check firmware supports Ethernet PTP filter Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 210/600] netrom: Deny concurrent connect() Greg Kroah-Hartman
` (401 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Budimir Markovic, Jamal Hadi Salim,
Jakub Kicinski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Budimir Markovic <markovicbudimir@gmail.com>
[ Upstream commit b3d26c5702c7d6c45456326e56d2ccf3f103e60f ]
HFSC assumes that inner classes have an fsc curve, but it is currently
possible for classes without an fsc curve to become parents. This leads
to bugs including a use-after-free.
Don't allow non-root classes without HFSC_FSC to become parents.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: Budimir Markovic <markovicbudimir@gmail.com>
Signed-off-by: Budimir Markovic <markovicbudimir@gmail.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20230824084905.422-1-markovicbudimir@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/sched/sch_hfsc.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index 70b0c5873d326..61d52594ff6d8 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -1012,6 +1012,10 @@ hfsc_change_class(struct Qdisc *sch, u32 classid, u32 parentid,
if (parent == NULL)
return -ENOENT;
}
+ if (!(parent->cl_flags & HFSC_FSC) && parent != &q->root) {
+ NL_SET_ERR_MSG(extack, "Invalid parent - parent class must have FSC");
+ return -EINVAL;
+ }
if (classid == 0 || TC_H_MAJ(classid ^ sch->handle) != 0)
return -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 210/600] netrom: Deny concurrent connect().
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (208 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 209/600] net/sched: sch_hfsc: Ensure inner classes have fsc curve Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 211/600] drm/bridge: tc358764: Fix debug print parameter order Greg Kroah-Hartman
` (400 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, syzbot+666c97e4686410e79649,
Kuniyuki Iwashima, David S. Miller, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kuniyuki Iwashima <kuniyu@amazon.com>
[ Upstream commit c2f8fd7949603efb03908e05abbf7726748c8de3 ]
syzkaller reported null-ptr-deref [0] related to AF_NETROM.
This is another self-accept issue from the strace log. [1]
syz-executor creates an AF_NETROM socket and calls connect(), which
is blocked at that time. Then, sk->sk_state is TCP_SYN_SENT and
sock->state is SS_CONNECTING.
[pid 5059] socket(AF_NETROM, SOCK_SEQPACKET, 0) = 4
[pid 5059] connect(4, {sa_family=AF_NETROM, sa_data="..." <unfinished ...>
Another thread calls connect() concurrently, which finally fails
with -EINVAL. However, the problem here is the socket state is
reset even while the first connect() is blocked.
[pid 5060] connect(4, NULL, 0 <unfinished ...>
[pid 5060] <... connect resumed>) = -1 EINVAL (Invalid argument)
As sk->state is TCP_CLOSE and sock->state is SS_UNCONNECTED, the
following listen() succeeds. Then, the first connect() looks up
itself as a listener and puts skb into the queue with skb->sk itself.
As a result, the next accept() gets another FD of itself as 3, and
the first connect() finishes.
[pid 5060] listen(4, 0 <unfinished ...>
[pid 5060] <... listen resumed>) = 0
[pid 5060] accept(4, NULL, NULL <unfinished ...>
[pid 5060] <... accept resumed>) = 3
[pid 5059] <... connect resumed>) = 0
Then, accept4() is called but blocked, which causes the general protection
fault later.
[pid 5059] accept4(4, NULL, 0x20000400, SOCK_NONBLOCK <unfinished ...>
After that, another self-accept occurs by accept() and writev().
[pid 5060] accept(4, NULL, NULL <unfinished ...>
[pid 5061] writev(3, [{iov_base=...}] <unfinished ...>
[pid 5061] <... writev resumed>) = 99
[pid 5060] <... accept resumed>) = 6
Finally, the leader thread close()s all FDs. Since the three FDs
reference the same socket, nr_release() does the cleanup for it
three times, and the remaining accept4() causes the following fault.
[pid 5058] close(3) = 0
[pid 5058] close(4) = 0
[pid 5058] close(5) = -1 EBADF (Bad file descriptor)
[pid 5058] close(6) = 0
[pid 5058] <... exit_group resumed>) = ?
[ 83.456055][ T5059] general protection fault, probably for non-canonical address 0xdffffc0000000003: 0000 [#1] PREEMPT SMP KASAN
To avoid the issue, we need to return an error for connect() if
another connect() is in progress, as done in __inet_stream_connect().
[0]:
general protection fault, probably for non-canonical address 0xdffffc0000000003: 0000 [#1] PREEMPT SMP KASAN
KASAN: null-ptr-deref in range [0x0000000000000018-0x000000000000001f]
CPU: 0 PID: 5059 Comm: syz-executor.0 Not tainted 6.5.0-rc5-syzkaller-00194-gace0ab3a4b54 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/26/2023
RIP: 0010:__lock_acquire+0x109/0x5de0 kernel/locking/lockdep.c:5012
Code: 45 85 c9 0f 84 cc 0e 00 00 44 8b 05 11 6e 23 0b 45 85 c0 0f 84 be 0d 00 00 48 ba 00 00 00 00 00 fc ff df 4c 89 d1 48 c1 e9 03 <80> 3c 11 00 0f 85 e8 40 00 00 49 81 3a a0 69 48 90 0f 84 96 0d 00
RSP: 0018:ffffc90003d6f9e0 EFLAGS: 00010006
RAX: ffff8880244c8000 RBX: 1ffff920007adf6c RCX: 0000000000000003
RDX: dffffc0000000000 RSI: 0000000000000000 RDI: 0000000000000018
RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001
R10: 0000000000000018 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
FS: 00007f51d519a6c0(0000) GS:ffff8880b9800000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f51d5158d58 CR3: 000000002943f000 CR4: 00000000003506f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
lock_acquire kernel/locking/lockdep.c:5761 [inline]
lock_acquire+0x1ae/0x510 kernel/locking/lockdep.c:5726
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x3a/0x50 kernel/locking/spinlock.c:162
prepare_to_wait+0x47/0x380 kernel/sched/wait.c:269
nr_accept+0x20d/0x650 net/netrom/af_netrom.c:798
do_accept+0x3a6/0x570 net/socket.c:1872
__sys_accept4_file net/socket.c:1913 [inline]
__sys_accept4+0x99/0x120 net/socket.c:1943
__do_sys_accept4 net/socket.c:1954 [inline]
__se_sys_accept4 net/socket.c:1951 [inline]
__x64_sys_accept4+0x96/0x100 net/socket.c:1951
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x38/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7f51d447cae9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 e1 20 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f51d519a0c8 EFLAGS: 00000246 ORIG_RAX: 0000000000000120
RAX: ffffffffffffffda RBX: 00007f51d459bf80 RCX: 00007f51d447cae9
RDX: 0000000020000400 RSI: 0000000000000000 RDI: 0000000000000004
RBP: 00007f51d44c847a R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000800 R11: 0000000000000246 R12: 0000000000000000
R13: 000000000000000b R14: 00007f51d459bf80 R15: 00007ffc25c34e48
</TASK>
Link: https://syzkaller.appspot.com/text?tag=CrashLog&x=152cdb63a80000 [1]
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-by: syzbot+666c97e4686410e79649@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=666c97e4686410e79649
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
net/netrom/af_netrom.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/net/netrom/af_netrom.c b/net/netrom/af_netrom.c
index 5a4cb796150f5..ec5747969f964 100644
--- a/net/netrom/af_netrom.c
+++ b/net/netrom/af_netrom.c
@@ -660,6 +660,11 @@ static int nr_connect(struct socket *sock, struct sockaddr *uaddr,
goto out_release;
}
+ if (sock->state == SS_CONNECTING) {
+ err = -EALREADY;
+ goto out_release;
+ }
+
sk->sk_state = TCP_CLOSE;
sock->state = SS_UNCONNECTED;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 211/600] drm/bridge: tc358764: Fix debug print parameter order
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (209 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 210/600] netrom: Deny concurrent connect() Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 212/600] ASoC: cs43130: Fix numerator/denominator mixup Greg Kroah-Hartman
` (399 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Marek Vasut, Robert Foss,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 7f947be02aab5b154427cb5b0fffe858fc387b02 ]
The debug print parameters were swapped in the output and they were
printed as decimal values, both the hardware address and the value.
Update the debug print to print the parameters in correct order, and
use hexadecimal print for both address and value.
Fixes: f38b7cca6d0e ("drm/bridge: tc358764: Add DSI to LVDS bridge driver")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Robert Foss <rfoss@kernel.org>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230615152817.359420-1-marex@denx.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/bridge/tc358764.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/bridge/tc358764.c b/drivers/gpu/drm/bridge/tc358764.c
index 53259c12d7778..e0f583a88789d 100644
--- a/drivers/gpu/drm/bridge/tc358764.c
+++ b/drivers/gpu/drm/bridge/tc358764.c
@@ -176,7 +176,7 @@ static void tc358764_read(struct tc358764 *ctx, u16 addr, u32 *val)
if (ret >= 0)
le32_to_cpus(val);
- dev_dbg(ctx->dev, "read: %d, addr: %d\n", addr, *val);
+ dev_dbg(ctx->dev, "read: addr=0x%04x data=0x%08x\n", addr, *val);
}
static void tc358764_write(struct tc358764 *ctx, u16 addr, u32 val)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 212/600] ASoC: cs43130: Fix numerator/denominator mixup
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (210 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 211/600] drm/bridge: tc358764: Fix debug print parameter order Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller Greg Kroah-Hartman
` (398 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Phil Elwell, Andy Shevchenko,
Charles Keepax, Mark Brown, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Phil Elwell <phil@raspberrypi.com>
[ Upstream commit a9e7c964cea4fb1541cc81a11d1b2fd135f4cf38 ]
In converting to using the standard u16_fract type, commit [1] made the
obvious mistake and failed to take account of the difference in
numerator and denominator ordering, breaking all uses of the cs43130
codec.
Fix it.
[1] commit e14bd35ef446 ("ASoC: cs43130: Re-use generic struct u16_fract")
Fixes: e14bd35ef446 ("ASoC: cs43130: Re-use generic struct u16_fract")
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230621153229.1944132-1-phil@raspberrypi.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/cs43130.h | 138 ++++++++++++++++++-------------------
1 file changed, 69 insertions(+), 69 deletions(-)
diff --git a/sound/soc/codecs/cs43130.h b/sound/soc/codecs/cs43130.h
index 1dd8936743132..90e8895275e77 100644
--- a/sound/soc/codecs/cs43130.h
+++ b/sound/soc/codecs/cs43130.h
@@ -381,88 +381,88 @@ struct cs43130_clk_gen {
/* frm_size = 16 */
static const struct cs43130_clk_gen cs43130_16_clk_gen[] = {
- { 22579200, 32000, .v = { 441, 10, }, },
- { 22579200, 44100, .v = { 32, 1, }, },
- { 22579200, 48000, .v = { 147, 5, }, },
- { 22579200, 88200, .v = { 16, 1, }, },
- { 22579200, 96000, .v = { 147, 10, }, },
- { 22579200, 176400, .v = { 8, 1, }, },
- { 22579200, 192000, .v = { 147, 20, }, },
- { 22579200, 352800, .v = { 4, 1, }, },
- { 22579200, 384000, .v = { 147, 40, }, },
- { 24576000, 32000, .v = { 48, 1, }, },
- { 24576000, 44100, .v = { 5120, 147, }, },
- { 24576000, 48000, .v = { 32, 1, }, },
- { 24576000, 88200, .v = { 2560, 147, }, },
- { 24576000, 96000, .v = { 16, 1, }, },
- { 24576000, 176400, .v = { 1280, 147, }, },
- { 24576000, 192000, .v = { 8, 1, }, },
- { 24576000, 352800, .v = { 640, 147, }, },
- { 24576000, 384000, .v = { 4, 1, }, },
+ { 22579200, 32000, .v = { 10, 441, }, },
+ { 22579200, 44100, .v = { 1, 32, }, },
+ { 22579200, 48000, .v = { 5, 147, }, },
+ { 22579200, 88200, .v = { 1, 16, }, },
+ { 22579200, 96000, .v = { 10, 147, }, },
+ { 22579200, 176400, .v = { 1, 8, }, },
+ { 22579200, 192000, .v = { 20, 147, }, },
+ { 22579200, 352800, .v = { 1, 4, }, },
+ { 22579200, 384000, .v = { 40, 147, }, },
+ { 24576000, 32000, .v = { 1, 48, }, },
+ { 24576000, 44100, .v = { 147, 5120, }, },
+ { 24576000, 48000, .v = { 1, 32, }, },
+ { 24576000, 88200, .v = { 147, 2560, }, },
+ { 24576000, 96000, .v = { 1, 16, }, },
+ { 24576000, 176400, .v = { 147, 1280, }, },
+ { 24576000, 192000, .v = { 1, 8, }, },
+ { 24576000, 352800, .v = { 147, 640, }, },
+ { 24576000, 384000, .v = { 1, 4, }, },
};
/* frm_size = 32 */
static const struct cs43130_clk_gen cs43130_32_clk_gen[] = {
- { 22579200, 32000, .v = { 441, 20, }, },
- { 22579200, 44100, .v = { 16, 1, }, },
- { 22579200, 48000, .v = { 147, 10, }, },
- { 22579200, 88200, .v = { 8, 1, }, },
- { 22579200, 96000, .v = { 147, 20, }, },
- { 22579200, 176400, .v = { 4, 1, }, },
- { 22579200, 192000, .v = { 147, 40, }, },
- { 22579200, 352800, .v = { 2, 1, }, },
- { 22579200, 384000, .v = { 147, 80, }, },
- { 24576000, 32000, .v = { 24, 1, }, },
- { 24576000, 44100, .v = { 2560, 147, }, },
- { 24576000, 48000, .v = { 16, 1, }, },
- { 24576000, 88200, .v = { 1280, 147, }, },
- { 24576000, 96000, .v = { 8, 1, }, },
- { 24576000, 176400, .v = { 640, 147, }, },
- { 24576000, 192000, .v = { 4, 1, }, },
- { 24576000, 352800, .v = { 320, 147, }, },
- { 24576000, 384000, .v = { 2, 1, }, },
+ { 22579200, 32000, .v = { 20, 441, }, },
+ { 22579200, 44100, .v = { 1, 16, }, },
+ { 22579200, 48000, .v = { 10, 147, }, },
+ { 22579200, 88200, .v = { 1, 8, }, },
+ { 22579200, 96000, .v = { 20, 147, }, },
+ { 22579200, 176400, .v = { 1, 4, }, },
+ { 22579200, 192000, .v = { 40, 147, }, },
+ { 22579200, 352800, .v = { 1, 2, }, },
+ { 22579200, 384000, .v = { 80, 147, }, },
+ { 24576000, 32000, .v = { 1, 24, }, },
+ { 24576000, 44100, .v = { 147, 2560, }, },
+ { 24576000, 48000, .v = { 1, 16, }, },
+ { 24576000, 88200, .v = { 147, 1280, }, },
+ { 24576000, 96000, .v = { 1, 8, }, },
+ { 24576000, 176400, .v = { 147, 640, }, },
+ { 24576000, 192000, .v = { 1, 4, }, },
+ { 24576000, 352800, .v = { 147, 320, }, },
+ { 24576000, 384000, .v = { 1, 2, }, },
};
/* frm_size = 48 */
static const struct cs43130_clk_gen cs43130_48_clk_gen[] = {
- { 22579200, 32000, .v = { 147, 100, }, },
- { 22579200, 44100, .v = { 32, 3, }, },
- { 22579200, 48000, .v = { 49, 5, }, },
- { 22579200, 88200, .v = { 16, 3, }, },
- { 22579200, 96000, .v = { 49, 10, }, },
- { 22579200, 176400, .v = { 8, 3, }, },
- { 22579200, 192000, .v = { 49, 20, }, },
- { 22579200, 352800, .v = { 4, 3, }, },
- { 22579200, 384000, .v = { 49, 40, }, },
- { 24576000, 32000, .v = { 16, 1, }, },
- { 24576000, 44100, .v = { 5120, 441, }, },
- { 24576000, 48000, .v = { 32, 3, }, },
- { 24576000, 88200, .v = { 2560, 441, }, },
- { 24576000, 96000, .v = { 16, 3, }, },
- { 24576000, 176400, .v = { 1280, 441, }, },
- { 24576000, 192000, .v = { 8, 3, }, },
- { 24576000, 352800, .v = { 640, 441, }, },
- { 24576000, 384000, .v = { 4, 3, }, },
+ { 22579200, 32000, .v = { 100, 147, }, },
+ { 22579200, 44100, .v = { 3, 32, }, },
+ { 22579200, 48000, .v = { 5, 49, }, },
+ { 22579200, 88200, .v = { 3, 16, }, },
+ { 22579200, 96000, .v = { 10, 49, }, },
+ { 22579200, 176400, .v = { 3, 8, }, },
+ { 22579200, 192000, .v = { 20, 49, }, },
+ { 22579200, 352800, .v = { 3, 4, }, },
+ { 22579200, 384000, .v = { 40, 49, }, },
+ { 24576000, 32000, .v = { 1, 16, }, },
+ { 24576000, 44100, .v = { 441, 5120, }, },
+ { 24576000, 48000, .v = { 3, 32, }, },
+ { 24576000, 88200, .v = { 441, 2560, }, },
+ { 24576000, 96000, .v = { 3, 16, }, },
+ { 24576000, 176400, .v = { 441, 1280, }, },
+ { 24576000, 192000, .v = { 3, 8, }, },
+ { 24576000, 352800, .v = { 441, 640, }, },
+ { 24576000, 384000, .v = { 3, 4, }, },
};
/* frm_size = 64 */
static const struct cs43130_clk_gen cs43130_64_clk_gen[] = {
- { 22579200, 32000, .v = { 441, 40, }, },
- { 22579200, 44100, .v = { 8, 1, }, },
- { 22579200, 48000, .v = { 147, 20, }, },
- { 22579200, 88200, .v = { 4, 1, }, },
- { 22579200, 96000, .v = { 147, 40, }, },
- { 22579200, 176400, .v = { 2, 1, }, },
- { 22579200, 192000, .v = { 147, 80, }, },
+ { 22579200, 32000, .v = { 40, 441, }, },
+ { 22579200, 44100, .v = { 1, 8, }, },
+ { 22579200, 48000, .v = { 20, 147, }, },
+ { 22579200, 88200, .v = { 1, 4, }, },
+ { 22579200, 96000, .v = { 40, 147, }, },
+ { 22579200, 176400, .v = { 1, 2, }, },
+ { 22579200, 192000, .v = { 80, 147, }, },
{ 22579200, 352800, .v = { 1, 1, }, },
- { 24576000, 32000, .v = { 12, 1, }, },
- { 24576000, 44100, .v = { 1280, 147, }, },
- { 24576000, 48000, .v = { 8, 1, }, },
- { 24576000, 88200, .v = { 640, 147, }, },
- { 24576000, 96000, .v = { 4, 1, }, },
- { 24576000, 176400, .v = { 320, 147, }, },
- { 24576000, 192000, .v = { 2, 1, }, },
- { 24576000, 352800, .v = { 160, 147, }, },
+ { 24576000, 32000, .v = { 1, 12, }, },
+ { 24576000, 44100, .v = { 147, 1280, }, },
+ { 24576000, 48000, .v = { 1, 8, }, },
+ { 24576000, 88200, .v = { 147, 640, }, },
+ { 24576000, 96000, .v = { 1, 4, }, },
+ { 24576000, 176400, .v = { 147, 320, }, },
+ { 24576000, 192000, .v = { 1, 2, }, },
+ { 24576000, 352800, .v = { 147, 160, }, },
{ 24576000, 384000, .v = { 1, 1, }, },
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (211 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 212/600] ASoC: cs43130: Fix numerator/denominator mixup Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 15:49 ` Ondřej Jirman
2023-09-11 13:44 ` [PATCH 6.1 214/600] quota: factor out dquot_write_dquot() Greg Kroah-Hartman
` (397 subsequent siblings)
610 siblings, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ondrej Jirman, Sam Ravnborg,
Robert Foss, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ondrej Jirman <megi@xff.cz>
[ Upstream commit 05aa61334592adb230749ff465b103ee10e63936 ]
Before this patch, booting to Linux VT and doing a simple:
echo 2 > /sys/class/graphics/fb0/blank
echo 0 > /sys/class/graphics/fb0/blank
would result in failures to re-enable the panel. Mode set callback is
called only once during boot in this scenario, while calls to
enable/disable callbacks are balanced afterwards. The driver doesn't
work unless userspace calls modeset before enabling the CRTC/connector.
This patch moves enabling of the DSI host from mode_set into pre_enable
callback, and removes some old hacks where this bridge driver is
directly calling into other bridge driver's callbacks.
pre_enable_prev_first flag is set on the panel's bridge so that panel
drivers will get their prepare function called between DSI host's
pre_enable and enable callbacks, so that they get a chance to
perform panel setup while DSI host is already enabled in command
mode. Otherwise panel's prepare would be called before DSI host
is enabled, and any DSI communication used in prepare callback
would fail.
With all these changes, the enable/disable sequence is now well
balanced, and host's and panel's callbacks are called in proper order
documented in the drm_panel API documentation without needing the old
hacks. (Mainly that panel->prepare is called when DSI host is ready to
allow the panel driver to send DSI commands and vice versa during
disable.)
Tested on Pinephone Pro. Trace of the callbacks follows.
Before:
[ 1.253882] dw-mipi-dsi-rockchip ff960000.dsi: mode_set
[ 1.290732] panel-himax-hx8394 ff960000.dsi.0: prepare
[ 1.475576] dw-mipi-dsi-rockchip ff960000.dsi: enable
[ 1.475593] panel-himax-hx8394 ff960000.dsi.0: enable
echo 2 > /sys/class/graphics/fb0/blank
[ 13.722799] panel-himax-hx8394 ff960000.dsi.0: disable
[ 13.774502] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
[ 13.774526] panel-himax-hx8394 ff960000.dsi.0: unprepare
echo 0 > /sys/class/graphics/fb0/blank
[ 17.735796] panel-himax-hx8394 ff960000.dsi.0: prepare
[ 17.923522] dw-mipi-dsi-rockchip ff960000.dsi: enable
[ 17.923540] panel-himax-hx8394 ff960000.dsi.0: enable
[ 17.944330] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
[ 17.944335] panel-himax-hx8394 ff960000.dsi.0: sending command 0xb9 failed: -110
[ 17.944340] panel-himax-hx8394 ff960000.dsi.0: Panel init sequence failed: -110
echo 2 > /sys/class/graphics/fb0/blank
[ 431.148583] panel-himax-hx8394 ff960000.dsi.0: disable
[ 431.169259] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
[ 431.169268] panel-himax-hx8394 ff960000.dsi.0: Failed to enter sleep mode: -110
[ 431.169282] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
[ 431.169316] panel-himax-hx8394 ff960000.dsi.0: unprepare
[ 431.169357] pclk_mipi_dsi0 already disabled
echo 0 > /sys/class/graphics/fb0/blank
[ 432.796851] panel-himax-hx8394 ff960000.dsi.0: prepare
[ 432.981537] dw-mipi-dsi-rockchip ff960000.dsi: enable
[ 432.981568] panel-himax-hx8394 ff960000.dsi.0: enable
[ 433.002290] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
[ 433.002299] panel-himax-hx8394 ff960000.dsi.0: sending command 0xb9 failed: -110
[ 433.002312] panel-himax-hx8394 ff960000.dsi.0: Panel init sequence failed: -110
-----------------------------------------------------------------------
After:
[ 1.248372] dw-mipi-dsi-rockchip ff960000.dsi: mode_set
[ 1.248704] dw-mipi-dsi-rockchip ff960000.dsi: pre_enable
[ 1.285377] panel-himax-hx8394 ff960000.dsi.0: prepare
[ 1.468392] dw-mipi-dsi-rockchip ff960000.dsi: enable
[ 1.468421] panel-himax-hx8394 ff960000.dsi.0: enable
echo 2 > /sys/class/graphics/fb0/blank
[ 16.210357] panel-himax-hx8394 ff960000.dsi.0: disable
[ 16.261315] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
[ 16.261339] panel-himax-hx8394 ff960000.dsi.0: unprepare
echo 0 > /sys/class/graphics/fb0/blank
[ 19.161453] dw-mipi-dsi-rockchip ff960000.dsi: pre_enable
[ 19.197869] panel-himax-hx8394 ff960000.dsi.0: prepare
[ 19.382141] dw-mipi-dsi-rockchip ff960000.dsi: enable
[ 19.382158] panel-himax-hx8394 ff960000.dsi.0: enable
(But depends on functionality intorduced in Linux 6.3, so this patch will
not build on older kernels when applied to older stable branches.)
Fixes: 46fc51546d44 ("drm/bridge/synopsys: Add MIPI DSI host controller bridge")
Signed-off-by: Ondrej Jirman <megi@xff.cz>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230617224915.1923630-1-megi@xff.cz
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 28 +++++++++++--------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
index b2efecf7d1603..4291798bd70f5 100644
--- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
+++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
@@ -265,6 +265,7 @@ struct dw_mipi_dsi {
struct dw_mipi_dsi *master; /* dual-dsi master ptr */
struct dw_mipi_dsi *slave; /* dual-dsi slave ptr */
+ struct drm_display_mode mode;
const struct dw_mipi_dsi_plat_data *plat_data;
};
@@ -332,6 +333,7 @@ static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host,
if (IS_ERR(bridge))
return PTR_ERR(bridge);
+ bridge->pre_enable_prev_first = true;
dsi->panel_bridge = bridge;
drm_bridge_add(&dsi->bridge);
@@ -859,15 +861,6 @@ static void dw_mipi_dsi_bridge_post_atomic_disable(struct drm_bridge *bridge,
*/
dw_mipi_dsi_set_mode(dsi, 0);
- /*
- * TODO Only way found to call panel-bridge post_disable &
- * panel unprepare before the dsi "final" disable...
- * This needs to be fixed in the drm_bridge framework and the API
- * needs to be updated to manage our own call chains...
- */
- if (dsi->panel_bridge->funcs->post_disable)
- dsi->panel_bridge->funcs->post_disable(dsi->panel_bridge);
-
if (phy_ops->power_off)
phy_ops->power_off(dsi->plat_data->priv_data);
@@ -942,15 +935,25 @@ static void dw_mipi_dsi_mode_set(struct dw_mipi_dsi *dsi,
phy_ops->power_on(dsi->plat_data->priv_data);
}
+static void dw_mipi_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge,
+ struct drm_bridge_state *old_bridge_state)
+{
+ struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
+
+ /* Power up the dsi ctl into a command mode */
+ dw_mipi_dsi_mode_set(dsi, &dsi->mode);
+ if (dsi->slave)
+ dw_mipi_dsi_mode_set(dsi->slave, &dsi->mode);
+}
+
static void dw_mipi_dsi_bridge_mode_set(struct drm_bridge *bridge,
const struct drm_display_mode *mode,
const struct drm_display_mode *adjusted_mode)
{
struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
- dw_mipi_dsi_mode_set(dsi, adjusted_mode);
- if (dsi->slave)
- dw_mipi_dsi_mode_set(dsi->slave, adjusted_mode);
+ /* Store the display mode for later use in pre_enable callback */
+ drm_mode_copy(&dsi->mode, adjusted_mode);
}
static void dw_mipi_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
@@ -1004,6 +1007,7 @@ static const struct drm_bridge_funcs dw_mipi_dsi_bridge_funcs = {
.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
.atomic_reset = drm_atomic_helper_bridge_reset,
+ .atomic_pre_enable = dw_mipi_dsi_bridge_atomic_pre_enable,
.atomic_enable = dw_mipi_dsi_bridge_atomic_enable,
.atomic_post_disable = dw_mipi_dsi_bridge_post_atomic_disable,
.mode_set = dw_mipi_dsi_bridge_mode_set,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 214/600] quota: factor out dquot_write_dquot()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (212 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 215/600] quota: rename dquot_active() to inode_quota_active() Greg Kroah-Hartman
` (396 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Baokun Li, Jan Kara, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit 024128477809f8073d870307c8157b8826ebfd08 ]
Refactor out dquot_write_dquot() to reduce duplicate code.
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230630110822.3881712-2-libaokun1@huawei.com>
Stable-dep-of: dabc8b207566 ("quota: fix dqput() to follow the guarantees dquot_srcu should provide")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/quota/dquot.c | 39 ++++++++++++++++-----------------------
1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 46dca88d89c36..5541960ad0252 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -628,6 +628,18 @@ int dquot_scan_active(struct super_block *sb,
}
EXPORT_SYMBOL(dquot_scan_active);
+static inline int dquot_write_dquot(struct dquot *dquot)
+{
+ int ret = dquot->dq_sb->dq_op->write_dquot(dquot);
+ if (ret < 0) {
+ quota_error(dquot->dq_sb, "Can't write quota structure "
+ "(error %d). Quota may get out of sync!", ret);
+ /* Clear dirty bit anyway to avoid infinite loop. */
+ clear_dquot_dirty(dquot);
+ }
+ return ret;
+}
+
/* Write all dquot structures to quota files */
int dquot_writeback_dquots(struct super_block *sb, int type)
{
@@ -658,16 +670,9 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
* use count */
dqgrab(dquot);
spin_unlock(&dq_list_lock);
- err = sb->dq_op->write_dquot(dquot);
- if (err) {
- /*
- * Clear dirty bit anyway to avoid infinite
- * loop here.
- */
- clear_dquot_dirty(dquot);
- if (!ret)
- ret = err;
- }
+ err = dquot_write_dquot(dquot);
+ if (err && !ret)
+ ret = err;
dqput(dquot);
spin_lock(&dq_list_lock);
}
@@ -765,8 +770,6 @@ static struct shrinker dqcache_shrinker = {
*/
void dqput(struct dquot *dquot)
{
- int ret;
-
if (!dquot)
return;
#ifdef CONFIG_QUOTA_DEBUG
@@ -794,17 +797,7 @@ void dqput(struct dquot *dquot)
if (dquot_dirty(dquot)) {
spin_unlock(&dq_list_lock);
/* Commit dquot before releasing */
- ret = dquot->dq_sb->dq_op->write_dquot(dquot);
- if (ret < 0) {
- quota_error(dquot->dq_sb, "Can't write quota structure"
- " (error %d). Quota may get out of sync!",
- ret);
- /*
- * We clear dirty bit anyway, so that we avoid
- * infinite loop here
- */
- clear_dquot_dirty(dquot);
- }
+ dquot_write_dquot(dquot);
goto we_slept;
}
if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 215/600] quota: rename dquot_active() to inode_quota_active()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (213 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 214/600] quota: factor out dquot_write_dquot() Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 216/600] quota: add new helper dquot_active() Greg Kroah-Hartman
` (395 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Baokun Li, Jan Kara, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit 4b9bdfa16535de8f49bf954aeed0f525ee2fc322 ]
Now we have a helper function dquot_dirty() to determine if dquot has
DQ_MOD_B bit. dquot_active() can easily be misunderstood as a helper
function to determine if dquot has DQ_ACTIVE_B bit. So we avoid this by
renaming it to inode_quota_active() and later on we will add the helper
function dquot_active() to determine if dquot has DQ_ACTIVE_B bit.
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230630110822.3881712-3-libaokun1@huawei.com>
Stable-dep-of: dabc8b207566 ("quota: fix dqput() to follow the guarantees dquot_srcu should provide")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/quota/dquot.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 5541960ad0252..f9f0610b504df 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1418,7 +1418,7 @@ static int info_bdq_free(struct dquot *dquot, qsize_t space)
return QUOTA_NL_NOWARN;
}
-static int dquot_active(const struct inode *inode)
+static int inode_quota_active(const struct inode *inode)
{
struct super_block *sb = inode->i_sb;
@@ -1441,7 +1441,7 @@ static int __dquot_initialize(struct inode *inode, int type)
qsize_t rsv;
int ret = 0;
- if (!dquot_active(inode))
+ if (!inode_quota_active(inode))
return 0;
dquots = i_dquot(inode);
@@ -1549,7 +1549,7 @@ bool dquot_initialize_needed(struct inode *inode)
struct dquot **dquots;
int i;
- if (!dquot_active(inode))
+ if (!inode_quota_active(inode))
return false;
dquots = i_dquot(inode);
@@ -1660,7 +1660,7 @@ int __dquot_alloc_space(struct inode *inode, qsize_t number, int flags)
int reserve = flags & DQUOT_SPACE_RESERVE;
struct dquot **dquots;
- if (!dquot_active(inode)) {
+ if (!inode_quota_active(inode)) {
if (reserve) {
spin_lock(&inode->i_lock);
*inode_reserved_space(inode) += number;
@@ -1730,7 +1730,7 @@ int dquot_alloc_inode(struct inode *inode)
struct dquot_warn warn[MAXQUOTAS];
struct dquot * const *dquots;
- if (!dquot_active(inode))
+ if (!inode_quota_active(inode))
return 0;
for (cnt = 0; cnt < MAXQUOTAS; cnt++)
warn[cnt].w_type = QUOTA_NL_NOWARN;
@@ -1773,7 +1773,7 @@ int dquot_claim_space_nodirty(struct inode *inode, qsize_t number)
struct dquot **dquots;
int cnt, index;
- if (!dquot_active(inode)) {
+ if (!inode_quota_active(inode)) {
spin_lock(&inode->i_lock);
*inode_reserved_space(inode) -= number;
__inode_add_bytes(inode, number);
@@ -1815,7 +1815,7 @@ void dquot_reclaim_space_nodirty(struct inode *inode, qsize_t number)
struct dquot **dquots;
int cnt, index;
- if (!dquot_active(inode)) {
+ if (!inode_quota_active(inode)) {
spin_lock(&inode->i_lock);
*inode_reserved_space(inode) += number;
__inode_sub_bytes(inode, number);
@@ -1859,7 +1859,7 @@ void __dquot_free_space(struct inode *inode, qsize_t number, int flags)
struct dquot **dquots;
int reserve = flags & DQUOT_SPACE_RESERVE, index;
- if (!dquot_active(inode)) {
+ if (!inode_quota_active(inode)) {
if (reserve) {
spin_lock(&inode->i_lock);
*inode_reserved_space(inode) -= number;
@@ -1914,7 +1914,7 @@ void dquot_free_inode(struct inode *inode)
struct dquot * const *dquots;
int index;
- if (!dquot_active(inode))
+ if (!inode_quota_active(inode))
return;
dquots = i_dquot(inode);
@@ -2086,7 +2086,7 @@ int dquot_transfer(struct user_namespace *mnt_userns, struct inode *inode,
struct super_block *sb = inode->i_sb;
int ret;
- if (!dquot_active(inode))
+ if (!inode_quota_active(inode))
return 0;
if (i_uid_needs_update(mnt_userns, iattr, inode)) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 216/600] quota: add new helper dquot_active()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (214 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 215/600] quota: rename dquot_active() to inode_quota_active() Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 217/600] quota: fix dqput() to follow the guarantees dquot_srcu should provide Greg Kroah-Hartman
` (394 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Baokun Li, Jan Kara, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit 33bcfafc48cb186bc4bbcea247feaa396594229e ]
Add new helper function dquot_active() to make the code more concise.
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230630110822.3881712-4-libaokun1@huawei.com>
Stable-dep-of: dabc8b207566 ("quota: fix dqput() to follow the guarantees dquot_srcu should provide")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/quota/dquot.c | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index f9f0610b504df..e4a19a893d85c 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -336,6 +336,11 @@ static void wait_on_dquot(struct dquot *dquot)
mutex_unlock(&dquot->dq_lock);
}
+static inline int dquot_active(struct dquot *dquot)
+{
+ return test_bit(DQ_ACTIVE_B, &dquot->dq_flags);
+}
+
static inline int dquot_dirty(struct dquot *dquot)
{
return test_bit(DQ_MOD_B, &dquot->dq_flags);
@@ -351,14 +356,14 @@ int dquot_mark_dquot_dirty(struct dquot *dquot)
{
int ret = 1;
- if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
+ if (!dquot_active(dquot))
return 0;
if (sb_dqopt(dquot->dq_sb)->flags & DQUOT_NOLIST_DIRTY)
return test_and_set_bit(DQ_MOD_B, &dquot->dq_flags);
/* If quota is dirty already, we don't have to acquire dq_list_lock */
- if (test_bit(DQ_MOD_B, &dquot->dq_flags))
+ if (dquot_dirty(dquot))
return 1;
spin_lock(&dq_list_lock);
@@ -440,7 +445,7 @@ int dquot_acquire(struct dquot *dquot)
smp_mb__before_atomic();
set_bit(DQ_READ_B, &dquot->dq_flags);
/* Instantiate dquot if needed */
- if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags) && !dquot->dq_off) {
+ if (!dquot_active(dquot) && !dquot->dq_off) {
ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot);
/* Write the info if needed */
if (info_dirty(&dqopt->info[dquot->dq_id.type])) {
@@ -482,7 +487,7 @@ int dquot_commit(struct dquot *dquot)
goto out_lock;
/* Inactive dquot can be only if there was error during read/init
* => we have better not writing it */
- if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
+ if (dquot_active(dquot))
ret = dqopt->ops[dquot->dq_id.type]->commit_dqblk(dquot);
else
ret = -EIO;
@@ -597,7 +602,7 @@ int dquot_scan_active(struct super_block *sb,
spin_lock(&dq_list_lock);
list_for_each_entry(dquot, &inuse_list, dq_inuse) {
- if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags))
+ if (!dquot_active(dquot))
continue;
if (dquot->dq_sb != sb)
continue;
@@ -612,7 +617,7 @@ int dquot_scan_active(struct super_block *sb,
* outstanding call and recheck the DQ_ACTIVE_B after that.
*/
wait_on_dquot(dquot);
- if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) {
+ if (dquot_active(dquot)) {
ret = fn(dquot, priv);
if (ret < 0)
goto out;
@@ -663,7 +668,7 @@ int dquot_writeback_dquots(struct super_block *sb, int type)
dquot = list_first_entry(&dirty, struct dquot,
dq_dirty);
- WARN_ON(!test_bit(DQ_ACTIVE_B, &dquot->dq_flags));
+ WARN_ON(!dquot_active(dquot));
/* Now we have active dquot from which someone is
* holding reference so we can safely just increase
@@ -800,7 +805,7 @@ void dqput(struct dquot *dquot)
dquot_write_dquot(dquot);
goto we_slept;
}
- if (test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) {
+ if (dquot_active(dquot)) {
spin_unlock(&dq_list_lock);
dquot->dq_sb->dq_op->release_dquot(dquot);
goto we_slept;
@@ -901,7 +906,7 @@ struct dquot *dqget(struct super_block *sb, struct kqid qid)
* already finished or it will be canceled due to dq_count > 1 test */
wait_on_dquot(dquot);
/* Read the dquot / allocate space in quota file */
- if (!test_bit(DQ_ACTIVE_B, &dquot->dq_flags)) {
+ if (!dquot_active(dquot)) {
int err;
err = sb->dq_op->acquire_dquot(dquot);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 217/600] quota: fix dqput() to follow the guarantees dquot_srcu should provide
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (215 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 216/600] quota: add new helper dquot_active() Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 218/600] drm/amd/display: Do not set drr on pipe commit Greg Kroah-Hartman
` (393 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jan Kara, Baokun Li, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Baokun Li <libaokun1@huawei.com>
[ Upstream commit dabc8b20756601b9e1cc85a81d47d3f98ed4d13a ]
The dquot_mark_dquot_dirty() using dquot references from the inode
should be protected by dquot_srcu. quota_off code takes care to call
synchronize_srcu(&dquot_srcu) to not drop dquot references while they
are used by other users. But dquot_transfer() breaks this assumption.
We call dquot_transfer() to drop the last reference of dquot and add
it to free_dquots, but there may still be other users using the dquot
at this time, as shown in the function graph below:
cpu1 cpu2
_________________|_________________
wb_do_writeback CHOWN(1)
...
ext4_da_update_reserve_space
dquot_claim_block
...
dquot_mark_dquot_dirty // try to dirty old quota
test_bit(DQ_ACTIVE_B, &dquot->dq_flags) // still ACTIVE
if (test_bit(DQ_MOD_B, &dquot->dq_flags))
// test no dirty, wait dq_list_lock
...
dquot_transfer
__dquot_transfer
dqput_all(transfer_from) // rls old dquot
dqput // last dqput
dquot_release
clear_bit(DQ_ACTIVE_B, &dquot->dq_flags)
atomic_dec(&dquot->dq_count)
put_dquot_last(dquot)
list_add_tail(&dquot->dq_free, &free_dquots)
// add the dquot to free_dquots
if (!test_and_set_bit(DQ_MOD_B, &dquot->dq_flags))
add dqi_dirty_list // add released dquot to dirty_list
This can cause various issues, such as dquot being destroyed by
dqcache_shrink_scan() after being added to free_dquots, which can trigger
a UAF in dquot_mark_dquot_dirty(); or after dquot is added to free_dquots
and then to dirty_list, it is added to free_dquots again after
dquot_writeback_dquots() is executed, which causes the free_dquots list to
be corrupted and triggers a UAF when dqcache_shrink_scan() is called for
freeing dquot twice.
As Honza said, we need to fix dquot_transfer() to follow the guarantees
dquot_srcu should provide. But calling synchronize_srcu() directly from
dquot_transfer() is too expensive (and mostly unnecessary). So we add
dquot whose last reference should be dropped to the new global dquot
list releasing_dquots, and then queue work item which would call
synchronize_srcu() and after that perform the final cleanup of all the
dquots on releasing_dquots.
Fixes: 4580b30ea887 ("quota: Do not dirty bad dquots")
Suggested-by: Jan Kara <jack@suse.cz>
Signed-off-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230630110822.3881712-5-libaokun1@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/quota/dquot.c | 96 +++++++++++++++++++++++++++++++++++++++---------
1 file changed, 78 insertions(+), 18 deletions(-)
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index e4a19a893d85c..53b65c5300fde 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -225,13 +225,22 @@ static void put_quota_format(struct quota_format_type *fmt)
/*
* Dquot List Management:
- * The quota code uses four lists for dquot management: the inuse_list,
- * free_dquots, dqi_dirty_list, and dquot_hash[] array. A single dquot
- * structure may be on some of those lists, depending on its current state.
+ * The quota code uses five lists for dquot management: the inuse_list,
+ * releasing_dquots, free_dquots, dqi_dirty_list, and dquot_hash[] array.
+ * A single dquot structure may be on some of those lists, depending on
+ * its current state.
*
* All dquots are placed to the end of inuse_list when first created, and this
* list is used for invalidate operation, which must look at every dquot.
*
+ * When the last reference of a dquot will be dropped, the dquot will be
+ * added to releasing_dquots. We'd then queue work item which would call
+ * synchronize_srcu() and after that perform the final cleanup of all the
+ * dquots on the list. Both releasing_dquots and free_dquots use the
+ * dq_free list_head in the dquot struct. When a dquot is removed from
+ * releasing_dquots, a reference count is always subtracted, and if
+ * dq_count == 0 at that point, the dquot will be added to the free_dquots.
+ *
* Unused dquots (dq_count == 0) are added to the free_dquots list when freed,
* and this list is searched whenever we need an available dquot. Dquots are
* removed from the list as soon as they are used again, and
@@ -250,6 +259,7 @@ static void put_quota_format(struct quota_format_type *fmt)
static LIST_HEAD(inuse_list);
static LIST_HEAD(free_dquots);
+static LIST_HEAD(releasing_dquots);
static unsigned int dq_hash_bits, dq_hash_mask;
static struct hlist_head *dquot_hash;
@@ -260,6 +270,9 @@ static qsize_t inode_get_rsv_space(struct inode *inode);
static qsize_t __inode_get_rsv_space(struct inode *inode);
static int __dquot_initialize(struct inode *inode, int type);
+static void quota_release_workfn(struct work_struct *work);
+static DECLARE_DELAYED_WORK(quota_release_work, quota_release_workfn);
+
static inline unsigned int
hashfn(const struct super_block *sb, struct kqid qid)
{
@@ -305,12 +318,18 @@ static inline void put_dquot_last(struct dquot *dquot)
dqstats_inc(DQST_FREE_DQUOTS);
}
+static inline void put_releasing_dquots(struct dquot *dquot)
+{
+ list_add_tail(&dquot->dq_free, &releasing_dquots);
+}
+
static inline void remove_free_dquot(struct dquot *dquot)
{
if (list_empty(&dquot->dq_free))
return;
list_del_init(&dquot->dq_free);
- dqstats_dec(DQST_FREE_DQUOTS);
+ if (!atomic_read(&dquot->dq_count))
+ dqstats_dec(DQST_FREE_DQUOTS);
}
static inline void put_inuse(struct dquot *dquot)
@@ -552,6 +571,8 @@ static void invalidate_dquots(struct super_block *sb, int type)
struct dquot *dquot, *tmp;
restart:
+ flush_delayed_work("a_release_work);
+
spin_lock(&dq_list_lock);
list_for_each_entry_safe(dquot, tmp, &inuse_list, dq_inuse) {
if (dquot->dq_sb != sb)
@@ -560,6 +581,12 @@ static void invalidate_dquots(struct super_block *sb, int type)
continue;
/* Wait for dquot users */
if (atomic_read(&dquot->dq_count)) {
+ /* dquot in releasing_dquots, flush and retry */
+ if (!list_empty(&dquot->dq_free)) {
+ spin_unlock(&dq_list_lock);
+ goto restart;
+ }
+
atomic_inc(&dquot->dq_count);
spin_unlock(&dq_list_lock);
/*
@@ -770,6 +797,49 @@ static struct shrinker dqcache_shrinker = {
.seeks = DEFAULT_SEEKS,
};
+/*
+ * Safely release dquot and put reference to dquot.
+ */
+static void quota_release_workfn(struct work_struct *work)
+{
+ struct dquot *dquot;
+ struct list_head rls_head;
+
+ spin_lock(&dq_list_lock);
+ /* Exchange the list head to avoid livelock. */
+ list_replace_init(&releasing_dquots, &rls_head);
+ spin_unlock(&dq_list_lock);
+
+restart:
+ synchronize_srcu(&dquot_srcu);
+ spin_lock(&dq_list_lock);
+ while (!list_empty(&rls_head)) {
+ dquot = list_first_entry(&rls_head, struct dquot, dq_free);
+ /* Dquot got used again? */
+ if (atomic_read(&dquot->dq_count) > 1) {
+ remove_free_dquot(dquot);
+ atomic_dec(&dquot->dq_count);
+ continue;
+ }
+ if (dquot_dirty(dquot)) {
+ spin_unlock(&dq_list_lock);
+ /* Commit dquot before releasing */
+ dquot_write_dquot(dquot);
+ goto restart;
+ }
+ if (dquot_active(dquot)) {
+ spin_unlock(&dq_list_lock);
+ dquot->dq_sb->dq_op->release_dquot(dquot);
+ goto restart;
+ }
+ /* Dquot is inactive and clean, now move it to free list */
+ remove_free_dquot(dquot);
+ atomic_dec(&dquot->dq_count);
+ put_dquot_last(dquot);
+ }
+ spin_unlock(&dq_list_lock);
+}
+
/*
* Put reference to dquot
*/
@@ -786,7 +856,7 @@ void dqput(struct dquot *dquot)
}
#endif
dqstats_inc(DQST_DROPS);
-we_slept:
+
spin_lock(&dq_list_lock);
if (atomic_read(&dquot->dq_count) > 1) {
/* We have more than one user... nothing to do */
@@ -798,25 +868,15 @@ void dqput(struct dquot *dquot)
spin_unlock(&dq_list_lock);
return;
}
+
/* Need to release dquot? */
- if (dquot_dirty(dquot)) {
- spin_unlock(&dq_list_lock);
- /* Commit dquot before releasing */
- dquot_write_dquot(dquot);
- goto we_slept;
- }
- if (dquot_active(dquot)) {
- spin_unlock(&dq_list_lock);
- dquot->dq_sb->dq_op->release_dquot(dquot);
- goto we_slept;
- }
- atomic_dec(&dquot->dq_count);
#ifdef CONFIG_QUOTA_DEBUG
/* sanity check */
BUG_ON(!list_empty(&dquot->dq_free));
#endif
- put_dquot_last(dquot);
+ put_releasing_dquots(dquot);
spin_unlock(&dq_list_lock);
+ queue_delayed_work(system_unbound_wq, "a_release_work, 1);
}
EXPORT_SYMBOL(dqput);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 218/600] drm/amd/display: Do not set drr on pipe commit
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (216 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 217/600] quota: fix dqput() to follow the guarantees dquot_srcu should provide Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 219/600] drm/hyperv: Fix a compilation issue because of not including screen_info.h Greg Kroah-Hartman
` (392 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rodrigo Siqueira, Wesley Chalmers,
Daniel Wheeler, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wesley Chalmers <Wesley.Chalmers@amd.com>
[ Upstream commit e101bf95ea87ccc03ac2f48dfc0757c6364ff3c7 ]
[WHY]
Writing to DRR registers such as OTG_V_TOTAL_MIN on the same frame as a
pipe commit can cause underflow.
[HOW]
Move DMUB p-state delegate into optimze_bandwidth; enabling FAMS sets
optimized_required.
This change expects that Freesync requests are blocked when
optimized_required is true.
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Wesley Chalmers <Wesley.Chalmers@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 6 ++++++
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
index 4ef632864948e..21fae818ca28f 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
@@ -2032,6 +2032,12 @@ void dcn20_optimize_bandwidth(
if (hubbub->funcs->program_compbuf_size)
hubbub->funcs->program_compbuf_size(hubbub, context->bw_ctx.bw.dcn.compbuf_size_kb, true);
+ if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {
+ dc_dmub_srv_p_state_delegate(dc,
+ true, context);
+ context->bw_ctx.bw.dcn.clk.p_state_change_support = true;
+ }
+
dc->clk_mgr->funcs->update_clocks(
dc->clk_mgr,
context,
diff --git a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
index a1b312483d7f1..c97d3e81a83d2 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
@@ -987,11 +987,18 @@ void dcn30_set_disp_pattern_generator(const struct dc *dc,
void dcn30_prepare_bandwidth(struct dc *dc,
struct dc_state *context)
{
+ if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {
+ dc->optimized_required = true;
+ context->bw_ctx.bw.dcn.clk.p_state_change_support = false;
+ }
+
if (dc->clk_mgr->dc_mode_softmax_enabled)
if (dc->clk_mgr->clks.dramclk_khz <= dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000 &&
context->bw_ctx.bw.dcn.clk.dramclk_khz > dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000)
dc->clk_mgr->funcs->set_max_memclk(dc->clk_mgr, dc->clk_mgr->bw_params->clk_table.entries[dc->clk_mgr->bw_params->clk_table.num_entries - 1].memclk_mhz);
dcn20_prepare_bandwidth(dc, context);
+
+ dc_dmub_srv_p_state_delegate(dc, false, context);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 219/600] drm/hyperv: Fix a compilation issue because of not including screen_info.h
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (217 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 218/600] drm/amd/display: Do not set drr on pipe commit Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 220/600] ASoC: stac9766: fix build errors with REGMAP_AC97 Greg Kroah-Hartman
` (391 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Sui Jingfeng,
Thomas Zimmermann, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sui Jingfeng <suijingfeng@loongson.cn>
[ Upstream commit 8d1077cf2e43b15fefd76ebec2b71541eb27ef2c ]
Fixes the following build errors on arm64:
drivers/video/fbdev/hyperv_fb.c: In function 'hvfb_getmem':
>> drivers/video/fbdev/hyperv_fb.c:1033:24: error: 'screen_info' undeclared (first use in this function)
1033 | base = screen_info.lfb_base;
| ^~~~~~~~~~~
drivers/video/fbdev/hyperv_fb.c:1033:24: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/gpu/drm/hyperv/hyperv_drm_drv.c:75:54: error: 'screen_info' undeclared (first use in this function)
75 | drm_aperture_remove_conflicting_framebuffers(screen_info.lfb_base,
| ^~~~~~~~~~~
drivers/gpu/drm/hyperv/hyperv_drm_drv.c:75:54: note: each undeclared identifier is reported only once for each function it appears in
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202307090823.nxnT8Kk5-lkp@intel.com/
Fixes: 81d2393485f0 ("fbdev/hyperv-fb: Do not set struct fb_info.apertures")
Fixes: 8b0d13545b09 ("efi: Do not include <linux/screen_info.h> from EFI header")
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20230709100514.703759-1-suijingfeng@loongson.cn
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
index 29ee0814bccc8..68050409dd26c 100644
--- a/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
+++ b/drivers/gpu/drm/hyperv/hyperv_drm_drv.c
@@ -7,6 +7,7 @@
#include <linux/hyperv.h>
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/screen_info.h>
#include <drm/drm_aperture.h>
#include <drm/drm_atomic_helper.h>
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 220/600] ASoC: stac9766: fix build errors with REGMAP_AC97
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (218 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 219/600] drm/hyperv: Fix a compilation issue because of not including screen_info.h Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 221/600] soc: qcom: ocmem: Add OCMEM hardware version print Greg Kroah-Hartman
` (390 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Randy Dunlap, Lars-Peter Clausen,
Mark Brown, Liam Girdwood, alsa-devel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Randy Dunlap <rdunlap@infradead.org>
[ Upstream commit c70064b96f509daa78f57992aeabcf274fb2fed4 ]
Select REGMAP_AC97 to fix these build errors:
ERROR: modpost: "regmap_ac97_default_volatile" [sound/soc/codecs/snd-soc-stac9766.ko] undefined!
ERROR: modpost: "__regmap_init_ac97" [sound/soc/codecs/snd-soc-stac9766.ko] undefined!
Fixes: 6bbf787bb70c ("ASoC: stac9766: Convert to regmap")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <lgirdwood@gmail.com>
Cc: alsa-devel@alsa-project.org
Link: https://lore.kernel.org/r/20230701044836.18789-1-rdunlap@infradead.org
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 965ae55fa1607..0904827e2f3db 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -1552,6 +1552,7 @@ config SND_SOC_STA529
config SND_SOC_STAC9766
tristate
depends on SND_SOC_AC97_BUS
+ select REGMAP_AC97
config SND_SOC_STI_SAS
tristate "codec Audio support for STI SAS codec"
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 221/600] soc: qcom: ocmem: Add OCMEM hardware version print
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (219 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 220/600] ASoC: stac9766: fix build errors with REGMAP_AC97 Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 222/600] soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros Greg Kroah-Hartman
` (389 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Luca Weiss, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luca Weiss <luca@z3ntu.xyz>
[ Upstream commit e81a16e77259294cd4ff0a9c1fbe5aa0e311a47d ]
It might be useful to know what hardware version of the OCMEM block the
SoC contains. Add a debug print for that.
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230509-ocmem-hwver-v3-1-e51f3488e0f4@z3ntu.xyz
Stable-dep-of: a7b484b1c933 ("soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/soc/qcom/ocmem.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
index c92d26b73e6fc..7197d9fe0946a 100644
--- a/drivers/soc/qcom/ocmem.c
+++ b/drivers/soc/qcom/ocmem.c
@@ -76,6 +76,10 @@ struct ocmem {
#define OCMEM_REG_GFX_MPU_START 0x00001004
#define OCMEM_REG_GFX_MPU_END 0x00001008
+#define OCMEM_HW_VERSION_MAJOR(val) FIELD_GET(GENMASK(31, 28), val)
+#define OCMEM_HW_VERSION_MINOR(val) FIELD_GET(GENMASK(27, 16), val)
+#define OCMEM_HW_VERSION_STEP(val) FIELD_GET(GENMASK(15, 0), val)
+
#define OCMEM_HW_PROFILE_NUM_PORTS(val) FIELD_PREP(0x0000000f, (val))
#define OCMEM_HW_PROFILE_NUM_MACROS(val) FIELD_PREP(0x00003f00, (val))
@@ -355,6 +359,12 @@ static int ocmem_dev_probe(struct platform_device *pdev)
}
}
+ reg = ocmem_read(ocmem, OCMEM_REG_HW_VERSION);
+ dev_dbg(dev, "OCMEM hardware version: %lu.%lu.%lu\n",
+ OCMEM_HW_VERSION_MAJOR(reg),
+ OCMEM_HW_VERSION_MINOR(reg),
+ OCMEM_HW_VERSION_STEP(reg));
+
reg = ocmem_read(ocmem, OCMEM_REG_HW_PROFILE);
ocmem->num_ports = OCMEM_HW_PROFILE_NUM_PORTS(reg);
ocmem->num_macros = OCMEM_HW_PROFILE_NUM_MACROS(reg);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 222/600] soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (220 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 221/600] soc: qcom: ocmem: Add OCMEM hardware version print Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 223/600] arm64: dts: qcom: sm6350: Fix ZAP region Greg Kroah-Hartman
` (388 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Caleb Connolly, Konrad Dybcio,
Luca Weiss, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luca Weiss <luca@z3ntu.xyz>
[ Upstream commit a7b484b1c9332a1ee12e8799d62a11ee3f8e0801 ]
Since we're using these two macros to read a value from a register, we
need to use the FIELD_GET instead of the FIELD_PREP macro, otherwise
we're getting wrong values.
So instead of:
[ 3.111779] ocmem fdd00000.sram: 2 ports, 1 regions, 512 macros, not interleaved
we now get the correct value of:
[ 3.129672] ocmem fdd00000.sram: 2 ports, 1 regions, 2 macros, not interleaved
Fixes: 88c1e9404f1d ("soc: qcom: add OCMEM driver")
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Luca Weiss <luca@z3ntu.xyz>
Link: https://lore.kernel.org/r/20230506-msm8226-ocmem-v3-1-79da95a2581f@z3ntu.xyz
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/soc/qcom/ocmem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/soc/qcom/ocmem.c b/drivers/soc/qcom/ocmem.c
index 7197d9fe0946a..27c668eac9647 100644
--- a/drivers/soc/qcom/ocmem.c
+++ b/drivers/soc/qcom/ocmem.c
@@ -80,8 +80,8 @@ struct ocmem {
#define OCMEM_HW_VERSION_MINOR(val) FIELD_GET(GENMASK(27, 16), val)
#define OCMEM_HW_VERSION_STEP(val) FIELD_GET(GENMASK(15, 0), val)
-#define OCMEM_HW_PROFILE_NUM_PORTS(val) FIELD_PREP(0x0000000f, (val))
-#define OCMEM_HW_PROFILE_NUM_MACROS(val) FIELD_PREP(0x00003f00, (val))
+#define OCMEM_HW_PROFILE_NUM_PORTS(val) FIELD_GET(0x0000000f, (val))
+#define OCMEM_HW_PROFILE_NUM_MACROS(val) FIELD_GET(0x00003f00, (val))
#define OCMEM_HW_PROFILE_LAST_REGN_HALFSIZE 0x00010000
#define OCMEM_HW_PROFILE_INTERLEAVING 0x00020000
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 223/600] arm64: dts: qcom: sm6350: Fix ZAP region
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (221 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 222/600] soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 224/600] arm64: dts: qcom: sm8250: correct dynamic power coefficients Greg Kroah-Hartman
` (387 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Luca Weiss,
Konrad Dybcio, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@somainline.org>
[ Upstream commit 44bcded2be4fe9b9d0b6e48075c9947b75c0af63 ]
The previous ZAP region definition was wrong. Fix it.
Note this is not a device-specific fixup, but a fixup to the generic
PIL load address.
Fixes: 5f82b9cda61e ("arm64: dts: qcom: Add SM6350 device tree")
Signed-off-by: Konrad Dybcio <konrad.dybcio@somainline.org>
Reviewed-by: Luca Weiss <luca.weiss@fairphone.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230315-topic-lagoon_gpu-v2-6-afcdfb18bb13@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm6350.dtsi | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm6350.dtsi b/arch/arm64/boot/dts/qcom/sm6350.dtsi
index 35f621ef9da54..34c8de4f43fba 100644
--- a/arch/arm64/boot/dts/qcom/sm6350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm6350.dtsi
@@ -306,11 +306,6 @@ pil_ipa_gsi_mem: memory@8b710000 {
no-map;
};
- pil_gpu_mem: memory@8b715400 {
- reg = <0 0x8b715400 0 0x2000>;
- no-map;
- };
-
pil_modem_mem: memory@8b800000 {
reg = <0 0x8b800000 0 0xf800000>;
no-map;
@@ -331,6 +326,11 @@ removed_region: memory@c0000000 {
no-map;
};
+ pil_gpu_mem: memory@f0d00000 {
+ reg = <0 0xf0d00000 0 0x1000>;
+ no-map;
+ };
+
debug_region: memory@ffb00000 {
reg = <0 0xffb00000 0 0xc0000>;
no-map;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 224/600] arm64: dts: qcom: sm8250: correct dynamic power coefficients
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (222 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 223/600] arm64: dts: qcom: sm6350: Fix ZAP region Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 225/600] arm64: dts: qcom: msm8916-l8150: correct light sensor VDDIO supply Greg Kroah-Hartman
` (386 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vincent Guittot, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vincent Guittot <vincent.guittot@linaro.org>
[ Upstream commit 775a5283c25d160b2a1359018c447bc518096547 ]
sm8250 faces the same problem with its Energy Model as sdm845. The energy
cost of LITTLE cores is reported to be higher than medium or big cores
EM computes the energy with formula:
energy = OPP's cost / maximum cpu capacity * utilization
On v6.4-rc6 we have:
max capacity of CPU0 = 284
capacity of CPU0's OPP(1612800 Hz) = 253
cost of CPU0's OPP(1612800 Hz) = 191704
max capacity of CPU4 = 871
capacity of CPU4's OPP(710400 Hz) = 255
cost of CPU4's OPP(710400 Hz) = 343217
Both OPPs have almost the same compute capacity but the estimated energy
per unit of utilization will be estimated to:
energy CPU0 = 191704 / 284 * 1 = 675
energy CPU4 = 343217 / 871 * 1 = 394
EM estimates that little CPU0 will consume 71% more than medium CPU4 for
the same compute capacity. According to [1], little consumes 25% less than
medium core for Coremark benchmark at those OPPs for the same duration.
Set the dynamic-power-coefficient of CPU0-3 to 105 to fix the energy model
for little CPUs.
[1] https://github.com/kdrag0n/freqbench/tree/master/results/sm8250/k30s
Fixes: 6aabed5526ee ("arm64: dts: qcom: sm8250: Add CPU capacities and energy model")
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Link: https://lore.kernel.org/r/20230615154852.130076-1-vincent.guittot@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8250.dtsi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index e93955525a107..c27f88c9f7b2a 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -99,7 +99,7 @@ CPU0: cpu@0 {
reg = <0x0 0x0>;
enable-method = "psci";
capacity-dmips-mhz = <448>;
- dynamic-power-coefficient = <205>;
+ dynamic-power-coefficient = <105>;
next-level-cache = <&L2_0>;
power-domains = <&CPU_PD0>;
power-domain-names = "psci";
@@ -123,7 +123,7 @@ CPU1: cpu@100 {
reg = <0x0 0x100>;
enable-method = "psci";
capacity-dmips-mhz = <448>;
- dynamic-power-coefficient = <205>;
+ dynamic-power-coefficient = <105>;
next-level-cache = <&L2_100>;
power-domains = <&CPU_PD1>;
power-domain-names = "psci";
@@ -144,7 +144,7 @@ CPU2: cpu@200 {
reg = <0x0 0x200>;
enable-method = "psci";
capacity-dmips-mhz = <448>;
- dynamic-power-coefficient = <205>;
+ dynamic-power-coefficient = <105>;
next-level-cache = <&L2_200>;
power-domains = <&CPU_PD2>;
power-domain-names = "psci";
@@ -165,7 +165,7 @@ CPU3: cpu@300 {
reg = <0x0 0x300>;
enable-method = "psci";
capacity-dmips-mhz = <448>;
- dynamic-power-coefficient = <205>;
+ dynamic-power-coefficient = <105>;
next-level-cache = <&L2_300>;
power-domains = <&CPU_PD3>;
power-domain-names = "psci";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 225/600] arm64: dts: qcom: msm8916-l8150: correct light sensor VDDIO supply
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (223 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 224/600] arm64: dts: qcom: sm8250: correct dynamic power coefficients Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 226/600] arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM Greg Kroah-Hartman
` (385 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Krzysztof Kozlowski, Nikita Travkin,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit 6a541eaa6e8e5283efb993ae7a947bede8d01fa5 ]
liteon,ltr559 light sensor takes VDDIO, not VIO, supply:
msm8916-longcheer-l8150.dtb: light-sensor@23: 'vio-supply' does not match any of the regexes: 'pinctrl-[0-9]+'
Fixes: 3016af34ef8d ("arm64: dts: qcom: msm8916-longcheer-l8150: Add light and proximity sensor")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Nikita Travkin <nikita@trvn.ru>
Link: https://lore.kernel.org/r/20230617171541.286957-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts b/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
index d85e7f7c0835a..75f7b4f35fe82 100644
--- a/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
+++ b/arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts
@@ -163,7 +163,7 @@ light-sensor@23 {
pinctrl-0 = <&light_int_default>;
vdd-supply = <&pm8916_l17>;
- vio-supply = <&pm8916_l6>;
+ vddio-supply = <&pm8916_l6>;
};
gyroscope@68 {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 226/600] arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (224 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 225/600] arm64: dts: qcom: msm8916-l8150: correct light sensor VDDIO supply Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 227/600] arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs Greg Kroah-Hartman
` (384 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 40b398beabdfe0e9088b13976e56b1dc706fe851 ]
Sony ever so graciously provides GPIO line names in their downstream
kernel (though sometimes they are not 100% accurate and you can judge
that by simply looking at them and with what drivers they are used).
Add these to the PDX203&206 DTSIs to better document the hardware.
Diff between 203 and 206:
< "CAM_PWR_A_CS",
> "FRONTC_PWR_EN",
< "CAM4_MCLK",
< "TOF_RST_N",
> "NC",
> "NC",
< "WLC_I2C_SDA",
< "WLC_I2C_SCL", /* GPIO_120 */
> "NC",
> "NC",
< "WLC_INT_N",
> "NC",
Which makes sense, as 203 has a 3D iToF, slightly different camera
power wiring and WLC (WireLess Charging).
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230614-topic-edo_pinsgpiopmic-v2-1-6f90bba54c53@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Stable-dep-of: a422c6a91a66 ("arm64: dts: qcom: sm8250-edo: Rectify gpio-keys")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../qcom/sm8250-sony-xperia-edo-pdx203.dts | 183 ++++++++++++++++++
.../qcom/sm8250-sony-xperia-edo-pdx206.dts | 183 ++++++++++++++++++
2 files changed, 366 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
index 356a81698731a..84104d2b20101 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
@@ -14,3 +14,186 @@ / {
};
/delete-node/ &vreg_l7f_1p8;
+
+&tlmm {
+ gpio-line-names = "AP_CTI_IN", /* GPIO_0 */
+ "MDM2AP_ERR_FATAL",
+ "AP_CTI_OUT",
+ "MDM2AP_STATUS",
+ "NFC_I2C_SDA",
+ "NFC_I2C_SCL",
+ "NFC_EN",
+ "NFC_CLK_REQ",
+ "NFC_ESE_PWR_REQ",
+ "DVDT_WRT_DET_AND",
+ "SPK_AMP_RESET_N", /* GPIO_10 */
+ "SPK_AMP_INT_N",
+ "APPS_I2C_1_SDA",
+ "APPS_I2C_1_SCL",
+ "NC",
+ "TX_GTR_THRES_IN",
+ "HST_BT_UART_CTS",
+ "HST_BT_UART_RFR",
+ "HST_BT_UART_TX",
+ "HST_BT_UART_RX",
+ "HST_WLAN_EN", /* GPIO_20 */
+ "HST_BT_EN",
+ "RGBC_IR_PWR_EN",
+ "FP_INT_N",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "NFC_ESE_SPI_MISO",
+ "NFC_ESE_SPI_MOSI",
+ "NFC_ESE_SPI_SCLK", /* GPIO_30 */
+ "NFC_ESE_SPI_CS_N",
+ "WCD_RST_N",
+ "NC",
+ "SDM_DEBUG_UART_TX",
+ "SDM_DEBUG_UART_RX",
+ "TS_I2C_SDA",
+ "TS_I2C_SCL",
+ "TS_INT_N",
+ "FP_SPI_MISO", /* GPIO_40 */
+ "FP_SPI_MOSI",
+ "FP_SPI_SCLK",
+ "FP_SPI_CS_N",
+ "APPS_I2C_0_SDA",
+ "APPS_I2C_0_SCL",
+ "DISP_ERR_FG",
+ "UIM2_DETECT_EN",
+ "NC",
+ "NC",
+ "NC", /* GPIO_50 */
+ "NC",
+ "MDM_UART_CTS",
+ "MDM_UART_RFR",
+ "MDM_UART_TX",
+ "MDM_UART_RX",
+ "AP2MDM_STATUS",
+ "AP2MDM_ERR_FATAL",
+ "MDM_IPC_HS_UART_TX",
+ "MDM_IPC_HS_UART_RX",
+ "NC", /* GPIO_60 */
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "USB_CC_DIR",
+ "DISP_VSYNC",
+ "NC",
+ "NC",
+ "CAM_PWR_B_CS",
+ "NC", /* GPIO_70 */
+ "CAM_PWR_A_CS",
+ "SBU_SW_SEL",
+ "SBU_SW_OE",
+ "FP_RESET_N",
+ "FP_RESET_N",
+ "DISP_RESET_N",
+ "DEBUG_GPIO0",
+ "TRAY_DET",
+ "CAM2_RST_N",
+ "PCIE0_RST_N",
+ "PCIE0_CLK_REQ_N", /* GPIO_80 */
+ "PCIE0_WAKE_N",
+ "DVDT_ENABLE",
+ "DVDT_WRT_DET_OR",
+ "NC",
+ "PCIE2_RST_N",
+ "PCIE2_CLK_REQ_N",
+ "PCIE2_WAKE_N",
+ "MDM_VFR_IRQ0",
+ "MDM_VFR_IRQ1",
+ "SW_SERVICE", /* GPIO_90 */
+ "CAM_SOF",
+ "CAM1_RST_N",
+ "CAM0_RST_N",
+ "CAM0_MCLK",
+ "CAM1_MCLK",
+ "CAM2_MCLK",
+ "CAM3_MCLK",
+ "CAM4_MCLK",
+ "TOF_RST_N",
+ "NC", /* GPIO_100 */
+ "CCI0_I2C_SDA",
+ "CCI0_I2C_SCL",
+ "CCI1_I2C_SDA",
+ "CCI1_I2C_SCL_",
+ "CCI2_I2C_SDA",
+ "CCI2_I2C_SCL",
+ "CCI3_I2C_SDA",
+ "CCI3_I2C_SCL",
+ "CAM3_RST_N",
+ "NFC_DWL_REQ", /* GPIO_110 */
+ "NFC_IRQ",
+ "XVS",
+ "NC",
+ "RF_ID_EXTENSION",
+ "SPK_AMP_I2C_SDA",
+ "SPK_AMP_I2C_SCL",
+ "NC",
+ "NC",
+ "WLC_I2C_SDA",
+ "WLC_I2C_SCL", /* GPIO_120 */
+ "ACC_COVER_OPEN",
+ "ALS_PROX_INT_N",
+ "ACCEL_INT",
+ "WLAN_SW_CTRL",
+ "CAMSENSOR_I2C_SDA",
+ "CAMSENSOR_I2C_SCL",
+ "UDON_SWITCH_SEL",
+ "WDOG_DISABLE",
+ "BAROMETER_INT",
+ "NC", /* GPIO_130 */
+ "NC",
+ "FORCED_USB_BOOT",
+ "NC",
+ "NC",
+ "WLC_INT_N",
+ "NC",
+ "NC",
+ "RGBC_IR_INT",
+ "NC",
+ "NC", /* GPIO_140 */
+ "NC",
+ "BT_SLIMBUS_CLK",
+ "BT_SLIMBUS_DATA",
+ "HW_ID_0",
+ "HW_ID_1",
+ "WCD_SWR_TX_CLK",
+ "WCD_SWR_TX_DATA0",
+ "WCD_SWR_TX_DATA1",
+ "WCD_SWR_RX_CLK",
+ "WCD_SWR_RX_DATA0", /* GPIO_150 */
+ "WCD_SWR_RX_DATA1",
+ "SDM_DMIC_CLK1",
+ "SDM_DMIC_DATA1",
+ "SDM_DMIC_CLK2",
+ "SDM_DMIC_DATA2",
+ "SPK_AMP_I2S_CLK",
+ "SPK_AMP_I2S_WS",
+ "SPK_AMP_I2S_ASP_DIN",
+ "SPK_AMP_I2S_ASP_DOUT",
+ "COMPASS_I2C_SDA", /* GPIO_160 */
+ "COMPASS_I2C_SCL",
+ "NC",
+ "NC",
+ "SSC_SPI_1_MISO",
+ "SSC_SPI_1_MOSI",
+ "SSC_SPI_1_CLK",
+ "SSC_SPI_1_CS_N",
+ "NC",
+ "NC",
+ "SSC_SENSOR_I2C_SDA", /* GPIO_170 */
+ "SSC_SENSOR_I2C_SCL",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "HST_BLE_SNS_UART6_TX",
+ "HST_BLE_SNS_UART6_RX",
+ "HST_WLAN_UART_TX",
+ "HST_WLAN_UART_RX";
+};
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
index 5ecf7dafb2ec4..4b15de5e65e9b 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
@@ -30,6 +30,189 @@ g-assist-key {
};
};
+&tlmm {
+ gpio-line-names = "AP_CTI_IN", /* GPIO_0 */
+ "MDM2AP_ERR_FATAL",
+ "AP_CTI_OUT",
+ "MDM2AP_STATUS",
+ "NFC_I2C_SDA",
+ "NFC_I2C_SCL",
+ "NFC_EN",
+ "NFC_CLK_REQ",
+ "NFC_ESE_PWR_REQ",
+ "DVDT_WRT_DET_AND",
+ "SPK_AMP_RESET_N", /* GPIO_10 */
+ "SPK_AMP_INT_N",
+ "APPS_I2C_1_SDA",
+ "APPS_I2C_1_SCL",
+ "NC",
+ "TX_GTR_THRES_IN",
+ "HST_BT_UART_CTS",
+ "HST_BT_UART_RFR",
+ "HST_BT_UART_TX",
+ "HST_BT_UART_RX",
+ "HST_WLAN_EN", /* GPIO_20 */
+ "HST_BT_EN",
+ "RGBC_IR_PWR_EN",
+ "FP_INT_N",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "NFC_ESE_SPI_MISO",
+ "NFC_ESE_SPI_MOSI",
+ "NFC_ESE_SPI_SCLK", /* GPIO_30 */
+ "NFC_ESE_SPI_CS_N",
+ "WCD_RST_N",
+ "NC",
+ "SDM_DEBUG_UART_TX",
+ "SDM_DEBUG_UART_RX",
+ "TS_I2C_SDA",
+ "TS_I2C_SCL",
+ "TS_INT_N",
+ "FP_SPI_MISO", /* GPIO_40 */
+ "FP_SPI_MOSI",
+ "FP_SPI_SCLK",
+ "FP_SPI_CS_N",
+ "APPS_I2C_0_SDA",
+ "APPS_I2C_0_SCL",
+ "DISP_ERR_FG",
+ "UIM2_DETECT_EN",
+ "NC",
+ "NC",
+ "NC", /* GPIO_50 */
+ "NC",
+ "MDM_UART_CTS",
+ "MDM_UART_RFR",
+ "MDM_UART_TX",
+ "MDM_UART_RX",
+ "AP2MDM_STATUS",
+ "AP2MDM_ERR_FATAL",
+ "MDM_IPC_HS_UART_TX",
+ "MDM_IPC_HS_UART_RX",
+ "NC", /* GPIO_60 */
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "USB_CC_DIR",
+ "DISP_VSYNC",
+ "NC",
+ "NC",
+ "CAM_PWR_B_CS",
+ "NC", /* GPIO_70 */
+ "FRONTC_PWR_EN",
+ "SBU_SW_SEL",
+ "SBU_SW_OE",
+ "FP_RESET_N",
+ "FP_RESET_N",
+ "DISP_RESET_N",
+ "DEBUG_GPIO0",
+ "TRAY_DET",
+ "CAM2_RST_N",
+ "PCIE0_RST_N",
+ "PCIE0_CLK_REQ_N", /* GPIO_80 */
+ "PCIE0_WAKE_N",
+ "DVDT_ENABLE",
+ "DVDT_WRT_DET_OR",
+ "NC",
+ "PCIE2_RST_N",
+ "PCIE2_CLK_REQ_N",
+ "PCIE2_WAKE_N",
+ "MDM_VFR_IRQ0",
+ "MDM_VFR_IRQ1",
+ "SW_SERVICE", /* GPIO_90 */
+ "CAM_SOF",
+ "CAM1_RST_N",
+ "CAM0_RST_N",
+ "CAM0_MCLK",
+ "CAM1_MCLK",
+ "CAM2_MCLK",
+ "CAM3_MCLK",
+ "NC",
+ "NC",
+ "NC", /* GPIO_100 */
+ "CCI0_I2C_SDA",
+ "CCI0_I2C_SCL",
+ "CCI1_I2C_SDA",
+ "CCI1_I2C_SCL_",
+ "CCI2_I2C_SDA",
+ "CCI2_I2C_SCL",
+ "CCI3_I2C_SDA",
+ "CCI3_I2C_SCL",
+ "CAM3_RST_N",
+ "NFC_DWL_REQ", /* GPIO_110 */
+ "NFC_IRQ",
+ "XVS",
+ "NC",
+ "RF_ID_EXTENSION",
+ "SPK_AMP_I2C_SDA",
+ "SPK_AMP_I2C_SCL",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "ACC_COVER_OPEN",
+ "ALS_PROX_INT_N",
+ "ACCEL_INT",
+ "WLAN_SW_CTRL",
+ "CAMSENSOR_I2C_SDA",
+ "CAMSENSOR_I2C_SCL",
+ "UDON_SWITCH_SEL",
+ "WDOG_DISABLE",
+ "BAROMETER_INT",
+ "NC", /* GPIO_130 */
+ "NC",
+ "FORCED_USB_BOOT",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "RGBC_IR_INT",
+ "NC",
+ "NC", /* GPIO_140 */
+ "NC",
+ "BT_SLIMBUS_CLK",
+ "BT_SLIMBUS_DATA",
+ "HW_ID_0",
+ "HW_ID_1",
+ "WCD_SWR_TX_CLK",
+ "WCD_SWR_TX_DATA0",
+ "WCD_SWR_TX_DATA1",
+ "WCD_SWR_RX_CLK",
+ "WCD_SWR_RX_DATA0", /* GPIO_150 */
+ "WCD_SWR_RX_DATA1",
+ "SDM_DMIC_CLK1",
+ "SDM_DMIC_DATA1",
+ "SDM_DMIC_CLK2",
+ "SDM_DMIC_DATA2",
+ "SPK_AMP_I2S_CLK",
+ "SPK_AMP_I2S_WS",
+ "SPK_AMP_I2S_ASP_DIN",
+ "SPK_AMP_I2S_ASP_DOUT",
+ "COMPASS_I2C_SDA", /* GPIO_160 */
+ "COMPASS_I2C_SCL",
+ "NC",
+ "NC",
+ "SSC_SPI_1_MISO",
+ "SSC_SPI_1_MOSI",
+ "SSC_SPI_1_CLK",
+ "SSC_SPI_1_CS_N",
+ "NC",
+ "NC",
+ "SSC_SENSOR_I2C_SDA", /* GPIO_170 */
+ "SSC_SENSOR_I2C_SCL",
+ "NC",
+ "NC",
+ "NC",
+ "NC",
+ "HST_BLE_SNS_UART6_TX",
+ "HST_BLE_SNS_UART6_RX",
+ "HST_WLAN_UART_TX",
+ "HST_WLAN_UART_RX";
+};
+
&vreg_l2f_1p3 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 227/600] arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (225 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 226/600] arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 228/600] arm64: dts: qcom: sm8250-edo: Rectify gpio-keys Greg Kroah-Hartman
` (383 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 6b8a63350752c6a5e4b54f2de6174084652cd3cd ]
Sony ever so graciously provides GPIO line names in their downstream
kernel (though sometimes they are not 100% accurate and you can judge
that by simply looking at them and with what drivers they are used).
Add these to the PDX203&206 DTSIs to better document the hardware.
Diff between 203 and 206:
pm8009_gpios
< "CAM_PWR_LD_EN",
> "NC",
pm8150_gpios
< "NC",
> "G_ASSIST_N",
< "WLC_EN_N", /* GPIO_10 */
> "NC", /* GPIO_10 */
Which is due to 5 II having an additional Google Assistant hardware
button and 1 II having a wireless charger & different camera wiring
to accommodate the additional 3D iToF sensor.
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230614-topic-edo_pinsgpiopmic-v2-2-6f90bba54c53@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Stable-dep-of: a422c6a91a66 ("arm64: dts: qcom: sm8250-edo: Rectify gpio-keys")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../qcom/sm8250-sony-xperia-edo-pdx203.dts | 50 +++++++++++++++++++
.../qcom/sm8250-sony-xperia-edo-pdx206.dts | 50 +++++++++++++++++++
2 files changed, 100 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
index 84104d2b20101..62590c6bd3067 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx203.dts
@@ -15,6 +15,56 @@ / {
/delete-node/ &vreg_l7f_1p8;
+&pm8009_gpios {
+ gpio-line-names = "NC", /* GPIO_1 */
+ "CAM_PWR_LD_EN",
+ "WIDEC_PWR_EN",
+ "NC";
+};
+
+&pm8150_gpios {
+ gpio-line-names = "VOL_DOWN_N", /* GPIO_1 */
+ "OPTION_2",
+ "NC",
+ "PM_SLP_CLK_IN",
+ "OPTION_1",
+ "NC",
+ "NC",
+ "SP_ARI_PWR_ALARM",
+ "NC",
+ "NC"; /* GPIO_10 */
+};
+
+&pm8150b_gpios {
+ gpio-line-names = "SNAPSHOT_N", /* GPIO_1 */
+ "FOCUS_N",
+ "NC",
+ "NC",
+ "RF_LCD_ID_EN",
+ "NC",
+ "NC",
+ "LCD_ID",
+ "NC",
+ "WLC_EN_N", /* GPIO_10 */
+ "NC",
+ "RF_ID";
+};
+
+&pm8150l_gpios {
+ gpio-line-names = "NC", /* GPIO_1 */
+ "PM3003A_EN",
+ "NC",
+ "NC",
+ "NC",
+ "AUX2_THERM",
+ "BB_HP_EN",
+ "FP_LDO_EN",
+ "PMX_RESET_N",
+ "AUX3_THERM", /* GPIO_10 */
+ "DTV_PWR_EN",
+ "PM3003A_MODE";
+};
+
&tlmm {
gpio-line-names = "AP_CTI_IN", /* GPIO_0 */
"MDM2AP_ERR_FATAL",
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
index 4b15de5e65e9b..65bad39ecda83 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
@@ -30,6 +30,56 @@ g-assist-key {
};
};
+&pm8009_gpios {
+ gpio-line-names = "NC", /* GPIO_1 */
+ "NC",
+ "WIDEC_PWR_EN",
+ "NC";
+};
+
+&pm8150_gpios {
+ gpio-line-names = "VOL_DOWN_N", /* GPIO_1 */
+ "OPTION_2",
+ "NC",
+ "PM_SLP_CLK_IN",
+ "OPTION_1",
+ "G_ASSIST_N",
+ "NC",
+ "SP_ARI_PWR_ALARM",
+ "NC",
+ "NC"; /* GPIO_10 */
+};
+
+&pm8150b_gpios {
+ gpio-line-names = "SNAPSHOT_N", /* GPIO_1 */
+ "FOCUS_N",
+ "NC",
+ "NC",
+ "RF_LCD_ID_EN",
+ "NC",
+ "NC",
+ "LCD_ID",
+ "NC",
+ "NC", /* GPIO_10 */
+ "NC",
+ "RF_ID";
+};
+
+&pm8150l_gpios {
+ gpio-line-names = "NC", /* GPIO_1 */
+ "PM3003A_EN",
+ "NC",
+ "NC",
+ "NC",
+ "AUX2_THERM",
+ "BB_HP_EN",
+ "FP_LDO_EN",
+ "PMX_RESET_N",
+ "NC", /* GPIO_10 */
+ "NC",
+ "PM3003A_MODE";
+};
+
&tlmm {
gpio-line-names = "AP_CTI_IN", /* GPIO_0 */
"MDM2AP_ERR_FATAL",
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 228/600] arm64: dts: qcom: sm8250-edo: Rectify gpio-keys
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (226 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 227/600] arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 229/600] arm64: dts: qcom: sc8280xp-crd: Correct vreg_misc_3p3 GPIO Greg Kroah-Hartman
` (382 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marijn Suijten, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit a422c6a91a667b309ca1a6c08b30dbfcf7d4e866 ]
Set up the corresponding GPIOs properly and add the leftover hardware
buttons to mark this piece of the puzzle complete.
Fixes: 46e14907c716 ("arm64: dts: qcom: sm8250-edo: Add hardware keys")
Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230614-topic-edo_pinsgpiopmic-v2-4-6f90bba54c53@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
.../qcom/sm8250-sony-xperia-edo-pdx206.dts | 10 ++++
.../boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 54 ++++++++++++++++---
2 files changed, 58 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
index 65bad39ecda83..0e50661c1b4c1 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo-pdx206.dts
@@ -20,6 +20,8 @@ &framebuffer {
};
&gpio_keys {
+ pinctrl-0 = <&focus_n &snapshot_n &vol_down_n &g_assist_n>;
+
g-assist-key {
label = "Google Assistant Key";
linux,code = <KEY_LEFTMETA>;
@@ -48,6 +50,14 @@ &pm8150_gpios {
"SP_ARI_PWR_ALARM",
"NC",
"NC"; /* GPIO_10 */
+
+ g_assist_n: g-assist-n-state {
+ pins = "gpio6";
+ function = "normal";
+ power-source = <1>;
+ bias-pull-up;
+ input-enable;
+ };
};
&pm8150b_gpios {
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 390b90a8ddf70..259798a959749 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -51,12 +51,26 @@ framebuffer: framebuffer@9c000000 {
gpio_keys: gpio-keys {
compatible = "gpio-keys";
- /*
- * Camera focus (light press) and camera snapshot (full press)
- * seem not to work properly.. Adding the former one stalls the CPU
- * and the latter kills the volume down key for whatever reason. In any
- * case, they are both on &pm8150b_gpios: camera focus(2), camera snapshot(1).
- */
+ pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>;
+ pinctrl-names = "default";
+
+ key-camera-focus {
+ label = "Camera Focus";
+ linux,code = <KEY_CAMERA_FOCUS>;
+ gpios = <&pm8150b_gpios 2 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ gpio-key,wakeup;
+ };
+
+ key-camera-snapshot {
+ label = "Camera Snapshot";
+ linux,code = <KEY_CAMERA>;
+ gpios = <&pm8150b_gpios 1 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ gpio-key,wakeup;
+ };
key-vol-down {
label = "Volume Down";
@@ -546,6 +560,34 @@ &pcie2_phy {
vdda-pll-supply = <&vreg_l9a_1p2>;
};
+&pm8150_gpios {
+ vol_down_n: vol-down-n-state {
+ pins = "gpio1";
+ function = "normal";
+ power-source = <0>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
+&pm8150b_gpios {
+ snapshot_n: snapshot-n-state {
+ pins = "gpio1";
+ function = "normal";
+ power-source = <0>;
+ bias-pull-up;
+ input-enable;
+ };
+
+ focus_n: focus-n-state {
+ pins = "gpio2";
+ function = "normal";
+ power-source = <0>;
+ bias-pull-up;
+ input-enable;
+ };
+};
+
&pon_pwrkey {
status = "okay";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 229/600] arm64: dts: qcom: sc8280xp-crd: Correct vreg_misc_3p3 GPIO
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (227 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 228/600] arm64: dts: qcom: sm8250-edo: Rectify gpio-keys Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 230/600] arm64: dts: qcom: sc8280xp: Add missing SCM interconnect Greg Kroah-Hartman
` (381 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bjorn Andersson, Johan Hovold,
Konrad Dybcio, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bjorn Andersson <quic_bjorande@quicinc.com>
[ Upstream commit 9566b5271f68bdf6e69b7c511850e3fb75cd18be ]
The vreg_misc_3p3 regulator is controlled by PMC8280_1 GPIO 2, not 1, on
the CRD.
Fixes: ccd3517faf18 ("arm64: dts: qcom: sc8280xp: Add reference device")
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230620203915.141337-1-quic_bjorande@quicinc.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
index 5e30349efd204..38ec8acb7c40d 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-crd.dts
@@ -57,7 +57,7 @@ vreg_misc_3p3: regulator-misc-3p3 {
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
- gpio = <&pmc8280_1_gpios 1 GPIO_ACTIVE_HIGH>;
+ gpio = <&pmc8280_1_gpios 2 GPIO_ACTIVE_HIGH>;
enable-active-high;
pinctrl-names = "default";
@@ -364,7 +364,7 @@ edp_bl_reg_en: edp-bl-reg-en-state {
};
misc_3p3_reg_en: misc-3p3-reg-en-state {
- pins = "gpio1";
+ pins = "gpio2";
function = "normal";
};
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 230/600] arm64: dts: qcom: sc8280xp: Add missing SCM interconnect
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (228 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 229/600] arm64: dts: qcom: sc8280xp-crd: Correct vreg_misc_3p3 GPIO Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 231/600] arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller Greg Kroah-Hartman
` (380 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Johan Hovold,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 0a69ccf20b0837db857abfc94d7e3bacf1cb771b ]
The SCM interconnect path was missing. Add it.
Fixes: 152d1faf1e2f ("arm64: dts: qcom: add SC8280XP platform")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Johan Hovold <johan+linaro@kernel.org>
Tested-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20230622-topic-8280scmicc-v1-2-6ef318919ea5@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
index 1afc960bab5c9..405835ad28bcd 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc8280xp.dtsi
@@ -396,6 +396,7 @@ CLUSTER_SLEEP_0: cluster-sleep-0 {
firmware {
scm: scm {
compatible = "qcom,scm-sc8280xp", "qcom,scm";
+ interconnects = <&aggre2_noc MASTER_CRYPTO 0 &mc_virt SLAVE_EBI1 0>;
};
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 231/600] arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (229 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 230/600] arm64: dts: qcom: sc8280xp: Add missing SCM interconnect Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 232/600] arm64: dts: qcom: sdm845-tama: Set serial indices and stdout-path Greg Kroah-Hartman
` (379 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 36541089c4733355ed844c67eebd0c3936953454 ]
The interrupt line was previously not described. Take care of that.
Fixes: 1e39255ed29d ("arm64: dts: msm8996: Add device node for qcom,dwc3")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230627-topic-more_bindings-v1-11-6b4b6cd081e5@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 9d6ec59d1cd3a..7e381d8257ba1 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -3292,6 +3292,9 @@ usb2: usb@76f8800 {
#size-cells = <1>;
ranges;
+ interrupts = <GIC_SPI 352 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "hs_phy_irq";
+
clocks = <&gcc GCC_PERIPH_NOC_USB20_AHB_CLK>,
<&gcc GCC_USB20_MASTER_CLK>,
<&gcc GCC_USB20_MOCK_UTMI_CLK>,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 232/600] arm64: dts: qcom: sdm845-tama: Set serial indices and stdout-path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (230 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 231/600] arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 233/600] arm64: dts: qcom: sm8350: Fix CPU idle state residency times Greg Kroah-Hartman
` (378 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Marijn Suijten,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 9acc60c3e2d449243e4c2126e3b56f1c4f7fd3bc ]
UART6 is used for debug (routed via uSD pins) and UART9 is connected
to the bluetooth chip.
Set indexed aliases to make the GENI UART driver happy and route serial
traffic through the debug uart by default.
Fixes: 30a7f99befc6 ("arm64: dts: qcom: Add support for SONY Xperia XZ2 / XZ2C / XZ3 (Tama platform)")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Marijn Suijten <marijn.suijten@somainline.org>
Link: https://lore.kernel.org/r/20230627-topic-tama_uart-v1-1-0fa790248db8@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
index 51ee42e3c995c..d6918e6d19799 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845-sony-xperia-tama.dtsi
@@ -14,6 +14,15 @@ / {
qcom,msm-id = <321 0x20001>; /* SDM845 v2.1 */
qcom,board-id = <8 0>;
+ aliases {
+ serial0 = &uart6;
+ serial1 = &uart9;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
gpio-keys {
compatible = "gpio-keys";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 233/600] arm64: dts: qcom: sm8350: Fix CPU idle state residency times
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (231 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 232/600] arm64: dts: qcom: sdm845-tama: Set serial indices and stdout-path Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 234/600] arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq Greg Kroah-Hartman
` (377 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 91ce3693e2fb685f31d39605a5ad1fbd940804da ]
The present values look to have been copypasted from 8150 or 8180.
Fix that.
Fixes: 07ddb302811e ("arm64: dts: qcom: sm8350: Add CPU topology and idle-states")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230705-topic-sm8350_fixes-v1-2-0f69f70ccb6a@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8350.dtsi | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index 7fd1c3f71c0f8..b91247856f9dc 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -236,8 +236,8 @@ LITTLE_CPU_SLEEP_0: cpu-sleep-0-0 {
compatible = "arm,idle-state";
idle-state-name = "silver-rail-power-collapse";
arm,psci-suspend-param = <0x40000004>;
- entry-latency-us = <355>;
- exit-latency-us = <909>;
+ entry-latency-us = <360>;
+ exit-latency-us = <531>;
min-residency-us = <3934>;
local-timer-stop;
};
@@ -246,8 +246,8 @@ BIG_CPU_SLEEP_0: cpu-sleep-1-0 {
compatible = "arm,idle-state";
idle-state-name = "gold-rail-power-collapse";
arm,psci-suspend-param = <0x40000004>;
- entry-latency-us = <241>;
- exit-latency-us = <1461>;
+ entry-latency-us = <702>;
+ exit-latency-us = <1061>;
min-residency-us = <4488>;
local-timer-stop;
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 234/600] arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (232 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 233/600] arm64: dts: qcom: sm8350: Fix CPU idle state residency times Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 235/600] arm64: dts: qcom: sm8350: Use proper CPU compatibles Greg Kroah-Hartman
` (376 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 951151c2bb548e0f6b2c40ab4c48675f5342c914 ]
Add the missing interrupts that communicate the hardware-managed
throttling to Linux.
Fixes: ccbb3abb23a5 ("arm64: dts: qcom: sm8350: Add cpufreq node")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230705-topic-sm8350_fixes-v1-3-0f69f70ccb6a@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8350.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index b91247856f9dc..0b5a1841d607d 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -2072,6 +2072,13 @@ cpufreq_hw: cpufreq@18591000 {
<0 0x18593000 0 0x1000>;
reg-names = "freq-domain0", "freq-domain1", "freq-domain2";
+ interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "dcvsh-irq-0",
+ "dcvsh-irq-1",
+ "dcvsh-irq-2";
+
clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_GPLL0>;
clock-names = "xo", "alternate";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 235/600] arm64: dts: qcom: sm8350: Use proper CPU compatibles
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (233 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 234/600] arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 236/600] arm64: dts: qcom: pm8350: fix thermal zone name Greg Kroah-Hartman
` (375 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 4390730cc12af25f7c997f477795f5f4200149c0 ]
The Kryo names (once again) turned out to be fake. The CPUs report:
0x412fd050 (CA55 r2p0) (0 - 3)
0x411fd410 (CA78 r1p1) (4 - 6)
0x411fd440 (CX1 r1p1) (7)
Use the compatibles that reflect that.
Fixes: b7e8f433a673 ("arm64: dts: qcom: Add basic devicetree support for SM8350 SoC")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230706-topic-sm8350-cpu-compat-v1-1-f8d6a1869781@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8350.dtsi | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8350.dtsi b/arch/arm64/boot/dts/qcom/sm8350.dtsi
index 0b5a1841d607d..b3245b13b2611 100644
--- a/arch/arm64/boot/dts/qcom/sm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8350.dtsi
@@ -63,7 +63,7 @@ cpus {
CPU0: cpu@0 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a55";
reg = <0x0 0x0>;
enable-method = "psci";
next-level-cache = <&L2_0>;
@@ -82,7 +82,7 @@ L3_0: l3-cache {
CPU1: cpu@100 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a55";
reg = <0x0 0x100>;
enable-method = "psci";
next-level-cache = <&L2_100>;
@@ -98,7 +98,7 @@ L2_100: l2-cache {
CPU2: cpu@200 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a55";
reg = <0x0 0x200>;
enable-method = "psci";
next-level-cache = <&L2_200>;
@@ -114,7 +114,7 @@ L2_200: l2-cache {
CPU3: cpu@300 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a55";
reg = <0x0 0x300>;
enable-method = "psci";
next-level-cache = <&L2_300>;
@@ -130,7 +130,7 @@ L2_300: l2-cache {
CPU4: cpu@400 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a78";
reg = <0x0 0x400>;
enable-method = "psci";
next-level-cache = <&L2_400>;
@@ -146,7 +146,7 @@ L2_400: l2-cache {
CPU5: cpu@500 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a78";
reg = <0x0 0x500>;
enable-method = "psci";
next-level-cache = <&L2_500>;
@@ -163,7 +163,7 @@ L2_500: l2-cache {
CPU6: cpu@600 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-a78";
reg = <0x0 0x600>;
enable-method = "psci";
next-level-cache = <&L2_600>;
@@ -179,7 +179,7 @@ L2_600: l2-cache {
CPU7: cpu@700 {
device_type = "cpu";
- compatible = "qcom,kryo685";
+ compatible = "arm,cortex-x1";
reg = <0x0 0x700>;
enable-method = "psci";
next-level-cache = <&L2_700>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 236/600] arm64: dts: qcom: pm8350: fix thermal zone name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (234 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 235/600] arm64: dts: qcom: sm8350: Use proper CPU compatibles Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 237/600] arm64: dts: qcom: pm8350b: " Greg Kroah-Hartman
` (374 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Dmitry Baryshkov,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[ Upstream commit 64f19c06f704846db5e4885ca63c689d9bef5723 ]
The name of the thermal zone in pm8350.dtsi (pm8350c-thermal) conflicts
with the thermal zone in pm8350c.dtsi. Rename the thermal zone according
to the chip name.
Fixes: 7a79b95f4288 ("arm64: dts: qcom: pm8350: add temp sensor and thermal zone config")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230707123027.1510723-3-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pm8350.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/pm8350.dtsi b/arch/arm64/boot/dts/qcom/pm8350.dtsi
index 2dfeb99300d74..9ed9ba23e81e4 100644
--- a/arch/arm64/boot/dts/qcom/pm8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8350.dtsi
@@ -8,7 +8,7 @@
/ {
thermal-zones {
- pm8350_thermal: pm8350c-thermal {
+ pm8350_thermal: pm8350-thermal {
polling-delay-passive = <100>;
polling-delay = <0>;
thermal-sensors = <&pm8350_temp_alarm>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 237/600] arm64: dts: qcom: pm8350b: fix thermal zone name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (235 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 236/600] arm64: dts: qcom: pm8350: fix thermal zone name Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 238/600] arm64: dts: qcom: pmr735b: " Greg Kroah-Hartman
` (373 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Dmitry Baryshkov,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[ Upstream commit aad41d9e6c44dfe299cddab97528a5333f17bdfe ]
The name of the thermal zone in pm8350b.dtsi (pm8350c-thermal) conflicts
with the thermal zone in pm8350c.dtsi. Rename the thermal zone according
to the chip name.
Fixes: 5c1399299d9d ("arm64: dts: qcom: pm8350b: add temp sensor and thermal zone config")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230707123027.1510723-4-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pm8350b.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/pm8350b.dtsi b/arch/arm64/boot/dts/qcom/pm8350b.dtsi
index f1c7bd9d079c2..05c1058988927 100644
--- a/arch/arm64/boot/dts/qcom/pm8350b.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm8350b.dtsi
@@ -8,7 +8,7 @@
/ {
thermal-zones {
- pm8350b_thermal: pm8350c-thermal {
+ pm8350b_thermal: pm8350b-thermal {
polling-delay-passive = <100>;
polling-delay = <0>;
thermal-sensors = <&pm8350b_temp_alarm>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 238/600] arm64: dts: qcom: pmr735b: fix thermal zone name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (236 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 237/600] arm64: dts: qcom: pm8350b: " Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 239/600] arm64: dts: qcom: pmk8350: fix ADC-TM compatible string Greg Kroah-Hartman
` (372 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Dmitry Baryshkov,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[ Upstream commit 99f8cf491d546cd668236f573c7d846d3e94f2d6 ]
The name of the thermal zone in pmr735b.dtsi (pmr735a-thermal) conflicts
with the thermal zone in pmr735a.dtsi. Rename the thermal zone according
to the chip name.
Fixes: 6f3426b3dea4 ("arm64: dts: qcom: pmr735b: add temp sensor and thermal zone config")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230707123027.1510723-5-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pmr735b.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/pmr735b.dtsi b/arch/arm64/boot/dts/qcom/pmr735b.dtsi
index ec24c4478005a..f7473e2473224 100644
--- a/arch/arm64/boot/dts/qcom/pmr735b.dtsi
+++ b/arch/arm64/boot/dts/qcom/pmr735b.dtsi
@@ -8,7 +8,7 @@
/ {
thermal-zones {
- pmr735a_thermal: pmr735a-thermal {
+ pmr735b_thermal: pmr735b-thermal {
polling-delay-passive = <100>;
polling-delay = <0>;
thermal-sensors = <&pmr735b_temp_alarm>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 239/600] arm64: dts: qcom: pmk8350: fix ADC-TM compatible string
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (237 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 238/600] arm64: dts: qcom: pmr735b: " Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 240/600] arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent Greg Kroah-Hartman
` (371 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Dmitry Baryshkov,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[ Upstream commit 435a73d7377ceb29c1a22d2711dd85c831b40c45 ]
The commit b2de43136058 ("arm64: dts: qcom: pmk8350: Add peripherals for
pmk8350") for the ADC TM (thermal monitoring device) have used the
compatible string from the vendor kernel ("qcom,adc-tm7"). Use the
proper compatible string that is defined in the upstream kernel
("qcom,spmi-adc-tm5-gen2").
Fixes: b2de43136058 ("arm64: dts: qcom: pmk8350: Add peripherals for pmk8350")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230707123027.1510723-6-dmitry.baryshkov@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pmk8350.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/pmk8350.dtsi b/arch/arm64/boot/dts/qcom/pmk8350.dtsi
index f0d256d99e62e..29cfb6fca9bf7 100644
--- a/arch/arm64/boot/dts/qcom/pmk8350.dtsi
+++ b/arch/arm64/boot/dts/qcom/pmk8350.dtsi
@@ -44,7 +44,7 @@ pmk8350_vadc: adc@3100 {
};
pmk8350_adc_tm: adc-tm@3400 {
- compatible = "qcom,adc-tm7";
+ compatible = "qcom,spmi-adc-tm5-gen2";
reg = <0x3400>;
interrupts = <0x0 0x34 0x0 IRQ_TYPE_EDGE_RISING>;
#address-cells = <1>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 240/600] arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (238 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 239/600] arm64: dts: qcom: pmk8350: fix ADC-TM compatible string Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 241/600] ARM: dts: stm32: Rename mdio0 to mdio Greg Kroah-Hartman
` (370 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 339d38a436f30d0f874815eafc7de2257346bf26 ]
The PCIe hosts on SM8250 are cache-coherent. Mark them as such.
Fixes: e53bdfc00977 ("arm64: dts: qcom: sm8250: Add PCIe support")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230704-topic-8250_pcie_dmac-v1-1-799603a980b0@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8250.dtsi | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8250.dtsi b/arch/arm64/boot/dts/qcom/sm8250.dtsi
index c27f88c9f7b2a..4d9b30f0b2841 100644
--- a/arch/arm64/boot/dts/qcom/sm8250.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250.dtsi
@@ -1862,6 +1862,7 @@ pcie0: pci@1c00000 {
pinctrl-names = "default";
pinctrl-0 = <&pcie0_default_state>;
+ dma-coherent;
status = "disabled";
};
@@ -1968,6 +1969,7 @@ pcie1: pci@1c08000 {
pinctrl-names = "default";
pinctrl-0 = <&pcie1_default_state>;
+ dma-coherent;
status = "disabled";
};
@@ -2076,6 +2078,7 @@ pcie2: pci@1c10000 {
pinctrl-names = "default";
pinctrl-0 = <&pcie2_default_state>;
+ dma-coherent;
status = "disabled";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 241/600] ARM: dts: stm32: Rename mdio0 to mdio
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (239 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 240/600] arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 242/600] ARM: dts: stm32: YAML validation fails for Argon Boards Greg Kroah-Hartman
` (369 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Vasut, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit a306d8962a24f4e8385853793fd58f9792c7aa61 ]
Replace "mdio0" node with "mdio" to match mdio.yaml DT schema.
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Stable-dep-of: 0ee0ef38aa9f ("ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 2 +-
arch/arm/boot/dts/stm32mp157c-ev1.dts | 2 +-
arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts | 2 +-
arch/arm/boot/dts/stm32mp157c-odyssey.dts | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi | 2 +-
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi | 2 +-
8 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
index d540550f7da26..7d11c50b9e408 100644
--- a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
@@ -173,7 +173,7 @@ ðernet0 {
phy-handle = <&phy0>;
st,eth-ref-clk-sel;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp157c-ev1.dts b/arch/arm/boot/dts/stm32mp157c-ev1.dts
index 050c3c27a4203..b72d5e8aa4669 100644
--- a/arch/arm/boot/dts/stm32mp157c-ev1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ev1.dts
@@ -144,7 +144,7 @@ ðernet0 {
max-speed = <1000>;
phy-handle = <&phy0>;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts b/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts
index e8d2ec41d5374..cb00ce7cec8b1 100644
--- a/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-lxa-mc1.dts
@@ -112,7 +112,7 @@ ðernet0 {
phy-handle = <ðphy>;
status = "okay";
- mdio0 {
+ mdio {
compatible = "snps,dwmac-mdio";
#address-cells = <1>;
#size-cells = <0>;
diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey.dts b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
index ed66d25b8bf3d..a8b3f7a547036 100644
--- a/arch/arm/boot/dts/stm32mp157c-odyssey.dts
+++ b/arch/arm/boot/dts/stm32mp157c-odyssey.dts
@@ -41,7 +41,7 @@ ðernet0 {
assigned-clock-rates = <125000000>; /* Clock PLL4 to 750Mhz in ATF/U-Boot */
st,eth-clk-sel;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
index d3b85a8764d74..c06edd2eacb0c 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
@@ -125,7 +125,7 @@ ðernet0 {
max-speed = <100>;
phy-handle = <&phy0>;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
index f068e4fcc404f..dae602b7a54df 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
@@ -151,7 +151,7 @@ ðernet0 {
max-speed = <1000>;
phy-handle = <&phy0>;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi
index bb4ac6c13cbd3..39af79dc654cc 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-drc-compact.dtsi
@@ -78,7 +78,7 @@ ðernet0 {
max-speed = <1000>;
phy-handle = <&phy0>;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
diff --git a/arch/arm/boot/dts/stm32mp15xx-dkx.dtsi b/arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
index fdc48536e97d1..73a6a7b278b90 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dkx.dtsi
@@ -141,7 +141,7 @@ ðernet0 {
max-speed = <1000>;
phy-handle = <&phy0>;
- mdio0 {
+ mdio {
#address-cells = <1>;
#size-cells = <0>;
compatible = "snps,dwmac-mdio";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 242/600] ARM: dts: stm32: YAML validation fails for Argon Boards
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (240 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 241/600] ARM: dts: stm32: Rename mdio0 to mdio Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 243/600] ARM: dts: stm32: adopt generic iio bindings for adc channels on emstamp-argon Greg Kroah-Hartman
` (368 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Pierre-Yves MORDRET,
Alexandre Torgue, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
[ Upstream commit fc8d2b21bc5d5d7a6eadaa8c2a5d2e6856689480 ]
"make dtbs_check" gives following output :
stm32mp157c-emstamp-argon.dtb: gpu@59000000: 'contiguous-area' does not match
any of the regexes: 'pinctrl-[0-9]+'
>From schema: Documentation/devicetree/bindings/gpu/vivante,gc.yaml
Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Stable-dep-of: 0ee0ef38aa9f ("ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
index 7d11c50b9e408..b01470a9a3d53 100644
--- a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
@@ -68,11 +68,6 @@ retram: retram@38000000 {
reg = <0x38000000 0x10000>;
no-map;
};
-
- gpu_reserved: gpu@dc000000 {
- reg = <0xdc000000 0x4000000>;
- no-map;
- };
};
led: gpio_leds {
@@ -183,10 +178,6 @@ phy0: ethernet-phy@0 {
};
};
-&gpu {
- contiguous-area = <&gpu_reserved>;
-};
-
&hash1 {
status = "okay";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 243/600] ARM: dts: stm32: adopt generic iio bindings for adc channels on emstamp-argon
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (241 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 242/600] ARM: dts: stm32: YAML validation fails for Argon Boards Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 244/600] ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon Greg Kroah-Hartman
` (367 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Olivier Moysan, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Olivier Moysan <olivier.moysan@foss.st.com>
[ Upstream commit c46e9b6cc98245f7264a8d15394d1f95d433abec ]
Use STM32 ADC generic bindings instead of legacy bindings on
emtrion GmbH Argon boards.
The STM32 ADC specific binding to declare channels has been deprecated,
hence adopt the generic IIO channels bindings, instead.
The STM32MP151 device tree now exposes internal channels using the
generic binding. This makes the change mandatory here to avoid a mixed
use of legacy and generic binding, which is not supported by the driver.
Signed-off-by: Olivier Moysan <olivier.moysan@foss.st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Stable-dep-of: 0ee0ef38aa9f ("ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
index b01470a9a3d53..94e38141af672 100644
--- a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
@@ -97,9 +97,11 @@ &adc {
adc1: adc@0 {
pinctrl-names = "default";
pinctrl-0 = <&adc1_in6_pins_a>;
- st,min-sample-time-nsecs = <5000>;
- st,adc-channels = <6>;
status = "disabled";
+ channel@6 {
+ reg = <6>;
+ st,min-sample-time-ns = <5000>;
+ };
};
adc2: adc@100 {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 244/600] ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (242 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 243/600] ARM: dts: stm32: adopt generic iio bindings for adc channels on emstamp-argon Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 245/600] ARM: dts: stm32: YAML validation fails for Odyssey Boards Greg Kroah-Hartman
` (366 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Vasut, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 0ee0ef38aa9f75f21b51f729dd42b2e932515188 ]
Add missing "detach" mailbox to this board to permit the CPU to inform
the remote processor on a detach. This signal allows the remote processor
firmware to stop IPC communication and to reinitialize the resources for
a re-attach.
Without this mailbox, detach is not possible and kernel log contains the
following warning to, so make sure all the STM32MP15xx platform DTs are
in sync regarding the mailboxes to fix the detach issue and the warning:
"
stm32-rproc 10000000.m4: mbox_request_channel_byname() could not locate channel named "detach"
"
Fixes: 6257dfc1c412 ("ARM: dts: stm32: Add coprocessor detach mbox on stm32mp15x-dkx boards")
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
index 94e38141af672..fd89542c69c93 100644
--- a/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-emstamp-argon.dtsi
@@ -368,8 +368,8 @@ &iwdg2 {
&m4_rproc {
memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
<&vdev0vring1>, <&vdev0buffer>;
- mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
- mbox-names = "vq0", "vq1", "shutdown";
+ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
+ mbox-names = "vq0", "vq1", "shutdown", "detach";
interrupt-parent = <&exti>;
interrupts = <68 1>;
interrupt-names = "wdg";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 245/600] ARM: dts: stm32: YAML validation fails for Odyssey Boards
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (243 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 244/600] ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 246/600] ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM Greg Kroah-Hartman
` (365 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Pierre-Yves MORDRET,
Alexandre Torgue, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
[ Upstream commit 84a34e1862aae43e4dcdfb743a7dd3ade1fe4a3c ]
"make dtbs_check" gives following output :
stm32mp157c-odyssey.dt.yaml: gpu@59000000: 'contiguous-area' does not match
any of the regexes: 'pinctrl-[0-9]+'
>From schema: Documentation/devicetree/bindings/gpu/vivante,gc.yaml
Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Stable-dep-of: 966f04a89d77 ("ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
index 2d9461006810c..e22871dc580c8 100644
--- a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
@@ -62,11 +62,6 @@ retram: retram@38000000 {
reg = <0x38000000 0x10000>;
no-map;
};
-
- gpu_reserved: gpu@d4000000 {
- reg = <0xd4000000 0x4000000>;
- no-map;
- };
};
led {
@@ -80,11 +75,6 @@ led-blue {
};
};
-&gpu {
- contiguous-area = <&gpu_reserved>;
- status = "okay";
-};
-
&i2c2 {
pinctrl-names = "default";
pinctrl-0 = <&i2c2_pins_a>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 246/600] ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (244 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 245/600] ARM: dts: stm32: YAML validation fails for Odyssey Boards Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 247/600] ARM: dts: stm32: Update to generic ADC channel binding on DHSOM systems Greg Kroah-Hartman
` (364 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Vasut, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 966f04a89d77548e673de2c400abe0b2cf5c15db ]
Add missing "detach" mailbox to this board to permit the CPU to inform
the remote processor on a detach. This signal allows the remote processor
firmware to stop IPC communication and to reinitialize the resources for
a re-attach.
Without this mailbox, detach is not possible and kernel log contains the
following warning to, so make sure all the STM32MP15xx platform DTs are
in sync regarding the mailboxes to fix the detach issue and the warning:
"
stm32-rproc 10000000.m4: mbox_request_channel_byname() could not locate channel named "detach"
"
Fixes: 6257dfc1c412 ("ARM: dts: stm32: Add coprocessor detach mbox on stm32mp15x-dkx boards")
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
index e22871dc580c8..cf74852514906 100644
--- a/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-odyssey-som.dtsi
@@ -230,8 +230,8 @@ &iwdg2 {
&m4_rproc {
memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
<&vdev0vring1>, <&vdev0buffer>;
- mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
- mbox-names = "vq0", "vq1", "shutdown";
+ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
+ mbox-names = "vq0", "vq1", "shutdown", "detach";
interrupt-parent = <&exti>;
interrupts = <68 1>;
status = "okay";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 247/600] ARM: dts: stm32: Update to generic ADC channel binding on DHSOM systems
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (245 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 246/600] ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 248/600] ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM Greg Kroah-Hartman
` (363 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Vasut, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 9bcfc3cdc903485a52c6f471f4ae96a41fa51803 ]
The generic ADC channel binding is recommended over legacy one, update the
DT to the modern binding. No functional change. For further details, see
commit which adds the generic binding to STM32 ADC binding document:
'664b9879f56e ("dt-bindings: iio: stm32-adc: add generic channel binding")'
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Stable-dep-of: deb7edbc27a6 ("ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 18 +++++----
.../boot/dts/stm32mp15xx-dhcor-avenger96.dtsi | 38 +++++++++++++++----
2 files changed, 40 insertions(+), 16 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
index c06edd2eacb0c..e61df23d361a7 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
@@ -80,17 +80,19 @@ &adc {
vdda-supply = <&vdda>;
vref-supply = <&vdda>;
status = "okay";
+};
- adc1: adc@0 {
- st,min-sample-time-nsecs = <5000>;
- st,adc-channels = <0>;
- status = "okay";
+&adc1 {
+ channel@0 {
+ reg = <0>;
+ st,min-sample-time-ns = <5000>;
};
+};
- adc2: adc@100 {
- st,adc-channels = <1>;
- st,min-sample-time-nsecs = <5000>;
- status = "okay";
+&adc2 {
+ channel@1 {
+ reg = <1>;
+ st,min-sample-time-ns = <5000>;
};
};
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
index dae602b7a54df..b7ba43865514d 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcor-avenger96.dtsi
@@ -112,17 +112,39 @@ &adc {
vdda-supply = <&vdda>;
vref-supply = <&vdda>;
status = "okay";
+};
- adc1: adc@0 {
- st,adc-channels = <0 1 6>;
- st,min-sample-time-nsecs = <5000>;
- status = "okay";
+&adc1 {
+ channel@0 {
+ reg = <0>;
+ st,min-sample-time-ns = <5000>;
};
- adc2: adc@100 {
- st,adc-channels = <0 1 2>;
- st,min-sample-time-nsecs = <5000>;
- status = "okay";
+ channel@1 {
+ reg = <1>;
+ st,min-sample-time-ns = <5000>;
+ };
+
+ channel@6 {
+ reg = <6>;
+ st,min-sample-time-ns = <5000>;
+ };
+};
+
+&adc2 {
+ channel@0 {
+ reg = <0>;
+ st,min-sample-time-ns = <5000>;
+ };
+
+ channel@1 {
+ reg = <1>;
+ st,min-sample-time-ns = <5000>;
+ };
+
+ channel@2 {
+ reg = <2>;
+ st,min-sample-time-ns = <5000>;
};
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 248/600] ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (246 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 247/600] ARM: dts: stm32: Update to generic ADC channel binding on DHSOM systems Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 249/600] firmware: ti_sci: Use system_state to determine polling Greg Kroah-Hartman
` (362 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Vasut, Alexandre Torgue,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit deb7edbc27a6ec4d8f5edfd8519b7ed13cbd2a52 ]
Add missing "detach" mailbox to this board to permit the CPU to inform
the remote processor on a detach. This signal allows the remote processor
firmware to stop IPC communication and to reinitialize the resources for
a re-attach.
Without this mailbox, detach is not possible and kernel log contains the
following warning to, so make sure all the STM32MP15xx platform DTs are
in sync regarding the mailboxes to fix the detach issue and the warning:
"
stm32-rproc 10000000.m4: mbox_request_channel_byname() could not locate channel named "detach"
"
Fixes: 6257dfc1c412 ("ARM: dts: stm32: Add coprocessor detach mbox on stm32mp15x-dkx boards")
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Alexandre Torgue <alexandre.torgue@foss.st.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
index e61df23d361a7..74a11ccc5333f 100644
--- a/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
+++ b/arch/arm/boot/dts/stm32mp15xx-dhcom-som.dtsi
@@ -416,8 +416,8 @@ &iwdg2 {
&m4_rproc {
memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
<&vdev0vring1>, <&vdev0buffer>;
- mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>;
- mbox-names = "vq0", "vq1", "shutdown";
+ mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
+ mbox-names = "vq0", "vq1", "shutdown", "detach";
interrupt-parent = <&exti>;
interrupts = <68 1>;
status = "okay";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 249/600] firmware: ti_sci: Use system_state to determine polling
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (247 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 248/600] ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 250/600] drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() Greg Kroah-Hartman
` (361 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Francesco Dolcini, Wadim Egorov,
Nishanth Menon, Sasha Levin, Francesco Dolcini
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nishanth Menon <nm@ti.com>
[ Upstream commit 9225bcdedf16297a346082e7d23b0e8434aa98ed ]
Commit b9e8a7d950ff ("firmware: ti_sci: Switch transport to polled
mode during system suspend") aims to resolve issues with tisci
operations during system suspend operation. However, the system may
enter a no_irq stage in various other usage modes, including power-off
and restart. To determine if polling mode is appropriate, use the
system_state instead.
While at this, drop the unused is_suspending state variable and
related helpers.
Fixes: b9e8a7d950ff ("firmware: ti_sci: Switch transport to polled mode during system suspend")
Reported-by: Francesco Dolcini <francesco@dolcini.it>
Reported-by: Wadim Egorov <w.egorov@phytec.de>
Tested-by: Francesco Dolcini <francesco.dolcini@toradex.com> # Toradex Verdin AM62
Link: https://lore.kernel.org/r/20230620130329.4120443-1-nm@ti.com
Closes: https://lore.kernel.org/all/ZGeHMjlnob2GFyHF@francesco-nb.int.toradex.com/
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/firmware/ti_sci.c | 36 ++----------------------------------
1 file changed, 2 insertions(+), 34 deletions(-)
diff --git a/drivers/firmware/ti_sci.c b/drivers/firmware/ti_sci.c
index 6281e7153b475..4c550cfbc086c 100644
--- a/drivers/firmware/ti_sci.c
+++ b/drivers/firmware/ti_sci.c
@@ -97,7 +97,6 @@ struct ti_sci_desc {
* @node: list head
* @host_id: Host ID
* @users: Number of users of this instance
- * @is_suspending: Flag set to indicate in suspend path.
*/
struct ti_sci_info {
struct device *dev;
@@ -116,7 +115,6 @@ struct ti_sci_info {
u8 host_id;
/* protected by ti_sci_list_mutex */
int users;
- bool is_suspending;
};
#define cl_to_ti_sci_info(c) container_of(c, struct ti_sci_info, cl)
@@ -418,14 +416,14 @@ static inline int ti_sci_do_xfer(struct ti_sci_info *info,
ret = 0;
- if (!info->is_suspending) {
+ if (system_state <= SYSTEM_RUNNING) {
/* And we wait for the response. */
timeout = msecs_to_jiffies(info->desc->max_rx_timeout_ms);
if (!wait_for_completion_timeout(&xfer->done, timeout))
ret = -ETIMEDOUT;
} else {
/*
- * If we are suspending, we cannot use wait_for_completion_timeout
+ * If we are !running, we cannot use wait_for_completion_timeout
* during noirq phase, so we must manually poll the completion.
*/
ret = read_poll_timeout_atomic(try_wait_for_completion, done_state,
@@ -3282,35 +3280,6 @@ static int tisci_reboot_handler(struct notifier_block *nb, unsigned long mode,
return NOTIFY_BAD;
}
-static void ti_sci_set_is_suspending(struct ti_sci_info *info, bool is_suspending)
-{
- info->is_suspending = is_suspending;
-}
-
-static int ti_sci_suspend(struct device *dev)
-{
- struct ti_sci_info *info = dev_get_drvdata(dev);
- /*
- * We must switch operation to polled mode now as drivers and the genpd
- * layer may make late TI SCI calls to change clock and device states
- * from the noirq phase of suspend.
- */
- ti_sci_set_is_suspending(info, true);
-
- return 0;
-}
-
-static int ti_sci_resume(struct device *dev)
-{
- struct ti_sci_info *info = dev_get_drvdata(dev);
-
- ti_sci_set_is_suspending(info, false);
-
- return 0;
-}
-
-static DEFINE_SIMPLE_DEV_PM_OPS(ti_sci_pm_ops, ti_sci_suspend, ti_sci_resume);
-
/* Description for K2G */
static const struct ti_sci_desc ti_sci_pmmc_k2g_desc = {
.default_host_id = 2,
@@ -3519,7 +3488,6 @@ static struct platform_driver ti_sci_driver = {
.driver = {
.name = "ti-sci",
.of_match_table = of_match_ptr(ti_sci_of_match),
- .pm = &ti_sci_pm_ops,
},
};
module_platform_driver(ti_sci_driver);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 250/600] drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (248 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 249/600] firmware: ti_sci: Use system_state to determine polling Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 251/600] ARM: dts: BCM53573: Drop nonexistent #usb-cells Greg Kroah-Hartman
` (360 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christian König, Arnd Bergmann,
Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <arnd@arndb.de>
[ Upstream commit 822130b5e8834ab30ad410cf19a582e5014b9a85 ]
On 32-bit architectures comparing a resource against a value larger than
U32_MAX can cause a warning:
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c:1344:18: error: result of comparison of constant 4294967296 with expression of type 'resource_size_t' (aka 'unsigned int') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
res->start > 0x100000000ull)
~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
As gcc does not warn about this in dead code, add an IS_ENABLED() check at
the start of the function. This will always return success but not actually resize
the BAR on 32-bit architectures without high memory, which is exactly what
we want here, as the driver can fall back to bank switching the VRAM
access.
Fixes: 31b8adab3247 ("drm/amdgpu: require a root bus window above 4GB for BAR resize")
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index e6427a00cf6d6..9aac9e755609d 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1212,6 +1212,9 @@ int amdgpu_device_resize_fb_bar(struct amdgpu_device *adev)
u16 cmd;
int r;
+ if (!IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT))
+ return 0;
+
/* Bypass for VF */
if (amdgpu_sriov_vf(adev))
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 251/600] ARM: dts: BCM53573: Drop nonexistent #usb-cells
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (249 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 250/600] drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 252/600] ARM: dts: BCM53573: Add cells sizes to PCIe node Greg Kroah-Hartman
` (359 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rafał Miłecki,
Florian Fainelli, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <rafal@milecki.pl>
[ Upstream commit 05d2c3d552b8c92fc397377d9d1112fc58e2cd59 ]
Such property simply doesn't exist (is not documented or used anywhere).
This fixes:
arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: usb@d000: Unevaluated properties are not allowed ('#usb-cells' was unexpected)
From schema: Documentation/devicetree/bindings/usb/generic-ohci.yaml
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20230707114004.2740-2-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/bcm53573.dtsi | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arm/boot/dts/bcm53573.dtsi b/arch/arm/boot/dts/bcm53573.dtsi
index 3f03a381db0f2..3cb71829e8597 100644
--- a/arch/arm/boot/dts/bcm53573.dtsi
+++ b/arch/arm/boot/dts/bcm53573.dtsi
@@ -156,8 +156,6 @@ ehci_port2: port@2 {
};
ohci: usb@d000 {
- #usb-cells = <0>;
-
compatible = "generic-ohci";
reg = <0xd000 0x1000>;
interrupt-parent = <&gic>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 252/600] ARM: dts: BCM53573: Add cells sizes to PCIe node
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (250 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 251/600] ARM: dts: BCM53573: Drop nonexistent #usb-cells Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 253/600] ARM: dts: BCM53573: Use updated "spi-gpio" binding properties Greg Kroah-Hartman
` (358 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rafał Miłecki,
Florian Fainelli, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <rafal@milecki.pl>
[ Upstream commit 3392ef368d9b04622fe758b1079b512664b6110a ]
This fixes:
arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: pcie@2000: '#address-cells' is a required property
From schema: /lib/python3.10/site-packages/dtschema/schemas/pci/pci-bus.yaml
arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dtb: pcie@2000: '#size-cells' is a required property
From schema: /lib/python3.10/site-packages/dtschema/schemas/pci/pci-bus.yaml
Two properties that need to be added later are "device_type" and
"ranges". Adding "device_type" on its own causes a new warning and the
value of "ranges" needs to be determined yet.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20230707114004.2740-3-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/bcm53573.dtsi | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/boot/dts/bcm53573.dtsi b/arch/arm/boot/dts/bcm53573.dtsi
index 3cb71829e8597..eed1a6147f0bf 100644
--- a/arch/arm/boot/dts/bcm53573.dtsi
+++ b/arch/arm/boot/dts/bcm53573.dtsi
@@ -127,6 +127,9 @@ uart0: serial@300 {
pcie0: pcie@2000 {
reg = <0x00002000 0x1000>;
+
+ #address-cells = <3>;
+ #size-cells = <2>;
};
usb2: usb2@4000 {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 253/600] ARM: dts: BCM53573: Use updated "spi-gpio" binding properties
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (251 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 252/600] ARM: dts: BCM53573: Add cells sizes to PCIe node Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 254/600] arm64: tegra: Fix HSUART for Jetson AGX Orin Greg Kroah-Hartman
` (357 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rafał Miłecki,
Florian Fainelli, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <rafal@milecki.pl>
[ Upstream commit 2c0fd6b3d0778ceab40205315ccef74568490f17 ]
Switch away from deprecated properties.
This fixes:
arch/arm/boot/dts/broadcom/bcm947189acdbmr.dtb: spi: gpio-sck: False schema does not allow [[3, 21, 0]]
From schema: Documentation/devicetree/bindings/spi/spi-gpio.yaml
arch/arm/boot/dts/broadcom/bcm947189acdbmr.dtb: spi: gpio-miso: False schema does not allow [[3, 22, 0]]
From schema: Documentation/devicetree/bindings/spi/spi-gpio.yaml
arch/arm/boot/dts/broadcom/bcm947189acdbmr.dtb: spi: gpio-mosi: False schema does not allow [[3, 23, 0]]
From schema: Documentation/devicetree/bindings/spi/spi-gpio.yaml
arch/arm/boot/dts/broadcom/bcm947189acdbmr.dtb: spi: 'sck-gpios' is a required property
From schema: Documentation/devicetree/bindings/spi/spi-gpio.yaml
arch/arm/boot/dts/broadcom/bcm947189acdbmr.dtb: spi: Unevaluated properties are not allowed ('gpio-miso', 'gpio-mosi', 'gpio-sck' were unexpected)
From schema: Documentation/devicetree/bindings/spi/spi-gpio.yaml
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20230707114004.2740-4-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/bcm947189acdbmr.dts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/bcm947189acdbmr.dts b/arch/arm/boot/dts/bcm947189acdbmr.dts
index 16e70a264faf5..458bb6e2f5728 100644
--- a/arch/arm/boot/dts/bcm947189acdbmr.dts
+++ b/arch/arm/boot/dts/bcm947189acdbmr.dts
@@ -60,9 +60,9 @@ button-wps {
spi {
compatible = "spi-gpio";
num-chipselects = <1>;
- gpio-sck = <&chipcommon 21 0>;
- gpio-miso = <&chipcommon 22 0>;
- gpio-mosi = <&chipcommon 23 0>;
+ sck-gpios = <&chipcommon 21 0>;
+ miso-gpios = <&chipcommon 22 0>;
+ mosi-gpios = <&chipcommon 23 0>;
cs-gpios = <&chipcommon 24 0>;
#address-cells = <1>;
#size-cells = <0>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 254/600] arm64: tegra: Fix HSUART for Jetson AGX Orin
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (252 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 253/600] ARM: dts: BCM53573: Use updated "spi-gpio" binding properties Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 255/600] arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again Greg Kroah-Hartman
` (356 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jon Hunter, Thierry Reding,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jon Hunter <jonathanh@nvidia.com>
[ Upstream commit 861dbb2b15b1049113887fb95e856f7123eea0cc ]
After commit 71de0a054d0e ("arm64: tegra: Drop serial clock-names and
reset-names") was applied, the HSUART failed to probe and the following
error is seen:
serial-tegra 3100000.serial: Couldn't get the reset
serial-tegra: probe of 3100000.serial failed with error -2
Commit 71de0a054d0e ("arm64: tegra: Drop serial clock-names and
reset-names") is correct because the "reset-names" property is not
needed for 8250 UARTs. However, the "reset-names" is required for the
HSUART and should have been populated as part of commit ff578db7b693
("arm64: tegra: Enable UART instance on 40-pin header") that
enabled the HSUART for Jetson AGX Orin. Fix this by populating the
"reset-names" property for the HSUART on Jetson AGX Orin.
Fixes: ff578db7b693 ("arm64: tegra: Enable UART instance on 40-pin header")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
index 57ab753288144..f094011be9ed9 100644
--- a/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra234-p3737-0000+p3701-0000.dts
@@ -2004,6 +2004,7 @@ interrupt-controller@2a40000 {
serial@3100000 {
compatible = "nvidia,tegra194-hsuart";
+ reset-names = "serial";
status = "okay";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 255/600] arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (253 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 254/600] arm64: tegra: Fix HSUART for Jetson AGX Orin Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 256/600] arm64: dts: qcom: pm6150l: Add missing short interrupt Greg Kroah-Hartman
` (355 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Krzysztof Kozlowski, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit b8fbeea0253211d97c579eae787274633d3eaf0d ]
gpio-keys,wakeup is a deprecated property:
m8250-sony-xperia-edo-pdx206.dtb: gpio-keys: key-camera-focus: Unevaluated properties are not allowed ('gpio-key,wakeup' was unexpected)
Fixes: a422c6a91a66 ("arm64: dts: qcom: sm8250-edo: Rectify gpio-keys")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230711063011.16222-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
index 259798a959749..3b710c6a326a5 100644
--- a/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8250-sony-xperia-edo.dtsi
@@ -60,7 +60,7 @@ key-camera-focus {
gpios = <&pm8150b_gpios 2 GPIO_ACTIVE_LOW>;
debounce-interval = <15>;
linux,can-disable;
- gpio-key,wakeup;
+ wakeup-source;
};
key-camera-snapshot {
@@ -69,7 +69,7 @@ key-camera-snapshot {
gpios = <&pm8150b_gpios 1 GPIO_ACTIVE_LOW>;
debounce-interval = <15>;
linux,can-disable;
- gpio-key,wakeup;
+ wakeup-source;
};
key-vol-down {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 256/600] arm64: dts: qcom: pm6150l: Add missing short interrupt
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (254 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 255/600] arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 257/600] arm64: dts: qcom: pm660l: " Greg Kroah-Hartman
` (354 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Luca Weiss,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 7e1f024ef0d1da456f61d00f01dc3287ede915b3 ]
Add the missing short interrupt. This fixes the schema warning:
wled@d800: interrupt-names: ['ovp'] is too short
Fixes: fe508ced49dd ("arm64: dts: qcom: pm6150l: Add wled node")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Luca Weiss <luca@z3ntu.xyz>
Link: https://lore.kernel.org/r/20230626-topic-bindingsfixups-v1-3-254ae8642e69@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pm6150l.dtsi | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/pm6150l.dtsi b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
index f02c223ef4485..06d729ff65a9d 100644
--- a/arch/arm64/boot/dts/qcom/pm6150l.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm6150l.dtsi
@@ -75,8 +75,9 @@ pm6150l_lsid5: pmic@5 {
pm6150l_wled: leds@d800 {
compatible = "qcom,pm6150l-wled";
reg = <0xd800>, <0xd900>;
- interrupts = <0x5 0xd8 0x1 IRQ_TYPE_EDGE_RISING>;
- interrupt-names = "ovp";
+ interrupts = <0x5 0xd8 0x1 IRQ_TYPE_EDGE_RISING>,
+ <0x5 0xd8 0x2 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "ovp", "short";
label = "backlight";
status = "disabled";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 257/600] arm64: dts: qcom: pm660l: Add missing short interrupt
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (255 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 256/600] arm64: dts: qcom: pm6150l: Add missing short interrupt Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 258/600] arm64: dts: qcom: pmi8994: Add missing OVP interrupt Greg Kroah-Hartman
` (353 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 9a4ac09db3c7413e334b4abd6b2f6de8930dd781 ]
Add the missing short interrupt. This fixes the schema warning:
wled@d800: interrupt-names: ['ovp'] is too short
Fixes: 7b56a804e58b ("arm64: dts: qcom: pm660l: Add WLED support")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230626-topic-bindingsfixups-v1-4-254ae8642e69@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pm660l.dtsi | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/pm660l.dtsi b/arch/arm64/boot/dts/qcom/pm660l.dtsi
index 8aa0a5078772b..88606b996d690 100644
--- a/arch/arm64/boot/dts/qcom/pm660l.dtsi
+++ b/arch/arm64/boot/dts/qcom/pm660l.dtsi
@@ -74,8 +74,9 @@ pm660l_lpg: pwm {
pm660l_wled: leds@d800 {
compatible = "qcom,pm660l-wled";
reg = <0xd800>, <0xd900>;
- interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>;
- interrupt-names = "ovp";
+ interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>,
+ <0x3 0xd8 0x2 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "ovp", "short";
label = "backlight";
status = "disabled";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 258/600] arm64: dts: qcom: pmi8994: Add missing OVP interrupt
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (256 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 257/600] arm64: dts: qcom: pm660l: " Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 259/600] arm64: tegra: Fix HSUART for Smaug Greg Kroah-Hartman
` (352 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 8db94432690371b1736e9a2566a9b3d8a73d5a97 ]
Add the missing OVP interrupt. This fixes the schema warning:
wled@d800: interrupt-names: ['short'] is too short
Fixes: 37aa540cbd30 ("arm64: dts: qcom: pmi8994: Add WLED node")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230626-topic-bindingsfixups-v1-6-254ae8642e69@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/pmi8994.dtsi | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/pmi8994.dtsi b/arch/arm64/boot/dts/qcom/pmi8994.dtsi
index 82b60e988d0f5..49902a3e161d9 100644
--- a/arch/arm64/boot/dts/qcom/pmi8994.dtsi
+++ b/arch/arm64/boot/dts/qcom/pmi8994.dtsi
@@ -54,8 +54,9 @@ pmi8994_spmi_regulators: regulators {
pmi8994_wled: wled@d800 {
compatible = "qcom,pmi8994-wled";
reg = <0xd800>, <0xd900>;
- interrupts = <3 0xd8 0x02 IRQ_TYPE_EDGE_RISING>;
- interrupt-names = "short";
+ interrupts = <0x3 0xd8 0x1 IRQ_TYPE_EDGE_RISING>,
+ <0x3 0xd8 0x2 IRQ_TYPE_EDGE_RISING>;
+ interrupt-names = "ovp", "short";
qcom,cabc;
qcom,external-pfet;
status = "disabled";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 259/600] arm64: tegra: Fix HSUART for Smaug
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (257 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 258/600] arm64: dts: qcom: pmi8994: Add missing OVP interrupt Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 260/600] drm/etnaviv: fix dumping of active MMU context Greg Kroah-Hartman
` (351 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Diogo Ivo, Jon Hunter,
Thierry Reding, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
[ Upstream commit 590bfe51838f6345a6a3288507661dc9b7208464 ]
After commit 71de0a054d0e ("arm64: tegra: Drop serial clock-names and
reset-names") was applied, the HSUART failed to probe and the following
error is seen:
serial-tegra 70006300.serial: Couldn't get the reset
serial-tegra: probe of 70006300.serial failed with error -2
Commit 71de0a054d0e ("arm64: tegra: Drop serial clock-names and
reset-names") is correct because the "reset-names" property is not
needed for 8250 UARTs. However, the "reset-names" is required for the
HSUART and should have been populated as part of commit a63c0cd83720c
("arm64: dts: tegra: smaug: Add Bluetooth node") that enabled the HSUART
for the Pixel C. Fix this by populating the "reset-names" property for
the HSUART on the Pixel C.
Fixes: a63c0cd83720 ("arm64: dts: tegra: smaug: Add Bluetooth node")
Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/nvidia/tegra210-smaug.dts | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
index 7c569695b7052..2b4dbfac84a70 100644
--- a/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
+++ b/arch/arm64/boot/dts/nvidia/tegra210-smaug.dts
@@ -1312,6 +1312,7 @@ serial@70006000 {
uartd: serial@70006300 {
compatible = "nvidia,tegra30-hsuart";
+ reset-names = "serial";
status = "okay";
bluetooth {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 260/600] drm/etnaviv: fix dumping of active MMU context
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (258 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 259/600] arm64: tegra: Fix HSUART for Smaug Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 261/600] block: cleanup queue_wc_store Greg Kroah-Hartman
` (350 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lucas Stach, Christian Gmeiner,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lucas Stach <l.stach@pengutronix.de>
[ Upstream commit 20faf2005ec85fa1a6acc9a74ff27de667f90576 ]
gpu->mmu_context is the MMU context of the last job in the HW queue, which
isn't necessarily the same as the context from the bad job. Dump the MMU
context from the scheduler determined bad submit to make it work as intended.
Fixes: 17e4660ae3d7 ("drm/etnaviv: implement per-process address spaces on MMUv2")
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Reviewed-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/etnaviv/etnaviv_dump.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_dump.c b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
index f418e0b75772e..0edcf8ceb4a78 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_dump.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_dump.c
@@ -125,9 +125,9 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit)
return;
etnaviv_dump_core = false;
- mutex_lock(&gpu->mmu_context->lock);
+ mutex_lock(&submit->mmu_context->lock);
- mmu_size = etnaviv_iommu_dump_size(gpu->mmu_context);
+ mmu_size = etnaviv_iommu_dump_size(submit->mmu_context);
/* We always dump registers, mmu, ring, hanging cmdbuf and end marker */
n_obj = 5;
@@ -157,7 +157,7 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit)
iter.start = __vmalloc(file_size, GFP_KERNEL | __GFP_NOWARN |
__GFP_NORETRY);
if (!iter.start) {
- mutex_unlock(&gpu->mmu_context->lock);
+ mutex_unlock(&submit->mmu_context->lock);
dev_warn(gpu->dev, "failed to allocate devcoredump file\n");
return;
}
@@ -169,18 +169,18 @@ void etnaviv_core_dump(struct etnaviv_gem_submit *submit)
memset(iter.hdr, 0, iter.data - iter.start);
etnaviv_core_dump_registers(&iter, gpu);
- etnaviv_core_dump_mmu(&iter, gpu->mmu_context, mmu_size);
+ etnaviv_core_dump_mmu(&iter, submit->mmu_context, mmu_size);
etnaviv_core_dump_mem(&iter, ETDUMP_BUF_RING, gpu->buffer.vaddr,
gpu->buffer.size,
etnaviv_cmdbuf_get_va(&gpu->buffer,
- &gpu->mmu_context->cmdbuf_mapping));
+ &submit->mmu_context->cmdbuf_mapping));
etnaviv_core_dump_mem(&iter, ETDUMP_BUF_CMD,
submit->cmdbuf.vaddr, submit->cmdbuf.size,
etnaviv_cmdbuf_get_va(&submit->cmdbuf,
- &gpu->mmu_context->cmdbuf_mapping));
+ &submit->mmu_context->cmdbuf_mapping));
- mutex_unlock(&gpu->mmu_context->lock);
+ mutex_unlock(&submit->mmu_context->lock);
/* Reserve space for the bomap */
if (n_bomap_pages) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 261/600] block: cleanup queue_wc_store
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (259 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 260/600] drm/etnaviv: fix dumping of active MMU context Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 262/600] block: dont allow enabling a cache on devices that dont support it Greg Kroah-Hartman
` (349 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christoph Hellwig, Jens Axboe,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <hch@lst.de>
[ Upstream commit c4e21bcd0f9d01f9c5d6c52007f5541871a5b1de ]
Get rid of the local queue_wc_store variable and handling setting and
clearing the QUEUE_FLAG_WC flag diretly instead the if / else if.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230707094239.107968-2-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Stable-dep-of: 43c9835b144c ("block: don't allow enabling a cache on devices that don't support it")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
block/blk-sysfs.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index e71b3b43927c0..4f34525bafac7 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -528,21 +528,13 @@ static ssize_t queue_wc_show(struct request_queue *q, char *page)
static ssize_t queue_wc_store(struct request_queue *q, const char *page,
size_t count)
{
- int set = -1;
-
if (!strncmp(page, "write back", 10))
- set = 1;
+ blk_queue_flag_set(QUEUE_FLAG_WC, q);
else if (!strncmp(page, "write through", 13) ||
!strncmp(page, "none", 4))
- set = 0;
-
- if (set == -1)
- return -EINVAL;
-
- if (set)
- blk_queue_flag_set(QUEUE_FLAG_WC, q);
- else
blk_queue_flag_clear(QUEUE_FLAG_WC, q);
+ else
+ return -EINVAL;
return count;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 262/600] block: dont allow enabling a cache on devices that dont support it
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (260 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 261/600] block: cleanup queue_wc_store Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 263/600] x86/mm: Fix PAT bit missing from page protection modify mask Greg Kroah-Hartman
` (348 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christoph Hellwig, Jens Axboe,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christoph Hellwig <hch@lst.de>
[ Upstream commit 43c9835b144c7ce29efe142d662529662a9eb376 ]
Currently the write_cache attribute allows enabling the QUEUE_FLAG_WC
flag on devices that never claimed the capability.
Fix that by adding a QUEUE_FLAG_HW_WC flag that is set by
blk_queue_write_cache and guards re-enabling the cache through sysfs.
Note that any rescan that calls blk_queue_write_cache will still
re-enable the write cache as in the current code.
Fixes: 93e9d8e836cb ("block: add ability to flag write back caching on a device")
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230707094239.107968-3-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
block/blk-settings.c | 7 +++++--
block/blk-sysfs.c | 11 +++++++----
include/linux/blkdev.h | 1 +
3 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/block/blk-settings.c b/block/blk-settings.c
index 291cf9df7fc29..86ff375c00ce4 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -824,10 +824,13 @@ EXPORT_SYMBOL(blk_set_queue_depth);
*/
void blk_queue_write_cache(struct request_queue *q, bool wc, bool fua)
{
- if (wc)
+ if (wc) {
+ blk_queue_flag_set(QUEUE_FLAG_HW_WC, q);
blk_queue_flag_set(QUEUE_FLAG_WC, q);
- else
+ } else {
+ blk_queue_flag_clear(QUEUE_FLAG_HW_WC, q);
blk_queue_flag_clear(QUEUE_FLAG_WC, q);
+ }
if (fua)
blk_queue_flag_set(QUEUE_FLAG_FUA, q);
else
diff --git a/block/blk-sysfs.c b/block/blk-sysfs.c
index 4f34525bafac7..a582ea0da74f5 100644
--- a/block/blk-sysfs.c
+++ b/block/blk-sysfs.c
@@ -528,13 +528,16 @@ static ssize_t queue_wc_show(struct request_queue *q, char *page)
static ssize_t queue_wc_store(struct request_queue *q, const char *page,
size_t count)
{
- if (!strncmp(page, "write back", 10))
+ if (!strncmp(page, "write back", 10)) {
+ if (!test_bit(QUEUE_FLAG_HW_WC, &q->queue_flags))
+ return -EINVAL;
blk_queue_flag_set(QUEUE_FLAG_WC, q);
- else if (!strncmp(page, "write through", 13) ||
- !strncmp(page, "none", 4))
+ } else if (!strncmp(page, "write through", 13) ||
+ !strncmp(page, "none", 4)) {
blk_queue_flag_clear(QUEUE_FLAG_WC, q);
- else
+ } else {
return -EINVAL;
+ }
return count;
}
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 427e79ac72194..57674b3c58774 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -565,6 +565,7 @@ struct request_queue {
#define QUEUE_FLAG_NOXMERGES 9 /* No extended merges */
#define QUEUE_FLAG_ADD_RANDOM 10 /* Contributes to random pool */
#define QUEUE_FLAG_SAME_FORCE 12 /* force complete on same CPU */
+#define QUEUE_FLAG_HW_WC 18 /* Write back caching supported */
#define QUEUE_FLAG_INIT_DONE 14 /* queue is initialized */
#define QUEUE_FLAG_STABLE_WRITES 15 /* don't modify blks until WB is done */
#define QUEUE_FLAG_POLL 16 /* IO polling enabled if set */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 263/600] x86/mm: Fix PAT bit missing from page protection modify mask
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (261 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 262/600] block: dont allow enabling a cache on devices that dont support it Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 264/600] drm/bridge: anx7625: Use common macros for DP power sequencing commands Greg Kroah-Hartman
` (347 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Janusz Krzysztofik, Dave Hansen,
Andi Shyti, Juergen Gross, Marek Marczykowski-Górecki,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
[ Upstream commit 548cb932051fb6232ac983ed6673dae7bdf3cf4c ]
Visible glitches have been observed when running graphics applications on
Linux under Xen hypervisor. Those observations have been confirmed with
failures from kms_pwrite_crc Intel GPU test that verifies data coherency
of DRM frame buffer objects using hardware CRC checksums calculated by
display controllers, exposed to userspace via debugfs. Affected
processing paths have then been identified with new IGT test variants that
mmap the objects using different methods and caching modes [1].
When running as a Xen PV guest, Linux uses Xen provided PAT configuration
which is different from its native one. In particular, Xen specific PTE
encoding of write-combining caching, likely used by graphics applications,
differs from the Linux default one found among statically defined minimal
set of supported modes. Since Xen defines PTE encoding of the WC mode as
_PAGE_PAT, it no longer belongs to the minimal set, depends on correct
handling of _PAGE_PAT bit, and can be mismatched with write-back caching.
When a user calls mmap() for a DRM buffer object, DRM device specific
.mmap file operation, called from mmap_region(), takes care of setting PTE
encoding bits in a vm_page_prot field of an associated virtual memory area
structure. Unfortunately, _PAGE_PAT bit is not preserved when the vma's
.vm_flags are then applied to .vm_page_prot via vm_set_page_prot(). Bits
to be preserved are determined with _PAGE_CHG_MASK symbol that doesn't
cover _PAGE_PAT. As a consequence, WB caching is requested instead of WC
when running under Xen (also, WP is silently changed to WT, and UC
downgraded to UC_MINUS). When running on bare metal, WC is not affected,
but WP and WT extra modes are unintentionally replaced with WC and UC,
respectively.
WP and WT modes, encoded with _PAGE_PAT bit set, were introduced by commit
281d4078bec3 ("x86: Make page cache mode a real type"). Care was taken
to extend _PAGE_CACHE_MASK symbol with that additional bit, but that
symbol has never been used for identification of bits preserved when
applying page protection flags. Support for all cache modes under Xen,
including the problematic WC mode, was then introduced by commit
47591df50512 ("xen: Support Xen pv-domains using PAT").
The issue needs to be fixed by including _PAGE_PAT bit into a bitmask used
by pgprot_modify() for selecting bits to be preserved. We can do that
either internally to pgprot_modify() (as initially proposed), or by making
_PAGE_PAT a part of _PAGE_CHG_MASK. If we go for the latter then, since
_PAGE_PAT is the same as _PAGE_PSE, we need to note that _HPAGE_CHG_MASK
-- a huge pmds' counterpart of _PAGE_CHG_MASK, introduced by commit
c489f1257b8c ("thp: add pmd_modify"), defined as (_PAGE_CHG_MASK |
_PAGE_PSE) -- will no longer differ from _PAGE_CHG_MASK. If such
modification of _PAGE_CHG_MASK was irrelevant to its users then one might
wonder why that new _HPAGE_CHG_MASK symbol was introduced instead of
reusing the existing one with that otherwise irrelevant bit (_PAGE_PSE in
that case) added.
Add _PAGE_PAT to _PAGE_CHG_MASK and _PAGE_PAT_LARGE to _HPAGE_CHG_MASK for
symmetry. Split out common bits from both symbols to a common symbol for
clarity.
[ dhansen: tweak the solution changelog description ]
[1] https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/commit/0f0754413f14
Fixes: 281d4078bec3 ("x86: Make page cache mode a real type")
Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Tested-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Link: https://gitlab.freedesktop.org/drm/intel/-/issues/7648
Link: https://lore.kernel.org/all/20230710073613.8006-2-janusz.krzysztofik%40linux.intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/include/asm/pgtable_types.h | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
index aa174fed3a71c..f6116b66f2892 100644
--- a/arch/x86/include/asm/pgtable_types.h
+++ b/arch/x86/include/asm/pgtable_types.h
@@ -125,11 +125,12 @@
* instance, and is *not* included in this mask since
* pte_modify() does modify it.
*/
-#define _PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
- _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY | \
- _PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC | \
- _PAGE_UFFD_WP)
-#define _HPAGE_CHG_MASK (_PAGE_CHG_MASK | _PAGE_PSE)
+#define _COMMON_PAGE_CHG_MASK (PTE_PFN_MASK | _PAGE_PCD | _PAGE_PWT | \
+ _PAGE_SPECIAL | _PAGE_ACCESSED | _PAGE_DIRTY |\
+ _PAGE_SOFT_DIRTY | _PAGE_DEVMAP | _PAGE_ENC | \
+ _PAGE_UFFD_WP)
+#define _PAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PAT)
+#define _HPAGE_CHG_MASK (_COMMON_PAGE_CHG_MASK | _PAGE_PSE | _PAGE_PAT_LARGE)
/*
* The cache modes defined here are used to translate between pure SW usage
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 264/600] drm/bridge: anx7625: Use common macros for DP power sequencing commands
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (262 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 263/600] x86/mm: Fix PAT bit missing from page protection modify mask Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 265/600] drm/bridge: anx7625: Use common macros for HDCP capabilities Greg Kroah-Hartman
` (346 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chen-Yu Tsai,
Nícolas F . R . A . Prado, Robert Foss, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <wenst@chromium.org>
[ Upstream commit 2ba776f903cb7157e80b5f314fb0b4faf6ea6958 ]
The DRM DP code has macros for the DP power sequencing commands. Use
them in the anx7625 driver instead of raw numbers.
Fixes: 548b512e144f ("drm/bridge: anx7625: send DPCD command to downstream")
Fixes: 27f26359de9b ("drm/bridge: anx7625: Set downstream sink into normal status")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230710090929.1873646-1-wenst@chromium.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 213263ad6a064..36ec9dedadfe1 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -933,8 +933,8 @@ static void anx7625_dp_start(struct anx7625_data *ctx)
dev_dbg(dev, "set downstream sink into normal\n");
/* Downstream sink enter into normal mode */
- data = 1;
- ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_WRITE, 0x000600, 1, &data);
+ data = DP_SET_POWER_D0;
+ ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_WRITE, DP_SET_POWER, 1, &data);
if (ret < 0)
dev_err(dev, "IO error : set sink into normal mode fail\n");
@@ -973,8 +973,8 @@ static void anx7625_dp_stop(struct anx7625_data *ctx)
dev_dbg(dev, "notify downstream enter into standby\n");
/* Downstream monitor enter into standby mode */
- data = 2;
- ret |= anx7625_aux_trans(ctx, DP_AUX_NATIVE_WRITE, 0x000600, 1, &data);
+ data = DP_SET_POWER_D3;
+ ret |= anx7625_aux_trans(ctx, DP_AUX_NATIVE_WRITE, DP_SET_POWER, 1, &data);
if (ret < 0)
DRM_DEV_ERROR(dev, "IO error : mute video fail\n");
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 265/600] drm/bridge: anx7625: Use common macros for HDCP capabilities
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (263 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 264/600] drm/bridge: anx7625: Use common macros for DP power sequencing commands Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 266/600] ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) Greg Kroah-Hartman
` (345 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nícolas F . R . A . Prado,
Chen-Yu Tsai, Robert Foss, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen-Yu Tsai <wenst@chromium.org>
[ Upstream commit 41639b3a8b0f1f194dfe0577d99db70613f78626 ]
The DRM DP code has macros for the DP HDCP capabilities. Use them in the
anx7625 driver instead of raw numbers.
Fixes: cd1637c7e480 ("drm/bridge: anx7625: add HDCP support")
Suggested-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Robert Foss <rfoss@kernel.org>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230710091203.1874317-1-wenst@chromium.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 36ec9dedadfe1..cf86cc05b7fca 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -874,11 +874,11 @@ static int anx7625_hdcp_enable(struct anx7625_data *ctx)
}
/* Read downstream capability */
- ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, 0x68028, 1, &bcap);
+ ret = anx7625_aux_trans(ctx, DP_AUX_NATIVE_READ, DP_AUX_HDCP_BCAPS, 1, &bcap);
if (ret < 0)
return ret;
- if (!(bcap & 0x01)) {
+ if (!(bcap & DP_BCAPS_HDCP_CAPABLE)) {
pr_warn("downstream not support HDCP 1.4, cap(%x).\n", bcap);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 266/600] ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split)
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (264 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 265/600] drm/bridge: anx7625: Use common macros for HDCP capabilities Greg Kroah-Hartman
@ 2023-09-11 13:44 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 267/600] ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210 Greg Kroah-Hartman
` (344 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:44 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alim Akhtar, Krzysztof Kozlowski,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit cf0cb2af6a18f28b84f9f1416bff50ca60d6e98a ]
The davicom,dm9000 Ethernet Controller accepts two reg addresses.
Fixes: a43736deb47d ("ARM: dts: Add dts file for S3C6410-based Mini6410 board")
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Link: https://lore.kernel.org/r/20230713152926.82884-1-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/s3c6410-mini6410.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/s3c6410-mini6410.dts b/arch/arm/boot/dts/s3c6410-mini6410.dts
index 17097da36f5ed..0b07b3c319604 100644
--- a/arch/arm/boot/dts/s3c6410-mini6410.dts
+++ b/arch/arm/boot/dts/s3c6410-mini6410.dts
@@ -51,7 +51,7 @@ srom-cs1-bus@18000000 {
ethernet@18000000 {
compatible = "davicom,dm9000";
- reg = <0x18000000 0x2 0x18000004 0x2>;
+ reg = <0x18000000 0x2>, <0x18000004 0x2>;
interrupt-parent = <&gpn>;
interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
davicom,no-eeprom;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 267/600] ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (265 preceding siblings ...)
2023-09-11 13:44 ` [PATCH 6.1 266/600] ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 268/600] ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) Greg Kroah-Hartman
` (343 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Krzysztof Kozlowski, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit b77904ba177a9c67b6dbc3637fdf1faa22df6e5c ]
Backlight is supplied by DC5V regulator. The DTS has no PMIC node, so
just add a regulator-fixed to solve it and fix dtbs_check warning:
s5pv210-smdkv210.dtb: backlight: 'power-supply' is a required property
Link: https://lore.kernel.org/r/20230421095721.31857-4-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Stable-dep-of: 982655cb0e7f ("ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split)")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/s5pv210-smdkv210.dts | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/boot/dts/s5pv210-smdkv210.dts b/arch/arm/boot/dts/s5pv210-smdkv210.dts
index fbae768d65e27..6e26c67e0a26e 100644
--- a/arch/arm/boot/dts/s5pv210-smdkv210.dts
+++ b/arch/arm/boot/dts/s5pv210-smdkv210.dts
@@ -55,6 +55,14 @@ backlight {
default-brightness-level = <6>;
pinctrl-names = "default";
pinctrl-0 = <&pwm3_out>;
+ power-supply = <&dc5v_reg>;
+ };
+
+ dc5v_reg: regulator-0 {
+ compatible = "regulator-fixed";
+ regulator-name = "DC5V";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
};
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 268/600] ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split)
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (266 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 267/600] ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210 Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 269/600] drm: adv7511: Fix low refresh rate register for ADV7533/5 Greg Kroah-Hartman
` (342 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alim Akhtar, Krzysztof Kozlowski,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit 982655cb0e7f18934d7532c32366e574ad61dbd7 ]
The davicom,dm9000 Ethernet Controller accepts two reg addresses.
Fixes: b672b27d232e ("ARM: dts: Add Device tree for s5pc110/s5pv210 boards")
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Link: https://lore.kernel.org/r/20230713152926.82884-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/s5pv210-smdkv210.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/boot/dts/s5pv210-smdkv210.dts b/arch/arm/boot/dts/s5pv210-smdkv210.dts
index 6e26c67e0a26e..901e7197b1368 100644
--- a/arch/arm/boot/dts/s5pv210-smdkv210.dts
+++ b/arch/arm/boot/dts/s5pv210-smdkv210.dts
@@ -41,7 +41,7 @@ pmic_ap_clk: clock-0 {
ethernet@a8000000 {
compatible = "davicom,dm9000";
- reg = <0xA8000000 0x2 0xA8000002 0x2>;
+ reg = <0xa8000000 0x2>, <0xa8000002 0x2>;
interrupt-parent = <&gph1>;
interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
local-mac-address = [00 00 de ad be ef];
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 269/600] drm: adv7511: Fix low refresh rate register for ADV7533/5
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (267 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 268/600] ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 270/600] ARM: dts: BCM53573: Fix Ethernet info for Luxul devices Greg Kroah-Hartman
` (341 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Robert Foss, Nuno Sa,
Bogdan Togorean, Alexandru Ardelean, Frieder Schrempf,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bogdan Togorean <bogdan.togorean@analog.com>
[ Upstream commit d281eeaa4de2636ff0c8e6ae387bb07b50e5fcbb ]
For ADV7533 and ADV7535 low refresh rate is selected using
bits [3:2] of 0x4a main register.
So depending on ADV model write 0xfb or 0x4a register.
Fixes: 2437e7cd88e8 ("drm/bridge: adv7533: Initial support for ADV7533")
Reviewed-by: Robert Foss <rfoss@kernel.org>
Reviewed-by: Nuno Sa <nuno.sa@analog.com>
Signed-off-by: Bogdan Togorean <bogdan.togorean@analog.com>
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Reviewed-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230719060143.63649-1-alex@shruggie.ro
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index 78b72739e5c3e..9f9874acfb2b7 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -786,8 +786,13 @@ static void adv7511_mode_set(struct adv7511 *adv7511,
else
low_refresh_rate = ADV7511_LOW_REFRESH_RATE_NONE;
- regmap_update_bits(adv7511->regmap, 0xfb,
- 0x6, low_refresh_rate << 1);
+ if (adv7511->type == ADV7511)
+ regmap_update_bits(adv7511->regmap, 0xfb,
+ 0x6, low_refresh_rate << 1);
+ else
+ regmap_update_bits(adv7511->regmap, 0x4a,
+ 0xc, low_refresh_rate << 2);
+
regmap_update_bits(adv7511->regmap, 0x17,
0x60, (vsync_polarity << 6) | (hsync_polarity << 5));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 270/600] ARM: dts: BCM53573: Fix Ethernet info for Luxul devices
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (268 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 269/600] drm: adv7511: Fix low refresh rate register for ADV7533/5 Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 271/600] arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC Greg Kroah-Hartman
` (340 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rafał Miłecki,
Florian Fainelli, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <rafal@milecki.pl>
[ Upstream commit 44ad8207806973f4e4f7d870fff36cc01f494250 ]
Both Luxul's XAP devices (XAP-810 and XAP-1440) are access points that
use a non-default design. They don't include switch but have a single
Ethernet port and BCM54210E PHY connected to the Ethernet controller's
MDIO bus.
Support for those devices regressed due to two changes:
1. Describing MDIO bus with switch
After commit 9fb90ae6cae7 ("ARM: dts: BCM53573: Describe on-SoC BCM53125
rev 4 switch") Linux stopped probing for MDIO devices.
2. Dropping hardcoded BCM54210E delays
In commit fea7fda7f50a ("net: phy: broadcom: Fix RGMII delays
configuration for BCM54210E") support for other PHY modes was added but
that requires a proper "phy-mode" value in DT.
Both above changes are correct (they don't need to be reverted or
anything) but they need this fix for DT data to be correct and for Linux
to work properly.
Fixes: 9fb90ae6cae7 ("ARM: dts: BCM53573: Describe on-SoC BCM53125 rev 4 switch")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20230713111145.14864-1-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts | 13 +++++++++++++
arch/arm/boot/dts/bcm47189-luxul-xap-810.dts | 13 +++++++++++++
2 files changed, 26 insertions(+)
diff --git a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
index e20b6d2eb274a..1e23e0a807819 100644
--- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
@@ -46,3 +46,16 @@ button-restart {
};
};
};
+
+&gmac0 {
+ phy-mode = "rgmii";
+ phy-handle = <&bcm54210e>;
+
+ mdio {
+ /delete-node/ switch@1e;
+
+ bcm54210e: ethernet-phy@0 {
+ reg = <0>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
index 9d863570fcf3a..5dbb950c8113e 100644
--- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
@@ -83,3 +83,16 @@ pcie0_chipcommon: chipcommon@0 {
};
};
};
+
+&gmac0 {
+ phy-mode = "rgmii";
+ phy-handle = <&bcm54210e>;
+
+ mdio {
+ /delete-node/ switch@1e;
+
+ bcm54210e: ethernet-phy@0 {
+ reg = <0>;
+ };
+ };
+};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 271/600] arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (269 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 270/600] ARM: dts: BCM53573: Fix Ethernet info for Luxul devices Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 272/600] arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk" Greg Kroah-Hartman
` (339 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Krzysztof Kozlowski,
Manivannan Sadhasivam, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[ Upstream commit 4b6ea15c0a1122422b44bf6c47a3c22fc8d46777 ]
GCC and it's GDSCs are under the RPMh CX power domain. So let's add the
missing RPMh power domain to the GCC node.
Fixes: 6d4cf750d03a ("arm64: dts: sdm845: Add minimal dts/dtsi files for sdm845 SoC and MTP")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Co-developed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20230720054100.9940-4-manivannan.sadhasivam@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sdm845.dtsi | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index b7ba70857d0ad..375c86633b5b9 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -1099,6 +1099,7 @@ gcc: clock-controller@100000 {
#clock-cells = <1>;
#reset-cells = <1>;
#power-domain-cells = <1>;
+ power-domains = <&rpmhpd SDM845_CX>;
};
qfprom@784000 {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 272/600] arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (270 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 271/600] arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 273/600] arm64: dts: qcom: msm8996-gemini: fix touchscreen VIO supply Greg Kroah-Hartman
` (338 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Manivannan Sadhasivam,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[ Upstream commit bbbef6e24bc4493602df68b052f6f48d48e3184a ]
Minimum frequency of the "ice_core_clk" should be 75MHz as specified in the
downstream vendor devicetree. So fix it!
https://git.codelinaro.org/clo/la/kernel/msm-4.9/-/blob/LA.UM.7.3.r1-09300-sdm845.0/arch/arm64/boot/dts/qcom/sdm845.dtsi
Fixes: 433f9a57298f ("arm64: dts: sdm845: add Inline Crypto Engine registers and clock")
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20230720054100.9940-5-manivannan.sadhasivam@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sdm845.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 375c86633b5b9..52c9f5639f8a2 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -2521,7 +2521,7 @@ ufs_mem_hc: ufshc@1d84000 {
<0 0>,
<0 0>,
<0 0>,
- <0 300000000>;
+ <75000000 300000000>;
status = "disabled";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 273/600] arm64: dts: qcom: msm8996-gemini: fix touchscreen VIO supply
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (271 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 272/600] arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk" Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 274/600] drm/amdgpu: Update min() to min_t() in amdgpu_info_ioctl Greg Kroah-Hartman
` (337 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Krzysztof Kozlowski, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit 21fc24ee9c5943732c9ae538766c9be93d70d936 ]
According to bindings and Linux driver, there is no VDDA but VIO supply.
Fixes: 4ac46b3682c5 ("arm64: dts: qcom: msm8996: xiaomi-gemini: Add support for Xiaomi Mi 5")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/20230720115335.137354-2-krzysztof.kozlowski@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts
index 4e5264f4116a0..3bbafb68ba5c5 100644
--- a/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts
+++ b/arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts
@@ -81,7 +81,7 @@ synaptics@20 {
#size-cells = <0>;
interrupt-parent = <&tlmm>;
interrupts = <125 IRQ_TYPE_LEVEL_LOW>;
- vdda-supply = <&vreg_l6a_1p8>;
+ vio-supply = <&vreg_l6a_1p8>;
vdd-supply = <&vdd_3v2_tp>;
reset-gpios = <&tlmm 89 GPIO_ACTIVE_LOW>;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 274/600] drm/amdgpu: Update min() to min_t() in amdgpu_info_ioctl
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (272 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 273/600] arm64: dts: qcom: msm8996-gemini: fix touchscreen VIO supply Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 275/600] md: Factor out is_md_suspended helper Greg Kroah-Hartman
` (336 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christian König, Alex Deucher,
Srinivasan Shanmugam, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
[ Upstream commit a0cc8e1512ad72c9f97cdcb76d42715730adaf62 ]
Fixes the following:
WARNING: min() should probably be min_t(size_t, size, sizeof(ip))
+ ret = copy_to_user(out, &ip, min((size_t)size, sizeof(ip)));
And other style fixes:
WARNING: Prefer 'unsigned int' to bare use of 'unsigned'
WARNING: Missing a blank line after declarations
Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 4e42dcb1950f7..9e3313dd956ae 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -554,6 +554,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
crtc = (struct drm_crtc *)minfo->crtcs[i];
if (crtc && crtc->base.id == info->mode_crtc.id) {
struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
+
ui32 = amdgpu_crtc->crtc_id;
found = 1;
break;
@@ -572,7 +573,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
if (ret)
return ret;
- ret = copy_to_user(out, &ip, min((size_t)size, sizeof(ip)));
+ ret = copy_to_user(out, &ip, min_t(size_t, size, sizeof(ip)));
return ret ? -EFAULT : 0;
}
case AMDGPU_INFO_HW_IP_COUNT: {
@@ -718,17 +719,18 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
? -EFAULT : 0;
}
case AMDGPU_INFO_READ_MMR_REG: {
- unsigned n, alloc_size;
+ unsigned int n, alloc_size;
uint32_t *regs;
- unsigned se_num = (info->read_mmr_reg.instance >>
+ unsigned int se_num = (info->read_mmr_reg.instance >>
AMDGPU_INFO_MMR_SE_INDEX_SHIFT) &
AMDGPU_INFO_MMR_SE_INDEX_MASK;
- unsigned sh_num = (info->read_mmr_reg.instance >>
+ unsigned int sh_num = (info->read_mmr_reg.instance >>
AMDGPU_INFO_MMR_SH_INDEX_SHIFT) &
AMDGPU_INFO_MMR_SH_INDEX_MASK;
/* set full masks if the userspace set all bits
- * in the bitfields */
+ * in the bitfields
+ */
if (se_num == AMDGPU_INFO_MMR_SE_INDEX_MASK)
se_num = 0xffffffff;
else if (se_num >= AMDGPU_GFX_MAX_SE)
@@ -852,7 +854,7 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp)
return ret;
}
case AMDGPU_INFO_VCE_CLOCK_TABLE: {
- unsigned i;
+ unsigned int i;
struct drm_amdgpu_info_vce_clock_table vce_clk_table = {};
struct amd_vce_state *vce_state;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 275/600] md: Factor out is_md_suspended helper
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (273 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 274/600] drm/amdgpu: Update min() to min_t() in amdgpu_info_ioctl Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 276/600] md: Change active_io to percpu Greg Kroah-Hartman
` (335 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Xiao Ni, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiao Ni <xni@redhat.com>
[ Upstream commit d19329133d25ad3dc32f8a62635692cb2f189014 ]
This helper function will be used in next patch. It's easy for
understanding.
Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Stable-dep-of: e24ed04389f9 ("md: restore 'noio_flag' for the last mddev_resume()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 45daba0eb9310..abb6c03c85b29 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -368,6 +368,13 @@ EXPORT_SYMBOL_GPL(md_new_event);
static LIST_HEAD(all_mddevs);
static DEFINE_SPINLOCK(all_mddevs_lock);
+static bool is_md_suspended(struct mddev *mddev)
+{
+ if (mddev->suspended)
+ return true;
+ else
+ return false;
+}
/* Rather than calling directly into the personality make_request function,
* IO requests come here first so that we can check if the device is
* being suspended pending a reconfiguration.
@@ -377,7 +384,7 @@ static DEFINE_SPINLOCK(all_mddevs_lock);
*/
static bool is_suspended(struct mddev *mddev, struct bio *bio)
{
- if (mddev->suspended)
+ if (is_md_suspended(mddev))
return true;
if (bio_data_dir(bio) != WRITE)
return false;
@@ -422,7 +429,7 @@ void md_handle_request(struct mddev *mddev, struct bio *bio)
goto check_suspended;
}
- if (atomic_dec_and_test(&mddev->active_io) && mddev->suspended)
+ if (atomic_dec_and_test(&mddev->active_io) && is_md_suspended(mddev))
wake_up(&mddev->sb_wait);
}
EXPORT_SYMBOL(md_handle_request);
@@ -6238,7 +6245,7 @@ EXPORT_SYMBOL_GPL(md_stop_writes);
static void mddev_detach(struct mddev *mddev)
{
md_bitmap_wait_behind_writes(mddev);
- if (mddev->pers && mddev->pers->quiesce && !mddev->suspended) {
+ if (mddev->pers && mddev->pers->quiesce && !is_md_suspended(mddev)) {
mddev->pers->quiesce(mddev, 1);
mddev->pers->quiesce(mddev, 0);
}
@@ -8548,7 +8555,7 @@ bool md_write_start(struct mddev *mddev, struct bio *bi)
return true;
wait_event(mddev->sb_wait,
!test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags) ||
- mddev->suspended);
+ is_md_suspended(mddev));
if (test_bit(MD_SB_CHANGE_PENDING, &mddev->sb_flags)) {
percpu_ref_put(&mddev->writes_pending);
return false;
@@ -9276,7 +9283,7 @@ void md_check_recovery(struct mddev *mddev)
wake_up(&mddev->sb_wait);
}
- if (mddev->suspended)
+ if (is_md_suspended(mddev))
return;
if (mddev->bitmap)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 276/600] md: Change active_io to percpu
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (274 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 275/600] md: Factor out is_md_suspended helper Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 277/600] md: restore noio_flag for the last mddev_resume() Greg Kroah-Hartman
` (334 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Xiao Ni, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiao Ni <xni@redhat.com>
[ Upstream commit 72adae23a72cb12e2ef0dcd7c0aa042867f27998 ]
Now the type of active_io is atomic. It's used to count how many ios are
in the submitting process and it's added and decreased very time. But it
only needs to check if it's zero when suspending the raid. So we can
switch atomic to percpu to improve the performance.
After switching active_io to percpu type, we use the state of active_io
to judge if the raid device is suspended. And we don't need to wake up
->sb_wait in md_handle_request anymore. It's done in the callback function
which is registered when initing active_io. The argument mddev->suspended
is only used to count how many users are trying to set raid to suspend
state.
Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Stable-dep-of: e24ed04389f9 ("md: restore 'noio_flag' for the last mddev_resume()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md.c | 43 ++++++++++++++++++++++++-------------------
drivers/md/md.h | 2 +-
2 files changed, 25 insertions(+), 20 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index abb6c03c85b29..1c44294c625a4 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -370,10 +370,7 @@ static DEFINE_SPINLOCK(all_mddevs_lock);
static bool is_md_suspended(struct mddev *mddev)
{
- if (mddev->suspended)
- return true;
- else
- return false;
+ return percpu_ref_is_dying(&mddev->active_io);
}
/* Rather than calling directly into the personality make_request function,
* IO requests come here first so that we can check if the device is
@@ -400,12 +397,10 @@ static bool is_suspended(struct mddev *mddev, struct bio *bio)
void md_handle_request(struct mddev *mddev, struct bio *bio)
{
check_suspended:
- rcu_read_lock();
if (is_suspended(mddev, bio)) {
DEFINE_WAIT(__wait);
/* Bail out if REQ_NOWAIT is set for the bio */
if (bio->bi_opf & REQ_NOWAIT) {
- rcu_read_unlock();
bio_wouldblock_error(bio);
return;
}
@@ -414,23 +409,19 @@ void md_handle_request(struct mddev *mddev, struct bio *bio)
TASK_UNINTERRUPTIBLE);
if (!is_suspended(mddev, bio))
break;
- rcu_read_unlock();
schedule();
- rcu_read_lock();
}
finish_wait(&mddev->sb_wait, &__wait);
}
- atomic_inc(&mddev->active_io);
- rcu_read_unlock();
+ if (!percpu_ref_tryget_live(&mddev->active_io))
+ goto check_suspended;
if (!mddev->pers->make_request(mddev, bio)) {
- atomic_dec(&mddev->active_io);
- wake_up(&mddev->sb_wait);
+ percpu_ref_put(&mddev->active_io);
goto check_suspended;
}
- if (atomic_dec_and_test(&mddev->active_io) && is_md_suspended(mddev))
- wake_up(&mddev->sb_wait);
+ percpu_ref_put(&mddev->active_io);
}
EXPORT_SYMBOL(md_handle_request);
@@ -478,11 +469,10 @@ void mddev_suspend(struct mddev *mddev)
lockdep_assert_held(&mddev->reconfig_mutex);
if (mddev->suspended++)
return;
- synchronize_rcu();
wake_up(&mddev->sb_wait);
set_bit(MD_ALLOW_SB_UPDATE, &mddev->flags);
- smp_mb__after_atomic();
- wait_event(mddev->sb_wait, atomic_read(&mddev->active_io) == 0);
+ percpu_ref_kill(&mddev->active_io);
+ wait_event(mddev->sb_wait, percpu_ref_is_zero(&mddev->active_io));
mddev->pers->quiesce(mddev, 1);
clear_bit_unlock(MD_ALLOW_SB_UPDATE, &mddev->flags);
wait_event(mddev->sb_wait, !test_bit(MD_UPDATING_SB, &mddev->flags));
@@ -500,6 +490,7 @@ void mddev_resume(struct mddev *mddev)
lockdep_assert_held(&mddev->reconfig_mutex);
if (--mddev->suspended)
return;
+ percpu_ref_resurrect(&mddev->active_io);
wake_up(&mddev->sb_wait);
mddev->pers->quiesce(mddev, 0);
@@ -678,7 +669,6 @@ void mddev_init(struct mddev *mddev)
timer_setup(&mddev->safemode_timer, md_safemode_timeout, 0);
atomic_set(&mddev->active, 1);
atomic_set(&mddev->openers, 0);
- atomic_set(&mddev->active_io, 0);
spin_lock_init(&mddev->lock);
atomic_set(&mddev->flush_pending, 0);
init_waitqueue_head(&mddev->sb_wait);
@@ -5786,6 +5776,12 @@ static void md_safemode_timeout(struct timer_list *t)
}
static int start_dirty_degraded;
+static void active_io_release(struct percpu_ref *ref)
+{
+ struct mddev *mddev = container_of(ref, struct mddev, active_io);
+
+ wake_up(&mddev->sb_wait);
+}
int md_run(struct mddev *mddev)
{
@@ -5866,10 +5862,15 @@ int md_run(struct mddev *mddev)
nowait = nowait && bdev_nowait(rdev->bdev);
}
+ err = percpu_ref_init(&mddev->active_io, active_io_release,
+ PERCPU_REF_ALLOW_REINIT, GFP_KERNEL);
+ if (err)
+ return err;
+
if (!bioset_initialized(&mddev->bio_set)) {
err = bioset_init(&mddev->bio_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
if (err)
- return err;
+ goto exit_active_io;
}
if (!bioset_initialized(&mddev->sync_set)) {
err = bioset_init(&mddev->sync_set, BIO_POOL_SIZE, 0, BIOSET_NEED_BVECS);
@@ -6057,6 +6058,8 @@ int md_run(struct mddev *mddev)
bioset_exit(&mddev->sync_set);
exit_bio_set:
bioset_exit(&mddev->bio_set);
+exit_active_io:
+ percpu_ref_exit(&mddev->active_io);
return err;
}
EXPORT_SYMBOL_GPL(md_run);
@@ -6283,6 +6286,7 @@ void md_stop(struct mddev *mddev)
*/
__md_stop_writes(mddev);
__md_stop(mddev);
+ percpu_ref_exit(&mddev->active_io);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
}
@@ -7852,6 +7856,7 @@ static void md_free_disk(struct gendisk *disk)
struct mddev *mddev = disk->private_data;
percpu_ref_exit(&mddev->writes_pending);
+ percpu_ref_exit(&mddev->active_io);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
diff --git a/drivers/md/md.h b/drivers/md/md.h
index b4e2d8b87b611..64f8182a3dfc6 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -315,7 +315,7 @@ struct mddev {
unsigned long sb_flags;
int suspended;
- atomic_t active_io;
+ struct percpu_ref active_io;
int ro;
int sysfs_active; /* set when sysfs deletes
* are happening, so run/
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 277/600] md: restore noio_flag for the last mddev_resume()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (275 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 276/600] md: Change active_io to percpu Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 278/600] md/raid10: factor out dereference_rdev_and_rrdev() Greg Kroah-Hartman
` (333 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yu Kuai, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit e24ed04389f9619e0aaef615a8948633c182a8b0 ]
memalloc_noio_save() is called for the first mddev_suspend(), and
repeated mddev_suspend() only increase 'suspended'. However,
memalloc_noio_restore() is also called for the first mddev_resume(),
which means that memory reclaim will be enabled before the last
mddev_resume() is called, while the array is still suspended.
Fix this problem by restore 'noio_flag' for the last mddev_resume().
Fixes: 78f57ef9d50a ("md: use memalloc scope APIs in mddev_suspend()/mddev_resume()")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230628012931.88911-3-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 1c44294c625a4..443837fe6291e 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -485,11 +485,13 @@ EXPORT_SYMBOL_GPL(mddev_suspend);
void mddev_resume(struct mddev *mddev)
{
- /* entred the memalloc scope from mddev_suspend() */
- memalloc_noio_restore(mddev->noio_flag);
lockdep_assert_held(&mddev->reconfig_mutex);
if (--mddev->suspended)
return;
+
+ /* entred the memalloc scope from mddev_suspend() */
+ memalloc_noio_restore(mddev->noio_flag);
+
percpu_ref_resurrect(&mddev->active_io);
wake_up(&mddev->sb_wait);
mddev->pers->quiesce(mddev, 0);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 278/600] md/raid10: factor out dereference_rdev_and_rrdev()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (276 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 277/600] md: restore noio_flag for the last mddev_resume() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 279/600] md/raid10: use dereference_rdev_and_rrdev() to get devices Greg Kroah-Hartman
` (332 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Li Nan, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Nan <linan122@huawei.com>
[ Upstream commit b99f8fd2d91eb734f13098aa1cf337edaca454b7 ]
Factor out a helper to get 'rdev' and 'replacement' from config->mirrors.
Just to make code cleaner and prepare to fix the bug of io loss while
'replacement' replace 'rdev'.
There is no functional change.
Signed-off-by: Li Nan <linan122@huawei.com>
Link: https://lore.kernel.org/r/20230701080529.2684932-3-linan666@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Stable-dep-of: 673643490b9a ("md/raid10: use dereference_rdev_and_rrdev() to get devices")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid10.c | 29 ++++++++++++++++++++---------
1 file changed, 20 insertions(+), 9 deletions(-)
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index d2098fcd6a270..49bb79f48f362 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1317,6 +1317,25 @@ static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio,
}
}
+static struct md_rdev *dereference_rdev_and_rrdev(struct raid10_info *mirror,
+ struct md_rdev **prrdev)
+{
+ struct md_rdev *rdev, *rrdev;
+
+ rrdev = rcu_dereference(mirror->replacement);
+ /*
+ * Read replacement first to prevent reading both rdev and
+ * replacement as NULL during replacement replace rdev.
+ */
+ smp_mb();
+ rdev = rcu_dereference(mirror->rdev);
+ if (rdev == rrdev)
+ rrdev = NULL;
+
+ *prrdev = rrdev;
+ return rdev;
+}
+
static void wait_blocked_dev(struct mddev *mddev, struct r10bio *r10_bio)
{
int i;
@@ -1460,15 +1479,7 @@ static void raid10_write_request(struct mddev *mddev, struct bio *bio,
int d = r10_bio->devs[i].devnum;
struct md_rdev *rdev, *rrdev;
- rrdev = rcu_dereference(conf->mirrors[d].replacement);
- /*
- * Read replacement first to prevent reading both rdev and
- * replacement as NULL during replacement replace rdev.
- */
- smp_mb();
- rdev = rcu_dereference(conf->mirrors[d].rdev);
- if (rdev == rrdev)
- rrdev = NULL;
+ rdev = dereference_rdev_and_rrdev(&conf->mirrors[d], &rrdev);
if (rdev && (test_bit(Faulty, &rdev->flags)))
rdev = NULL;
if (rrdev && (test_bit(Faulty, &rrdev->flags)))
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 279/600] md/raid10: use dereference_rdev_and_rrdev() to get devices
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (277 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 278/600] md/raid10: factor out dereference_rdev_and_rrdev() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 280/600] md/md-bitmap: remove unnecessary local variable in backlog_store() Greg Kroah-Hartman
` (331 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Li Nan, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Nan <linan122@huawei.com>
[ Upstream commit 673643490b9a0eb3b25633abe604f62b8f63dba1 ]
Commit 2ae6aaf76912 ("md/raid10: fix io loss while replacement replace
rdev") reads replacement first to prevent io loss. However, there are same
issue in wait_blocked_dev() and raid10_handle_discard(), too. Fix it by
using dereference_rdev_and_rrdev() to get devices.
Fixes: d30588b2731f ("md/raid10: improve raid10 discard request")
Fixes: f2e7e269a752 ("md/raid10: pull the code that wait for blocked dev into one function")
Signed-off-by: Li Nan <linan122@huawei.com>
Link: https://lore.kernel.org/r/20230701080529.2684932-4-linan666@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid10.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 49bb79f48f362..7b318e7e8d459 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1346,11 +1346,9 @@ static void wait_blocked_dev(struct mddev *mddev, struct r10bio *r10_bio)
blocked_rdev = NULL;
rcu_read_lock();
for (i = 0; i < conf->copies; i++) {
- struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev);
- struct md_rdev *rrdev = rcu_dereference(
- conf->mirrors[i].replacement);
- if (rdev == rrdev)
- rrdev = NULL;
+ struct md_rdev *rdev, *rrdev;
+
+ rdev = dereference_rdev_and_rrdev(&conf->mirrors[i], &rrdev);
if (rdev && unlikely(test_bit(Blocked, &rdev->flags))) {
atomic_inc(&rdev->nr_pending);
blocked_rdev = rdev;
@@ -1786,10 +1784,9 @@ static int raid10_handle_discard(struct mddev *mddev, struct bio *bio)
*/
rcu_read_lock();
for (disk = 0; disk < geo->raid_disks; disk++) {
- struct md_rdev *rdev = rcu_dereference(conf->mirrors[disk].rdev);
- struct md_rdev *rrdev = rcu_dereference(
- conf->mirrors[disk].replacement);
+ struct md_rdev *rdev, *rrdev;
+ rdev = dereference_rdev_and_rrdev(&conf->mirrors[disk], &rrdev);
r10_bio->devs[disk].bio = NULL;
r10_bio->devs[disk].repl_bio = NULL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 280/600] md/md-bitmap: remove unnecessary local variable in backlog_store()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (278 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 279/600] md/raid10: use dereference_rdev_and_rrdev() to get devices Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 281/600] md/md-bitmap: hold reconfig_mutex " Greg Kroah-Hartman
` (330 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yu Kuai, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit b4d129640f194ffc4cc64c3e97f98ae944c072e8 ]
Local variable is definied first in the beginning of backlog_store(),
there is no need to define it again.
Fixes: 8c13ab115b57 ("md/bitmap: don't set max_write_behind if there is no write mostly device")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230706083727.608914-2-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md-bitmap.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c
index 8bbeeec70905c..8553f028825a1 100644
--- a/drivers/md/md-bitmap.c
+++ b/drivers/md/md-bitmap.c
@@ -2504,8 +2504,6 @@ backlog_store(struct mddev *mddev, const char *buf, size_t len)
mddev_destroy_serial_pool(mddev, NULL, false);
} else if (backlog && !mddev->serial_info_pool) {
/* serial_info_pool is needed since backlog is not zero */
- struct md_rdev *rdev;
-
rdev_for_each(rdev, mddev)
mddev_create_serial_pool(mddev, rdev, false);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 281/600] md/md-bitmap: hold reconfig_mutex in backlog_store()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (279 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 280/600] md/md-bitmap: remove unnecessary local variable in backlog_store() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 282/600] drm/msm: Update dev core dump to not print backwards Greg Kroah-Hartman
` (329 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yu Kuai, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit 44abfa6a95df425c0660d56043020b67e6d93ab8 ]
Several reasons why 'reconfig_mutex' should be held:
1) rdev_for_each() is not safe to be called without the lock, because
rdev can be removed concurrently.
2) mddev_destroy_serial_pool() and mddev_create_serial_pool() should not
be called concurrently.
3) mddev_suspend() from mddev_destroy/create_serial_pool() should be
protected by the lock.
Fixes: 10c92fca636e ("md-bitmap: create and destroy wb_info_pool with the change of backlog")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230706083727.608914-3-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md-bitmap.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c
index 8553f028825a1..5200bba63708e 100644
--- a/drivers/md/md-bitmap.c
+++ b/drivers/md/md-bitmap.c
@@ -2481,6 +2481,10 @@ backlog_store(struct mddev *mddev, const char *buf, size_t len)
if (backlog > COUNTER_MAX)
return -EINVAL;
+ rv = mddev_lock(mddev);
+ if (rv)
+ return rv;
+
/*
* Without write mostly device, it doesn't make sense to set
* backlog for max_write_behind.
@@ -2494,6 +2498,7 @@ backlog_store(struct mddev *mddev, const char *buf, size_t len)
if (!has_write_mostly) {
pr_warn_ratelimited("%s: can't set backlog, no write mostly device available\n",
mdname(mddev));
+ mddev_unlock(mddev);
return -EINVAL;
}
@@ -2509,6 +2514,8 @@ backlog_store(struct mddev *mddev, const char *buf, size_t len)
}
if (old_mwb != backlog)
md_bitmap_update_sb(mddev->bitmap);
+
+ mddev_unlock(mddev);
return len;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 282/600] drm/msm: Update dev core dump to not print backwards
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (280 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 281/600] md/md-bitmap: hold reconfig_mutex " Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 283/600] drm/tegra: dpaux: Fix incorrect return value of platform_get_irq Greg Kroah-Hartman
` (328 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dmitry Baryshkov, Abhinav Kumar,
Ryan McCann, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ryan McCann <quic_rmccann@quicinc.com>
[ Upstream commit 903705111d863ed8ccf73465da77d232fc422ec1 ]
Device core dump add block method adds hardware blocks to dumping queue
with stack behavior which causes the hardware blocks to be printed in
reverse order. Change the addition to dumping queue data structure
from "list_add" to "list_add_tail" for FIFO queue behavior.
Fixes: 98659487b845 ("drm/msm: add support to take dpu snapshot")
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Signed-off-by: Ryan McCann <quic_rmccann@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/546200/
Link: https://lore.kernel.org/r/20230622-devcoredump_patch-v5-1-67e8b66c4723@quicinc.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
index acfe1b31e0792..add72bbc28b17 100644
--- a/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
+++ b/drivers/gpu/drm/msm/disp/msm_disp_snapshot_util.c
@@ -192,5 +192,5 @@ void msm_disp_snapshot_add_block(struct msm_disp_state *disp_state, u32 len,
new_blk->base_addr = base_addr;
msm_disp_state_dump_regs(&new_blk->state, new_blk->size, base_addr);
- list_add(&new_blk->node, &disp_state->blocks);
+ list_add_tail(&new_blk->node, &disp_state->blocks);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 283/600] drm/tegra: dpaux: Fix incorrect return value of platform_get_irq
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (281 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 282/600] drm/msm: Update dev core dump to not print backwards Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 284/600] of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name() Greg Kroah-Hartman
` (327 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yangtao Li, Thierry Reding,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yangtao Li <frank.li@vivo.com>
[ Upstream commit 2a1ca44b654346cadfc538c4fb32eecd8daf3140 ]
When platform_get_irq fails, we should return dpaux->irq
instead of -ENXIO.
Fixes: 6b6b604215c6 ("drm/tegra: Add eDP support")
Signed-off-by: Yangtao Li <frank.li@vivo.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230710032355.72914-13-frank.li@vivo.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/tegra/dpaux.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tegra/dpaux.c b/drivers/gpu/drm/tegra/dpaux.c
index 7dc681e2ee90b..d773ef4854188 100644
--- a/drivers/gpu/drm/tegra/dpaux.c
+++ b/drivers/gpu/drm/tegra/dpaux.c
@@ -468,7 +468,7 @@ static int tegra_dpaux_probe(struct platform_device *pdev)
dpaux->irq = platform_get_irq(pdev, 0);
if (dpaux->irq < 0)
- return -ENXIO;
+ return dpaux->irq;
if (!pdev->dev.pm_domain) {
dpaux->rst = devm_reset_control_get(&pdev->dev, "dpaux");
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 284/600] of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (282 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 283/600] drm/tegra: dpaux: Fix incorrect return value of platform_get_irq Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 285/600] arm64: dts: qcom: sm8150: Fix the I2C7 interrupt Greg Kroah-Hartman
` (326 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Ruan Jinjie, Rob Herring,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ruan Jinjie <ruanjinjie@huawei.com>
[ Upstream commit d6ce4f0ea19c32f10867ed93d8386924326ab474 ]
when kmalloc() fail to allocate memory in kasprintf(), name
or full_name will be NULL, strcmp() will cause
null pointer dereference.
Fixes: 0d638a07d3a1 ("of: Convert to using %pOF instead of full_name")
Signed-off-by: Ruan Jinjie <ruanjinjie@huawei.com>
Link: https://lore.kernel.org/r/20230727080246.519539-1-ruanjinjie@huawei.com
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/of/unittest.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index 9be6ed47a1ce4..b815b8862e187 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -70,7 +70,7 @@ static void __init of_unittest_find_node_by_name(void)
np = of_find_node_by_path("/testcase-data");
name = kasprintf(GFP_KERNEL, "%pOF", np);
- unittest(np && !strcmp("/testcase-data", name),
+ unittest(np && name && !strcmp("/testcase-data", name),
"find /testcase-data failed\n");
of_node_put(np);
kfree(name);
@@ -81,14 +81,14 @@ static void __init of_unittest_find_node_by_name(void)
np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a");
name = kasprintf(GFP_KERNEL, "%pOF", np);
- unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", name),
+ unittest(np && name && !strcmp("/testcase-data/phandle-tests/consumer-a", name),
"find /testcase-data/phandle-tests/consumer-a failed\n");
of_node_put(np);
kfree(name);
np = of_find_node_by_path("testcase-alias");
name = kasprintf(GFP_KERNEL, "%pOF", np);
- unittest(np && !strcmp("/testcase-data", name),
+ unittest(np && name && !strcmp("/testcase-data", name),
"find testcase-alias failed\n");
of_node_put(np);
kfree(name);
@@ -99,7 +99,7 @@ static void __init of_unittest_find_node_by_name(void)
np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a");
name = kasprintf(GFP_KERNEL, "%pOF", np);
- unittest(np && !strcmp("/testcase-data/phandle-tests/consumer-a", name),
+ unittest(np && name && !strcmp("/testcase-data/phandle-tests/consumer-a", name),
"find testcase-alias/phandle-tests/consumer-a failed\n");
of_node_put(np);
kfree(name);
@@ -1379,6 +1379,8 @@ static void attach_node_and_children(struct device_node *np)
const char *full_name;
full_name = kasprintf(GFP_KERNEL, "%pOF", np);
+ if (!full_name)
+ return;
if (!strcmp(full_name, "/__local_fixups__") ||
!strcmp(full_name, "/__fixups__")) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 285/600] arm64: dts: qcom: sm8150: Fix the I2C7 interrupt
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (283 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 284/600] of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 286/600] ARM: dts: BCM53573: Fix Tenda AC9 switch CPU port Greg Kroah-Hartman
` (325 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zeyan Li, Krzysztof Kozlowski,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zeyan Li <qaz6750@outlook.com>
[ Upstream commit f9568d22ce06192a7e14bda3a29dc216659554ff ]
I2C6 and I2C7 use the same interrupts, which is incorrect.
In the downstream kernel, I2C7 has interrupts of 608 instead of 607.
Fixes: 81bee6953b58 ("arm64: dts: qcom: sm8150: add i2c nodes")
Signed-off-by: Zeyan Li <qaz6750@outlook.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/SY7P282MB378712225CBCEA95FE71554DB201A@SY7P282MB3787.AUSP282.PROD.OUTLOOK.COM
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sm8150.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8150.dtsi b/arch/arm64/boot/dts/qcom/sm8150.dtsi
index 78ae4b9eaa106..f049fb42e3ca8 100644
--- a/arch/arm64/boot/dts/qcom/sm8150.dtsi
+++ b/arch/arm64/boot/dts/qcom/sm8150.dtsi
@@ -1196,7 +1196,7 @@ i2c7: i2c@89c000 {
dma-names = "tx", "rx";
pinctrl-names = "default";
pinctrl-0 = <&qup_i2c7_default>;
- interrupts = <GIC_SPI 607 IRQ_TYPE_LEVEL_HIGH>;
+ interrupts = <GIC_SPI 608 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 286/600] ARM: dts: BCM53573: Fix Tenda AC9 switch CPU port
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (284 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 285/600] arm64: dts: qcom: sm8150: Fix the I2C7 interrupt Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 287/600] drm/armada: Fix off-by-one error in armada_overlay_get_property() Greg Kroah-Hartman
` (324 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rafał Miłecki,
Florian Fainelli, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <rafal@milecki.pl>
[ Upstream commit 7141209db9c335ab261a17933809a3e660ebdc12 ]
Primary Ethernet interface is connected to the port 8 (not 5).
Fixes: 64612828628c ("ARM: dts: BCM53573: Add Tenda AC9 switch ports")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
Link: https://lore.kernel.org/r/20230723195416.7831-1-zajec5@gmail.com
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/bcm47189-tenda-ac9.dts | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
index 55b92645b0f1f..b7c7bf0be76f4 100644
--- a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
+++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
@@ -135,8 +135,8 @@ port@4 {
label = "lan4";
};
- port@5 {
- reg = <5>;
+ port@8 {
+ reg = <8>;
label = "cpu";
ethernet = <&gmac0>;
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 287/600] drm/armada: Fix off-by-one error in armada_overlay_get_property()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (285 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 286/600] ARM: dts: BCM53573: Fix Tenda AC9 switch CPU port Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 288/600] drm/repaper: Reduce temporary buffer size in repaper_fb_dirty() Greg Kroah-Hartman
` (323 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Geert Uytterhoeven,
Russell King (Oracle), Javier Martinez Canillas, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <geert+renesas@glider.be>
[ Upstream commit 5f0d984053f74983a287100a9519b2fabb785fb5 ]
As ffs() returns one more than the index of the first bit set (zero
means no bits set), the color key mode value is shifted one position too
much.
Fix this by using FIELD_GET() instead.
Fixes: c96103b6c49ff9a8 ("drm/armada: move colorkey properties into overlay plane state")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/a4d779d954a7515ddbbf31cb0f0d8184c0e7c879.1689600265.git.geert+renesas@glider.be
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/armada/armada_overlay.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/armada/armada_overlay.c b/drivers/gpu/drm/armada/armada_overlay.c
index f21eb8fb76d87..3b9bd8ecda137 100644
--- a/drivers/gpu/drm/armada/armada_overlay.c
+++ b/drivers/gpu/drm/armada/armada_overlay.c
@@ -4,6 +4,8 @@
* Rewritten from the dovefb driver, and Armada510 manuals.
*/
+#include <linux/bitfield.h>
+
#include <drm/armada_drm.h>
#include <drm/drm_atomic.h>
#include <drm/drm_atomic_helper.h>
@@ -445,8 +447,8 @@ static int armada_overlay_get_property(struct drm_plane *plane,
drm_to_overlay_state(state)->colorkey_ug,
drm_to_overlay_state(state)->colorkey_vb, 0);
} else if (property == priv->colorkey_mode_prop) {
- *val = (drm_to_overlay_state(state)->colorkey_mode &
- CFG_CKMODE_MASK) >> ffs(CFG_CKMODE_MASK);
+ *val = FIELD_GET(CFG_CKMODE_MASK,
+ drm_to_overlay_state(state)->colorkey_mode);
} else if (property == priv->brightness_prop) {
*val = drm_to_overlay_state(state)->brightness + 256;
} else if (property == priv->contrast_prop) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 288/600] drm/repaper: Reduce temporary buffer size in repaper_fb_dirty()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (286 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 287/600] drm/armada: Fix off-by-one error in armada_overlay_get_property() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 289/600] drm/panel: simple: Add missing connector type and pixel format for AUO T215HVN01 Greg Kroah-Hartman
` (322 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Geert Uytterhoeven,
Javier Martinez Canillas, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <geert@linux-m68k.org>
[ Upstream commit fedf429e071f6dbbe7a69dfc342492e037692018 ]
As the temporary buffer is no longer used to store 8-bit grayscale data,
its size can be reduced to the size needed to store the monochrome
bitmap data.
Fixes: 24c6bedefbe71de9 ("drm/repaper: Use format helper for xrgb8888 to monochrome conversion")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220317081830.1211400-6-geert@linux-m68k.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/tiny/repaper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tiny/repaper.c b/drivers/gpu/drm/tiny/repaper.c
index e62f4d16b2c6b..7e2b0e2241358 100644
--- a/drivers/gpu/drm/tiny/repaper.c
+++ b/drivers/gpu/drm/tiny/repaper.c
@@ -533,7 +533,7 @@ static int repaper_fb_dirty(struct drm_framebuffer *fb)
DRM_DEBUG("Flushing [FB:%d] st=%ums\n", fb->base.id,
epd->factored_stage_time);
- buf = kmalloc_array(fb->width, fb->height, GFP_KERNEL);
+ buf = kmalloc(fb->width * fb->height / 8, GFP_KERNEL);
if (!buf) {
ret = -ENOMEM;
goto out_exit;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 289/600] drm/panel: simple: Add missing connector type and pixel format for AUO T215HVN01
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (287 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 288/600] drm/repaper: Reduce temporary buffer size in repaper_fb_dirty() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 290/600] ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig Greg Kroah-Hartman
` (321 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Marek Vasut, Sam Ravnborg,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 7a675a8fa598edb29a664a91adb80f0340649f6f ]
The connector type and pixel format are missing for this panel,
add them to prevent various drivers from failing to determine
either of those parameters.
Fixes: 7ee933a1d5c4 ("drm/panel: simple: Add support for AUO T215HVN01")
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230709134914.449328-1-marex@denx.de
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/panel/panel-simple.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
index 5e067ba7e5fba..0e8622ccd3a0f 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -1159,7 +1159,9 @@ static const struct panel_desc auo_t215hvn01 = {
.delay = {
.disable = 5,
.unprepare = 1000,
- }
+ },
+ .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,
+ .connector_type = DRM_MODE_CONNECTOR_LVDS,
};
static const struct drm_display_mode avic_tm070ddh03_mode = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 290/600] ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (288 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 289/600] drm/panel: simple: Add missing connector type and pixel format for AUO T215HVN01 Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 291/600] drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask Greg Kroah-Hartman
` (320 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Nayna Jain, Mimi Zohar, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nayna Jain <nayna@linux.ibm.com>
[ Upstream commit 5087fd9e80e539d2163accd045b73da64de7de95 ]
Time to remove "IMA_TRUSTED_KEYRING".
Fixes: f4dc37785e9b ("integrity: define '.evm' as a builtin 'trusted' keyring") # v4.5+
Signed-off-by: Nayna Jain <nayna@linux.ibm.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
security/integrity/ima/Kconfig | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/security/integrity/ima/Kconfig b/security/integrity/ima/Kconfig
index 60a511c6b583e..c17660bf5f347 100644
--- a/security/integrity/ima/Kconfig
+++ b/security/integrity/ima/Kconfig
@@ -248,18 +248,6 @@ config IMA_APPRAISE_MODSIG
The modsig keyword can be used in the IMA policy to allow a hook
to accept such signatures.
-config IMA_TRUSTED_KEYRING
- bool "Require all keys on the .ima keyring be signed (deprecated)"
- depends on IMA_APPRAISE && SYSTEM_TRUSTED_KEYRING
- depends on INTEGRITY_ASYMMETRIC_KEYS
- select INTEGRITY_TRUSTED_KEYRING
- default y
- help
- This option requires that all keys added to the .ima
- keyring be signed by a key on the system trusted keyring.
-
- This option is deprecated in favor of INTEGRITY_TRUSTED_KEYRING
-
config IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY
bool "Permit keys validly signed by a built-in or secondary CA cert (EXPERIMENTAL)"
depends on SYSTEM_TRUSTED_KEYRING
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 291/600] drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (289 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 290/600] ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 292/600] soc: qcom: smem: Fix incompatible types in comparison Greg Kroah-Hartman
` (319 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jiasheng Jiang, Laurent Pinchart,
Tomi Valkeinen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiasheng Jiang <jiasheng@iscas.ac.cn>
[ Upstream commit 1832fba7f9780aff67c96ad30f397c2d76141833 ]
Add check for dma_set_mask() and return the error if it fails.
Fixes: d76271d22694 ("drm: xlnx: DRM/KMS driver for Xilinx ZynqMP DisplayPort Subsystem")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index 1de2d927c32b0..fcaa958d841c9 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -201,7 +201,9 @@ static int zynqmp_dpsub_probe(struct platform_device *pdev)
dpsub->dev = &pdev->dev;
platform_set_drvdata(pdev, dpsub);
- dma_set_mask(dpsub->dev, DMA_BIT_MASK(ZYNQMP_DISP_MAX_DMA_BIT));
+ ret = dma_set_mask(dpsub->dev, DMA_BIT_MASK(ZYNQMP_DISP_MAX_DMA_BIT));
+ if (ret)
+ return ret;
/* Try the reserved memory. Proceed if there's none. */
of_reserved_mem_device_init(&pdev->dev);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 292/600] soc: qcom: smem: Fix incompatible types in comparison
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (290 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 291/600] drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 293/600] drm/msm/mdp5: Dont leak some plane state Greg Kroah-Hartman
` (318 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chen Jiahao, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chen Jiahao <chenjiahao16@huawei.com>
[ Upstream commit 5f908786cf44fcb397cfe0f322ef2f41b0909e2a ]
This patch fixes the following sparse error:
drivers/soc/qcom/smem.c:738:30: error: incompatible types in comparison expression (different add ress spaces):
drivers/soc/qcom/smem.c:738:30: void *
drivers/soc/qcom/smem.c:738:30: void [noderef] __iomem *
In addr_in_range(), "base" is of type void __iomem *, converting
void *addr to the same type to fix above sparse error.
Fixes: 20bb6c9de1b7 ("soc: qcom: smem: map only partitions used by local HOST")
Signed-off-by: Chen Jiahao <chenjiahao16@huawei.com>
Link: https://lore.kernel.org/r/20230801094807.4146779-1-chenjiahao16@huawei.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/soc/qcom/smem.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/soc/qcom/smem.c b/drivers/soc/qcom/smem.c
index 4f163d62942c1..af8d90efd91fa 100644
--- a/drivers/soc/qcom/smem.c
+++ b/drivers/soc/qcom/smem.c
@@ -723,7 +723,7 @@ EXPORT_SYMBOL(qcom_smem_get_free_space);
static bool addr_in_range(void __iomem *base, size_t size, void *addr)
{
- return base && (addr >= base && addr < base + size);
+ return base && ((void __iomem *)addr >= base && (void __iomem *)addr < base + size);
}
/**
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 293/600] drm/msm/mdp5: Dont leak some plane state
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (291 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 292/600] soc: qcom: smem: Fix incompatible types in comparison Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 294/600] firmware: meson_sm: fix to avoid potential NULL pointer dereference Greg Kroah-Hartman
` (317 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maarten Lankhorst, Daniel Vetter,
Rob Clark, Abhinav Kumar, Dmitry Baryshkov, linux-arm-msm,
freedreno, dorum, Daniel Vetter, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Vetter <daniel.vetter@ffwll.ch>
[ Upstream commit fd0ad3b2365c1c58aa5a761c18efc4817193beb6 ]
Apparently no one noticed that mdp5 plane states leak like a sieve
ever since we introduced plane_state->commit refcount a few years ago
in 21a01abbe32a ("drm/atomic: Fix freeing connector/plane state too
early by tracking commits, v3.")
Fix it by using the right helpers.
Fixes: 21a01abbe32a ("drm/atomic: Fix freeing connector/plane state too early by tracking commits, v3.")
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Abhinav Kumar <quic_abhinavk@quicinc.com>
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Reported-and-tested-by: dorum@noisolation.com
Cc: dorum@noisolation.com
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Reviewed-by: Rob Clark <robdclark@gmail.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com>
Patchwork: https://patchwork.freedesktop.org/patch/551236/
Link: https://lore.kernel.org/r/20230803204521.928582-1-daniel.vetter@ffwll.ch
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
index bd2c4ac456017..0d5ff03cb0910 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_plane.c
@@ -130,8 +130,7 @@ static void mdp5_plane_destroy_state(struct drm_plane *plane,
{
struct mdp5_plane_state *pstate = to_mdp5_plane_state(state);
- if (state->fb)
- drm_framebuffer_put(state->fb);
+ __drm_atomic_helper_plane_destroy_state(state);
kfree(pstate);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 294/600] firmware: meson_sm: fix to avoid potential NULL pointer dereference
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (292 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 293/600] drm/msm/mdp5: Dont leak some plane state Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 295/600] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done Greg Kroah-Hartman
` (316 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zhang Shurong, Neil Armstrong,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Shurong <zhang_shurong@foxmail.com>
[ Upstream commit f2ed165619c16577c02b703a114a1f6b52026df4 ]
of_match_device() may fail and returns a NULL pointer.
Fix this by checking the return value of of_match_device.
Fixes: 8cde3c2153e8 ("firmware: meson_sm: Rework driver as a proper platform driver")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/tencent_AA08AAA6C4F34D53ADCE962E188A879B8206@qq.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/firmware/meson/meson_sm.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/firmware/meson/meson_sm.c b/drivers/firmware/meson/meson_sm.c
index 77aa5c6398aa6..d081a6312627b 100644
--- a/drivers/firmware/meson/meson_sm.c
+++ b/drivers/firmware/meson/meson_sm.c
@@ -292,6 +292,8 @@ static int __init meson_sm_probe(struct platform_device *pdev)
return -ENOMEM;
chip = of_match_device(meson_sm_ids, dev)->data;
+ if (!chip)
+ return -EINVAL;
if (chip->cmd_shmem_in_base) {
fw->sm_shmem_in_base = meson_sm_map_shmem(chip->cmd_shmem_in_base,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 295/600] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (293 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 294/600] firmware: meson_sm: fix to avoid potential NULL pointer dereference Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 296/600] smackfs: Prevent underflow in smk_set_cipso() Greg Kroah-Hartman
` (315 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dmitry Baryshkov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
[ Upstream commit d93cf453f51da168f4410ba73656f1e862096973 ]
Since commit 1e7ac595fa46 ("drm/msm/dpu: pass irq to
dpu_encoder_helper_wait_for_irq()") the
dpu_encoder_phys_wb_wait_for_commit_done expects the IRQ index rather
than the IRQ index in phys_enc->intr table, however writeback got the
older invocation in place. This was unnoticed for several releases, but
now it's time to fix it.
Fixes: d7d0e73f7de3 ("drm/msm/dpu: introduce the dpu_encoder_phys_* for writeback")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/550924/
Link: https://lore.kernel.org/r/20230802100426.4184892-2-dmitry.baryshkov@linaro.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
index 62f6ff6abf410..42c7e378d504d 100644
--- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_wb.c
@@ -460,7 +460,8 @@ static int dpu_encoder_phys_wb_wait_for_commit_done(
wait_info.atomic_cnt = &phys_enc->pending_kickoff_cnt;
wait_info.timeout_ms = KICKOFF_TIMEOUT_MS;
- ret = dpu_encoder_helper_wait_for_irq(phys_enc, INTR_IDX_WB_DONE,
+ ret = dpu_encoder_helper_wait_for_irq(phys_enc,
+ phys_enc->irq[INTR_IDX_WB_DONE],
dpu_encoder_phys_wb_done_irq, &wait_info);
if (ret == -ETIMEDOUT)
_dpu_encoder_phys_wb_handle_wbdone_timeout(phys_enc);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 296/600] smackfs: Prevent underflow in smk_set_cipso()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (294 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 295/600] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 297/600] drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create() Greg Kroah-Hartman
` (314 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Casey Schaufler,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit 3ad49d37cf5759c3b8b68d02e3563f633d9c1aee ]
There is a upper bound to "catlen" but no lower bound to prevent
negatives. I don't see that this necessarily causes a problem but we
may as well be safe.
Fixes: e114e473771c ("Smack: Simplified Mandatory Access Control Kernel")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
security/smack/smackfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index 4b58526450d49..da7db9e22ce7c 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -896,7 +896,7 @@ static ssize_t smk_set_cipso(struct file *file, const char __user *buf,
}
ret = sscanf(rule, "%d", &catlen);
- if (ret != 1 || catlen > SMACK_CIPSO_MAXCATNUM)
+ if (ret != 1 || catlen < 0 || catlen > SMACK_CIPSO_MAXCATNUM)
goto out;
if (format == SMK_FIXED24_FMT &&
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 297/600] drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (295 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 296/600] smackfs: Prevent underflow in smk_set_cipso() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 298/600] drm/msm/a2xx: Call adreno_gpu_init() earlier Greg Kroah-Hartman
` (313 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Yang Wang,
Kenneth Feng, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yang Wang <kevinyang.wang@amd.com>
[ Upstream commit 25e6373a5b8efc623443f2699d2b929bf3067d76 ]
- fix variable ('attr') dereferenced issue.
- using condition check instead of BUG_ON().
Fixes: 4e01847c38f7 ("drm/amdgpu: optimize amdgpu device attribute code")
Cc: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Yang Wang <kevinyang.wang@amd.com>
Reviewed-by: Kenneth Feng <kenneth.feng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/pm/amdgpu_pm.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
index 7d613118cb713..8472013ff38a2 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
@@ -2072,15 +2072,19 @@ static int amdgpu_device_attr_create(struct amdgpu_device *adev,
uint32_t mask, struct list_head *attr_list)
{
int ret = 0;
- struct device_attribute *dev_attr = &attr->dev_attr;
- const char *name = dev_attr->attr.name;
enum amdgpu_device_attr_states attr_states = ATTR_STATE_SUPPORTED;
struct amdgpu_device_attr_entry *attr_entry;
+ struct device_attribute *dev_attr;
+ const char *name;
int (*attr_update)(struct amdgpu_device *adev, struct amdgpu_device_attr *attr,
uint32_t mask, enum amdgpu_device_attr_states *states) = default_attr_update;
- BUG_ON(!attr);
+ if (!attr)
+ return -EINVAL;
+
+ dev_attr = &attr->dev_attr;
+ name = dev_attr->attr.name;
attr_update = attr->attr_update ? attr->attr_update : default_attr_update;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 298/600] drm/msm/a2xx: Call adreno_gpu_init() earlier
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (296 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 297/600] drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 299/600] audit: fix possible soft lockup in __audit_inode_child() Greg Kroah-Hartman
` (312 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Fabio Estevam, Dmitry Baryshkov,
Rob Clark, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fabio Estevam <festevam@denx.de>
[ Upstream commit db07ce5da8b26bfeaf437a676ae49bd3bb1eace6 ]
The adreno_is_a20x() and adreno_is_a225() functions rely on the
GPU revision, but such information is retrieved inside adreno_gpu_init(),
which is called afterwards.
Fix this problem by caling adreno_gpu_init() earlier, so that
the GPU information revision is available when adreno_is_a20x()
and adreno_is_a225() run.
Tested on a imx53-qsb board.
Fixes: 21af872cd8c6 ("drm/msm/adreno: add a2xx")
Signed-off-by: Fabio Estevam <festevam@denx.de>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Patchwork: https://patchwork.freedesktop.org/patch/543456/
Signed-off-by: Rob Clark <robdclark@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/msm/adreno/a2xx_gpu.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a2xx_gpu.c b/drivers/gpu/drm/msm/adreno/a2xx_gpu.c
index 6c9a747eb4ad5..2428d6ac5fe96 100644
--- a/drivers/gpu/drm/msm/adreno/a2xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a2xx_gpu.c
@@ -521,6 +521,10 @@ struct msm_gpu *a2xx_gpu_init(struct drm_device *dev)
gpu->perfcntrs = perfcntrs;
gpu->num_perfcntrs = ARRAY_SIZE(perfcntrs);
+ ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 1);
+ if (ret)
+ goto fail;
+
if (adreno_is_a20x(adreno_gpu))
adreno_gpu->registers = a200_registers;
else if (adreno_is_a225(adreno_gpu))
@@ -528,10 +532,6 @@ struct msm_gpu *a2xx_gpu_init(struct drm_device *dev)
else
adreno_gpu->registers = a220_registers;
- ret = adreno_gpu_init(dev, pdev, adreno_gpu, &funcs, 1);
- if (ret)
- goto fail;
-
if (!gpu->aspace) {
dev_err(dev->dev, "No memory protection without MMU\n");
if (!allow_vram_carveout) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 299/600] audit: fix possible soft lockup in __audit_inode_child()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (297 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 298/600] drm/msm/a2xx: Call adreno_gpu_init() earlier Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 300/600] block/mq-deadline: use correct way to throttling write requests Greg Kroah-Hartman
` (311 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Gaosheng Cui, Paul Moore,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gaosheng Cui <cuigaosheng1@huawei.com>
[ Upstream commit b59bc6e37237e37eadf50cd5de369e913f524463 ]
Tracefs or debugfs maybe cause hundreds to thousands of PATH records,
too many PATH records maybe cause soft lockup.
For example:
1. CONFIG_KASAN=y && CONFIG_PREEMPTION=n
2. auditctl -a exit,always -S open -k key
3. sysctl -w kernel.watchdog_thresh=5
4. mkdir /sys/kernel/debug/tracing/instances/test
There may be a soft lockup as follows:
watchdog: BUG: soft lockup - CPU#45 stuck for 7s! [mkdir:15498]
Kernel panic - not syncing: softlockup: hung tasks
Call trace:
dump_backtrace+0x0/0x30c
show_stack+0x20/0x30
dump_stack+0x11c/0x174
panic+0x27c/0x494
watchdog_timer_fn+0x2bc/0x390
__run_hrtimer+0x148/0x4fc
__hrtimer_run_queues+0x154/0x210
hrtimer_interrupt+0x2c4/0x760
arch_timer_handler_phys+0x48/0x60
handle_percpu_devid_irq+0xe0/0x340
__handle_domain_irq+0xbc/0x130
gic_handle_irq+0x78/0x460
el1_irq+0xb8/0x140
__audit_inode_child+0x240/0x7bc
tracefs_create_file+0x1b8/0x2a0
trace_create_file+0x18/0x50
event_create_dir+0x204/0x30c
__trace_add_new_event+0xac/0x100
event_trace_add_tracer+0xa0/0x130
trace_array_create_dir+0x60/0x140
trace_array_create+0x1e0/0x370
instance_mkdir+0x90/0xd0
tracefs_syscall_mkdir+0x68/0xa0
vfs_mkdir+0x21c/0x34c
do_mkdirat+0x1b4/0x1d4
__arm64_sys_mkdirat+0x4c/0x60
el0_svc_common.constprop.0+0xa8/0x240
do_el0_svc+0x8c/0xc0
el0_svc+0x20/0x30
el0_sync_handler+0xb0/0xb4
el0_sync+0x160/0x180
Therefore, we add cond_resched() to __audit_inode_child() to fix it.
Fixes: 5195d8e217a7 ("audit: dynamically allocate audit_names when not enough space is in the names array")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/auditsc.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 9f8c05228d6d6..a2240f54fc224 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -2456,6 +2456,8 @@ void __audit_inode_child(struct inode *parent,
}
}
+ cond_resched();
+
/* is there a matching child entry? */
list_for_each_entry(n, &context->names_list, list) {
/* can only match entries that have a name */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 300/600] block/mq-deadline: use correct way to throttling write requests
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (298 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 299/600] audit: fix possible soft lockup in __audit_inode_child() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 301/600] io_uring: fix drain stalls by invalid SQE Greg Kroah-Hartman
` (310 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zhiguo Niu, Bart Van Assche,
Jens Axboe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhiguo Niu <zhiguo.niu@unisoc.com>
[ Upstream commit d47f9717e5cfd0dd8c0ba2ecfa47c38d140f1bb6 ]
The original formula was inaccurate:
dd->async_depth = max(1UL, 3 * q->nr_requests / 4);
For write requests, when we assign a tags from sched_tags,
data->shallow_depth will be passed to sbitmap_find_bit,
see the following code:
nr = sbitmap_find_bit_in_word(&sb->map[index],
min_t (unsigned int,
__map_depth(sb, index),
depth),
alloc_hint, wrap);
The smaller of data->shallow_depth and __map_depth(sb, index)
will be used as the maximum range when allocating bits.
For a mmc device (one hw queue, deadline I/O scheduler):
q->nr_requests = sched_tags = 128, so according to the previous
calculation method, dd->async_depth = data->shallow_depth = 96,
and the platform is 64bits with 8 cpus, sched_tags.bitmap_tags.sb.shift=5,
sb.maps[]=32/32/32/32, 32 is smaller than 96, whether it is a read or
a write I/O, tags can be allocated to the maximum range each time,
which has not throttling effect.
In addition, refer to the methods of bfg/kyber I/O scheduler,
limit ratiois are calculated base on sched_tags.bitmap_tags.sb.shift.
This patch can throttle write requests really.
Fixes: 07757588e507 ("block/mq-deadline: Reserve 25% of scheduler tags for synchronous requests")
Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/1691061162-22898-1-git-send-email-zhiguo.niu@unisoc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
block/mq-deadline.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/block/mq-deadline.c b/block/mq-deadline.c
index f10c2a0d18d41..55e26065c2e27 100644
--- a/block/mq-deadline.c
+++ b/block/mq-deadline.c
@@ -622,8 +622,9 @@ static void dd_depth_updated(struct blk_mq_hw_ctx *hctx)
struct request_queue *q = hctx->queue;
struct deadline_data *dd = q->elevator->elevator_data;
struct blk_mq_tags *tags = hctx->sched_tags;
+ unsigned int shift = tags->bitmap_tags.sb.shift;
- dd->async_depth = max(1UL, 3 * q->nr_requests / 4);
+ dd->async_depth = max(1U, 3 * (1U << shift) / 4);
sbitmap_queue_min_shallow_depth(&tags->bitmap_tags, dd->async_depth);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 301/600] io_uring: fix drain stalls by invalid SQE
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (299 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 300/600] block/mq-deadline: use correct way to throttling write requests Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 302/600] drm/mediatek: dp: Add missing error checks in mtk_dp_parse_capabilities Greg Kroah-Hartman
` (309 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Pavel Begunkov, Jens Axboe,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pavel Begunkov <asml.silence@gmail.com>
[ Upstream commit cfdbaa3a291d6fd2cb4a1a70d74e63b4abc2f5ec ]
cq_extra is protected by ->completion_lock, which io_get_sqe() misses.
The bug is harmless as it doesn't happen in real life, requires invalid
SQ index array and racing with submission, and only messes up the
userspace, i.e. stall requests execution but will be cleaned up on
ring destruction.
Fixes: 15641e427070f ("io_uring: don't cache number of dropped SQEs")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/66096d54651b1a60534bb2023f2947f09f50ef73.1691538547.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
io_uring/io_uring.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c
index b0e47fe1eb4bb..e15abe26a0e61 100644
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -2240,7 +2240,9 @@ static const struct io_uring_sqe *io_get_sqe(struct io_ring_ctx *ctx)
}
/* drop invalid entries */
+ spin_lock(&ctx->completion_lock);
ctx->cq_extra--;
+ spin_unlock(&ctx->completion_lock);
WRITE_ONCE(ctx->rings->sq_dropped,
READ_ONCE(ctx->rings->sq_dropped) + 1);
return NULL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 302/600] drm/mediatek: dp: Add missing error checks in mtk_dp_parse_capabilities
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (300 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 301/600] io_uring: fix drain stalls by invalid SQE Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 303/600] bus: ti-sysc: Fix build warning for 64-bit build Greg Kroah-Hartman
` (308 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, AngeloGioacchino Del Regno,
Chen-Yu Tsai, Alexandre Mergnat, CK Hu, Chun-Kuang Hu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
[ Upstream commit cfc146137a9f12e883ba64bc496b6da4d23f26d5 ]
If reading the RX capabilities fails the training pattern will be set
wrongly: add error checking for drm_dp_read_dpcd_caps() and return if
anything went wrong with it.
While at it, also add a less critical error check when writing to
clear the ESI0 IRQ vector.
Fixes: f70ac097a2cf ("drm/mediatek: Add MT8195 Embedded DisplayPort driver")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Tested-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20230725073234.55892-2-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_dp.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_dp.c b/drivers/gpu/drm/mediatek/mtk_dp.c
index 007af69e5026f..4c249939a6c3b 100644
--- a/drivers/gpu/drm/mediatek/mtk_dp.c
+++ b/drivers/gpu/drm/mediatek/mtk_dp.c
@@ -1588,7 +1588,9 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
u8 val;
ssize_t ret;
- drm_dp_read_dpcd_caps(&mtk_dp->aux, mtk_dp->rx_cap);
+ ret = drm_dp_read_dpcd_caps(&mtk_dp->aux, mtk_dp->rx_cap);
+ if (ret < 0)
+ return ret;
if (drm_dp_tps4_supported(mtk_dp->rx_cap))
mtk_dp->train_info.channel_eq_pattern = DP_TRAINING_PATTERN_4;
@@ -1615,10 +1617,13 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
return ret == 0 ? -EIO : ret;
}
- if (val)
- drm_dp_dpcd_writeb(&mtk_dp->aux,
- DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0,
- val);
+ if (val) {
+ ret = drm_dp_dpcd_writeb(&mtk_dp->aux,
+ DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0,
+ val);
+ if (ret < 0)
+ return ret;
+ }
}
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 303/600] bus: ti-sysc: Fix build warning for 64-bit build
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (301 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 302/600] drm/mediatek: dp: Add missing error checks in mtk_dp_parse_capabilities Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 304/600] drm/mediatek: Remove freeing not dynamic allocated memory Greg Kroah-Hartman
` (307 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dhruva Gole, Nishanth Menon,
Tony Lindgren, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Lindgren <tony@atomide.com>
[ Upstream commit e1e1e9bb9d943ec690670a609a5f660ca10eaf85 ]
Fix "warning: cast from pointer to integer of different size" on 64-bit
builds.
Note that this is a cosmetic fix at this point as the driver is not yet
used for 64-bit systems.
Fixes: feaa8baee82a ("bus: ti-sysc: Implement SoC revision handling")
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Reviewed-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/bus/ti-sysc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index 9b7268bae66ab..0c933788d8575 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -3125,7 +3125,7 @@ static int sysc_init_static_data(struct sysc *ddata)
match = soc_device_match(sysc_soc_match);
if (match && match->data)
- sysc_soc->soc = (int)match->data;
+ sysc_soc->soc = (enum sysc_soc)match->data;
/*
* Check and warn about possible old incomplete dtb. We now want to see
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 304/600] drm/mediatek: Remove freeing not dynamic allocated memory
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (302 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 303/600] bus: ti-sysc: Fix build warning for 64-bit build Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 305/600] ARM: dts: qcom: ipq4019: correct SDHCI XO clock Greg Kroah-Hartman
` (306 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jason-JH.Lin,
AngeloGioacchino Del Regno, CK Hu, Alexandre Mergnat,
Chun-Kuang Hu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason-JH.Lin <jason-jh.lin@mediatek.com>
[ Upstream commit 27b9e2ea3f2757da26bb8280e46f7fdbb1acb219 ]
Fixing the coverity issue of:
mtk_drm_cmdq_pkt_destroy frees address of mtk_crtc->cmdq_handle
So remove the free function.
Fixes: 7627122fd1c0 ("drm/mediatek: Add cmdq_handle in mtk_crtc")
Signed-off-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20230714094908.13087-2-jason-jh.lin@mediatek.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_drm_crtc.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
index 5071f1263216b..14ddfe3a6be77 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
@@ -115,10 +115,9 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *
dma_addr_t dma_addr;
pkt->va_base = kzalloc(size, GFP_KERNEL);
- if (!pkt->va_base) {
- kfree(pkt);
+ if (!pkt->va_base)
return -ENOMEM;
- }
+
pkt->buf_size = size;
pkt->cl = (void *)client;
@@ -128,7 +127,6 @@ static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *
if (dma_mapping_error(dev, dma_addr)) {
dev_err(dev, "dma map failed, size=%u\n", (u32)(u64)size);
kfree(pkt->va_base);
- kfree(pkt);
return -ENOMEM;
}
@@ -144,7 +142,6 @@ static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt)
dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size,
DMA_TO_DEVICE);
kfree(pkt->va_base);
- kfree(pkt);
}
#endif
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 305/600] ARM: dts: qcom: ipq4019: correct SDHCI XO clock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (303 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 304/600] drm/mediatek: Remove freeing not dynamic allocated memory Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 306/600] drm/mediatek: Fix potential memory leak if vmap() fail Greg Kroah-Hartman
` (305 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Robert Marko, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Robert Marko <robert.marko@sartura.hr>
[ Upstream commit b5ed7a5c1fdb3981713f7b637b72aa390c3db036 ]
Using GCC_DCD_XO_CLK as the XO clock for SDHCI controller is not correct,
it seems that I somehow made a mistake of passing it instead of the fixed
XO clock.
Fixes: 04b3b72b5b8f ("ARM: dts: qcom: ipq4019: Add SDHCI controller node")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230811110150.229966-1-robert.marko@sartura.hr
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/boot/dts/qcom-ipq4019.dtsi | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
index 02e13d8c222a0..b5e0ed4923b59 100644
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
@@ -228,9 +228,12 @@ sdhci: mmc@7824900 {
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 138 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "hc_irq", "pwr_irq";
bus-width = <8>;
- clocks = <&gcc GCC_SDCC1_AHB_CLK>, <&gcc GCC_SDCC1_APPS_CLK>,
- <&gcc GCC_DCD_XO_CLK>;
- clock-names = "iface", "core", "xo";
+ clocks = <&gcc GCC_SDCC1_AHB_CLK>,
+ <&gcc GCC_SDCC1_APPS_CLK>,
+ <&xo>;
+ clock-names = "iface",
+ "core",
+ "xo";
status = "disabled";
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 306/600] drm/mediatek: Fix potential memory leak if vmap() fail
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (304 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 305/600] ARM: dts: qcom: ipq4019: correct SDHCI XO clock Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 307/600] arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names Greg Kroah-Hartman
` (304 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Matthias Brugger, Alexandre Mergnat,
Sui Jingfeng, CK Hu, AngeloGioacchino Del Regno, Chun-Kuang Hu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sui Jingfeng <suijingfeng@loongson.cn>
[ Upstream commit 379091e0f6d179d1a084c65de90fa44583b14a70 ]
Also return -ENOMEM if such a failure happens, the implement should take
responsibility for the error handling.
Fixes: 3df64d7b0a4f ("drm/mediatek: Implement gem prime vmap/vunmap function")
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Signed-off-by: Sui Jingfeng <suijingfeng@loongson.cn>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20230706134000.130098-1-suijingfeng@loongson.cn/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_drm_gem.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_drm_gem.c b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
index 6c204ccfb9ece..1d0374a577a5e 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_gem.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_gem.c
@@ -242,7 +242,11 @@ int mtk_drm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map)
mtk_gem->kvaddr = vmap(mtk_gem->pages, npages, VM_MAP,
pgprot_writecombine(PAGE_KERNEL));
-
+ if (!mtk_gem->kvaddr) {
+ kfree(sgt);
+ kfree(mtk_gem->pages);
+ return -ENOMEM;
+ }
out:
kfree(sgt);
iosys_map_set_vaddr(map, mtk_gem->kvaddr);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 307/600] arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (305 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 306/600] drm/mediatek: Fix potential memory leak if vmap() fail Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 308/600] arm64: dts: qcom: msm8998: Drop bus clock reference from MMSS SMMU Greg Kroah-Hartman
` (303 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bryan ODonoghue, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
[ Upstream commit 43a684580819e7f35b6cb38236be63c4cba26ef4 ]
The ov5640 driver expects DOVDD, AVDD and DVDD as regulator supply names.
The ov5640 has depended on these names since the driver was committed
upstream in 2017. Similarly apq8016-sbc.dtsi has had completely different
regulator names since its own initial commit in 2020.
Perhaps the regulators were left on in previous 410c bootloaders. In any
case today on 6.5 we won't switch on the ov5640 without correctly naming
the regulators.
Fixes: 39e0ce6cd1bf ("arm64: dts: qcom: apq8016-sbc: Add CCI/Sensor nodes")
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230811234738.2859417-3-bryan.odonoghue@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/apq8016-sbc.dts b/arch/arm64/boot/dts/qcom/apq8016-sbc.dts
index e3e90ad92cc59..9650ae70c8723 100644
--- a/arch/arm64/boot/dts/qcom/apq8016-sbc.dts
+++ b/arch/arm64/boot/dts/qcom/apq8016-sbc.dts
@@ -289,9 +289,9 @@ camera_rear@3b {
clock-names = "xclk";
clock-frequency = <23880000>;
- vdddo-supply = <&camera_vdddo_1v8>;
- vdda-supply = <&camera_vdda_2v8>;
- vddd-supply = <&camera_vddd_1v5>;
+ DOVDD-supply = <&camera_vdddo_1v8>;
+ AVDD-supply = <&camera_vdda_2v8>;
+ DVDD-supply = <&camera_vddd_1v5>;
/* No camera mezzanine by default */
status = "disabled";
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 308/600] arm64: dts: qcom: msm8998: Drop bus clock reference from MMSS SMMU
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (306 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 307/600] arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 309/600] arm64: dts: qcom: msm8998: Add missing power domain to " Greg Kroah-Hartman
` (302 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jeffrey Hugo, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit a3ce236364b82688ca4c7605f63c4efd68e9589c ]
The MMSS SMMU has been abusingly consuming the exposed RPM interconnect
clock. Drop it.
Fixes: 05ce21b54423 ("arm64: dts: qcom: msm8998: Configure the multimedia subsystem iommu")
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230531-topic-8998_mmssclk-v3-1-ba1b1fd9ee75@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8998.dtsi | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8998.dtsi b/arch/arm64/boot/dts/qcom/msm8998.dtsi
index 29c60bb56ed5f..3d6c7940d2a04 100644
--- a/arch/arm64/boot/dts/qcom/msm8998.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8998.dtsi
@@ -2418,10 +2418,10 @@ mmss_smmu: iommu@cd00000 {
clocks = <&mmcc MNOC_AHB_CLK>,
<&mmcc BIMC_SMMU_AHB_CLK>,
- <&rpmcc RPM_SMD_MMAXI_CLK>,
<&mmcc BIMC_SMMU_AXI_CLK>;
- clock-names = "iface-mm", "iface-smmu",
- "bus-mm", "bus-smmu";
+ clock-names = "iface-mm",
+ "iface-smmu",
+ "bus-smmu";
#global-interrupts = <0>;
interrupts =
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 309/600] arm64: dts: qcom: msm8998: Add missing power domain to MMSS SMMU
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (307 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 308/600] arm64: dts: qcom: msm8998: Drop bus clock reference from MMSS SMMU Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 310/600] arm64: dts: qcom: msm8996: Fix dsi1 interrupts Greg Kroah-Hartman
` (301 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jeffrey Hugo, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 7f828f3207142351750e9545527341425187de7b ]
The MMSS SMMU has its own power domain. Attach it so that we can drop
the "keep it always-on" hack.
Fixes: 05ce21b54423 ("arm64: dts: qcom: msm8998: Configure the multimedia subsystem iommu")
Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230531-topic-8998_mmssclk-v3-2-ba1b1fd9ee75@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8998.dtsi | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/msm8998.dtsi b/arch/arm64/boot/dts/qcom/msm8998.dtsi
index 3d6c7940d2a04..b00b8164c4aa2 100644
--- a/arch/arm64/boot/dts/qcom/msm8998.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8998.dtsi
@@ -2445,6 +2445,8 @@ mmss_smmu: iommu@cd00000 {
<GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>;
+
+ power-domains = <&mmcc BIMC_SMMU_GDSC>;
};
remoteproc_adsp: remoteproc@17300000 {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 310/600] arm64: dts: qcom: msm8996: Fix dsi1 interrupts
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (308 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 309/600] arm64: dts: qcom: msm8998: Add missing power domain to " Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 311/600] arm64: dts: qcom: sc8280xp-x13s: Unreserve NC pins Greg Kroah-Hartman
` (300 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Wronek, Yassine Oudjana,
Konrad Dybcio, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Wronek <davidwronek@gmail.com>
[ Upstream commit bd3b4ac11845b428996cfd2c7b8302ba6a07340d ]
Fix IRQ flags mismatch which was keeping dsi1 from probing by changing
interrupts = <4> to interrupts = <5>.
Fixes: 2752bb7d9b58 ("arm64: dts: qcom: msm8996: add second DSI interface")
Signed-off-by: David Wronek <davidwronek@gmail.com>
Acked-by: Yassine Oudjana <y.oudjana@protonmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230805130936.359860-2-davidwronek@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 7e381d8257ba1..9de2248a385a5 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -1063,7 +1063,7 @@ dsi1: dsi@996000 {
reg-names = "dsi_ctrl";
interrupt-parent = <&mdss>;
- interrupts = <4>;
+ interrupts = <5>;
clocks = <&mmcc MDSS_MDP_CLK>,
<&mmcc MDSS_BYTE1_CLK>,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 311/600] arm64: dts: qcom: sc8280xp-x13s: Unreserve NC pins
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (309 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 310/600] arm64: dts: qcom: msm8996: Fix dsi1 interrupts Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 312/600] bus: ti-sysc: Fix cast to enum warning Greg Kroah-Hartman
` (299 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 7868ed0144b33903e16a50485775f669c109e41a ]
Pins 83-86 and 158-160 are NC, so there's no point in keeping them
reserved. Take care of that.
Fixes: 32c231385ed4 ("arm64: dts: qcom: sc8280xp: add Lenovo Thinkpad X13s devicetree")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230803-topic-x13s_pin-v1-1-fae792274e89@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
index b2b744bb8a538..49d15432aeabf 100644
--- a/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
+++ b/arch/arm64/boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts
@@ -347,7 +347,7 @@ edp_bl_pwm: edp-bl-pwm-state {
};
&tlmm {
- gpio-reserved-ranges = <70 2>, <74 6>, <83 4>, <125 2>, <128 2>, <154 7>;
+ gpio-reserved-ranges = <70 2>, <74 6>, <125 2>, <128 2>, <154 4>;
kybd_default: kybd-default-state {
disable {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 312/600] bus: ti-sysc: Fix cast to enum warning
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (310 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 311/600] arm64: dts: qcom: sc8280xp-x13s: Unreserve NC pins Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 313/600] md/raid5-cache: fix a deadlock in r5l_exit_log() Greg Kroah-Hartman
` (298 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nishanth Menon, kernel test robot,
Tony Lindgren, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Lindgren <tony@atomide.com>
[ Upstream commit de44bf2f7683347f75690ef6cf61a1d5ba8f0891 ]
Fix warning for "cast to smaller integer type 'enum sysc_soc' from 'const
void *'".
Cc: Nishanth Menon <nm@ti.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202308150723.ziuGCdM3-lkp@intel.com/
Fixes: e1e1e9bb9d94 ("bus: ti-sysc: Fix build warning for 64-bit build")
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/bus/ti-sysc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/bus/ti-sysc.c b/drivers/bus/ti-sysc.c
index 0c933788d8575..ac36b01cf6d5d 100644
--- a/drivers/bus/ti-sysc.c
+++ b/drivers/bus/ti-sysc.c
@@ -3125,7 +3125,7 @@ static int sysc_init_static_data(struct sysc *ddata)
match = soc_device_match(sysc_soc_match);
if (match && match->data)
- sysc_soc->soc = (enum sysc_soc)match->data;
+ sysc_soc->soc = (enum sysc_soc)(uintptr_t)match->data;
/*
* Check and warn about possible old incomplete dtb. We now want to see
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 313/600] md/raid5-cache: fix a deadlock in r5l_exit_log()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (311 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 312/600] bus: ti-sysc: Fix cast to enum warning Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 314/600] md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid() Greg Kroah-Hartman
` (297 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yu Kuai, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit a705b11b358dee677aad80630e7608b2d5f56691 ]
Commit b13015af94cf ("md/raid5-cache: Clear conf->log after finishing
work") introduce a new problem:
// caller hold reconfig_mutex
r5l_exit_log
flush_work(&log->disable_writeback_work)
r5c_disable_writeback_async
wait_event
/*
* conf->log is not NULL, and mddev_trylock()
* will fail, wait_event() can never pass.
*/
conf->log = NULL
Fix this problem by setting 'config->log' to NULL before wake_up() as it
used to be, so that wait_event() from r5c_disable_writeback_async() can
exist. In the meantime, move forward md_unregister_thread() so that
null-ptr-deref this commit fixed can still be fixed.
Fixes: b13015af94cf ("md/raid5-cache: Clear conf->log after finishing work")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230708091727.1417894-1-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid5-cache.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
index 832d8566e1656..477e3ae17545a 100644
--- a/drivers/md/raid5-cache.c
+++ b/drivers/md/raid5-cache.c
@@ -3166,12 +3166,15 @@ void r5l_exit_log(struct r5conf *conf)
{
struct r5l_log *log = conf->log;
- /* Ensure disable_writeback_work wakes up and exits */
- wake_up(&conf->mddev->sb_wait);
- flush_work(&log->disable_writeback_work);
md_unregister_thread(&log->reclaim_thread);
+ /*
+ * 'reconfig_mutex' is held by caller, set 'confg->log' to NULL to
+ * ensure disable_writeback_work wakes up and exits.
+ */
conf->log = NULL;
+ wake_up(&conf->mddev->sb_wait);
+ flush_work(&log->disable_writeback_work);
mempool_exit(&log->meta_pool);
bioset_exit(&log->bs);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 314/600] md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (312 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 313/600] md/raid5-cache: fix a deadlock in r5l_exit_log() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 315/600] firmware: cs_dsp: Fix new control name check Greg Kroah-Hartman
` (296 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yu Kuai, Christoph Hellwig, Song Liu,
Sasha Levin, Corey Hickey
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
[ Upstream commit 0d0bd28c500173bfca78aa840f8f36d261ef1765 ]
r5l_flush_stripe_to_raid() will check if the list 'flushing_ios' is
empty, and then submit 'flush_bio', however, r5l_log_flush_endio()
is clearing the list first and then clear the bio, which will cause
null-ptr-deref:
T1: submit flush io
raid5d
handle_active_stripes
r5l_flush_stripe_to_raid
// list is empty
// add 'io_end_ios' to the list
bio_init
submit_bio
// io1
T2: io1 is done
r5l_log_flush_endio
list_splice_tail_init
// clear the list
T3: submit new flush io
...
r5l_flush_stripe_to_raid
// list is empty
// add 'io_end_ios' to the list
bio_init
bio_uninit
// clear bio->bi_blkg
submit_bio
// null-ptr-deref
Fix this problem by clearing bio before clearing the list in
r5l_log_flush_endio().
Fixes: 0dd00cba99c3 ("raid5-cache: fully initialize flush_bio when needed")
Reported-and-tested-by: Corey Hickey <bugfood-ml@fatooh.org>
Closes: https://lore.kernel.org/all/cddd7213-3dfd-4ab7-a3ac-edd54d74a626@fatooh.org/
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid5-cache.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
index 477e3ae17545a..eb66d0bfe39d2 100644
--- a/drivers/md/raid5-cache.c
+++ b/drivers/md/raid5-cache.c
@@ -1260,14 +1260,13 @@ static void r5l_log_flush_endio(struct bio *bio)
if (bio->bi_status)
md_error(log->rdev->mddev, log->rdev);
+ bio_uninit(bio);
spin_lock_irqsave(&log->io_list_lock, flags);
list_for_each_entry(io, &log->flushing_ios, log_sibling)
r5l_io_run_stripes(io);
list_splice_tail_init(&log->flushing_ios, &log->finished_ios);
spin_unlock_irqrestore(&log->io_list_lock, flags);
-
- bio_uninit(bio);
}
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 315/600] firmware: cs_dsp: Fix new control name check
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (313 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 314/600] md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid() Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 316/600] md/raid1: free the r1bio before waiting for blocked rdev Greg Kroah-Hartman
` (295 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Vlad Karpovich, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
[ Upstream commit 7ac1102b227b36550452b663fd39ab1c09378a95 ]
Before adding a new FW control, its name is checked against
existing controls list. But the string length in strncmp used
to compare controls names is taken from the list, so if beginnings
of the controls are matching, then the new control is not created.
For example, if CAL_R control already exists, CAL_R_SELECTED
is not created.
The fix is to compare string lengths as well.
Fixes: 6477960755fb ("ASoC: wm_adsp: Move check for control existence")
Signed-off-by: Vlad Karpovich <vkarpovi@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230815172908.3454056-1-vkarpovi@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/firmware/cirrus/cs_dsp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/firmware/cirrus/cs_dsp.c b/drivers/firmware/cirrus/cs_dsp.c
index 81cc3d0f6eec1..81c5f94b1be11 100644
--- a/drivers/firmware/cirrus/cs_dsp.c
+++ b/drivers/firmware/cirrus/cs_dsp.c
@@ -939,7 +939,8 @@ static int cs_dsp_create_control(struct cs_dsp *dsp,
ctl->alg_region.alg == alg_region->alg &&
ctl->alg_region.type == alg_region->type) {
if ((!subname && !ctl->subname) ||
- (subname && !strncmp(ctl->subname, subname, ctl->subname_len))) {
+ (subname && (ctl->subname_len == subname_len) &&
+ !strncmp(ctl->subname, subname, ctl->subname_len))) {
if (!ctl->enabled)
ctl->enabled = 1;
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 316/600] md/raid1: free the r1bio before waiting for blocked rdev
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (314 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 315/600] firmware: cs_dsp: Fix new control name check Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 317/600] md/raid1: hold the barrier until handle_read_error() finishes Greg Kroah-Hartman
` (294 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yu Kuai, Xueshi Hu, Song Liu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xueshi Hu <xueshi.hu@smartx.com>
[ Upstream commit 992db13a4aee766c8bfbf046ad15c2db5fa7cab8 ]
Raid1 reshape will change mempool and r1conf::raid_disks which are
needed to free r1bio. allow_barrier() make a concurrent raid1_reshape()
possible. So, free the in-flight r1bio before waiting blocked rdev.
Fixes: 6bfe0b499082 ("md: support blocking writes to an array on device failure")
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Xueshi Hu <xueshi.hu@smartx.com>
Link: https://lore.kernel.org/r/20230814135356.1113639-3-xueshi.hu@smartx.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid1.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index ac64c587191b9..433db7007f88b 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1370,6 +1370,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
return;
}
+ retry_write:
r1_bio = alloc_r1bio(mddev, bio);
r1_bio->sectors = max_write_sectors;
@@ -1385,7 +1386,6 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
*/
disks = conf->raid_disks * 2;
- retry_write:
blocked_rdev = NULL;
rcu_read_lock();
max_sectors = r1_bio->sectors;
@@ -1465,7 +1465,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
for (j = 0; j < i; j++)
if (r1_bio->bios[j])
rdev_dec_pending(conf->mirrors[j].rdev, mddev);
- r1_bio->state = 0;
+ free_r1bio(r1_bio);
allow_barrier(conf, bio->bi_iter.bi_sector);
if (bio->bi_opf & REQ_NOWAIT) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 317/600] md/raid1: hold the barrier until handle_read_error() finishes
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (315 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 316/600] md/raid1: free the r1bio before waiting for blocked rdev Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 318/600] md: add error_handlers for raid0 and linear Greg Kroah-Hartman
` (293 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yu Kuai, Xueshi Hu, Song Liu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xueshi Hu <xueshi.hu@smartx.com>
[ Upstream commit c069da449a13669ffa754fd971747e7e17e7d691 ]
handle_read_error() will call allow_barrier() to match the former barrier
raising. However, it should put the allow_barrier() at the end to avoid a
concurrent raid reshape.
Fixes: 689389a06ce7 ("md/raid1: simplify handle_read_error().")
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Xueshi Hu <xueshi.hu@smartx.com>
Link: https://lore.kernel.org/r/20230814135356.1113639-4-xueshi.hu@smartx.com
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid1.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 433db7007f88b..2d9372e6b5961 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2495,6 +2495,7 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio)
struct mddev *mddev = conf->mddev;
struct bio *bio;
struct md_rdev *rdev;
+ sector_t sector;
clear_bit(R1BIO_ReadError, &r1_bio->state);
/* we got a read error. Maybe the drive is bad. Maybe just
@@ -2524,12 +2525,13 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio)
}
rdev_dec_pending(rdev, conf->mddev);
- allow_barrier(conf, r1_bio->sector);
+ sector = r1_bio->sector;
bio = r1_bio->master_bio;
/* Reuse the old r1_bio so that the IO_BLOCKED settings are preserved */
r1_bio->state = 0;
raid1_read_request(mddev, bio, r1_bio->sectors, r1_bio);
+ allow_barrier(conf, sector);
}
static void raid1d(struct md_thread *thread)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 318/600] md: add error_handlers for raid0 and linear
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (316 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 317/600] md/raid1: hold the barrier until handle_read_error() finishes Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 319/600] md/raid0: Factor out helper for mapping and submitting a bio Greg Kroah-Hartman
` (292 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xiao Ni, Mariusz Tkaczyk, Song Liu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
[ Upstream commit c31fea2f8e2a72c817f318016bbc327095175a9f ]
After the commit 9631abdbf406c("md: Set MD_BROKEN for RAID1 and RAID10")
MD_BROKEN must be set if array is failed because state_store() checks it.
If it is set then -EBUSY is returned to userspace.
For raid0 and linear MD_BROKEN is not set by error_handler(). As a result
mdadm is unable to trigger clean-up actions. It is a regression.
This patch adds appropriate error_handler for raid0 and linear. The
error handler sets MD_BROKEN for this device.
Reviewed-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230306130317.3418-1-mariusz.tkaczyk@linux.intel.com
Stable-dep-of: 319ff40a5427 ("md/raid0: Fix performance regression for large sequential writes")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/md-linear.c | 14 +++++++++++++-
drivers/md/md.c | 3 +++
drivers/md/md.h | 10 ++--------
drivers/md/raid0.c | 14 +++++++++++++-
4 files changed, 31 insertions(+), 10 deletions(-)
diff --git a/drivers/md/md-linear.c b/drivers/md/md-linear.c
index 6e7797b4e7381..4eb72b9dd9336 100644
--- a/drivers/md/md-linear.c
+++ b/drivers/md/md-linear.c
@@ -223,7 +223,8 @@ static bool linear_make_request(struct mddev *mddev, struct bio *bio)
bio_sector < start_sector))
goto out_of_bounds;
- if (unlikely(is_mddev_broken(tmp_dev->rdev, "linear"))) {
+ if (unlikely(is_rdev_broken(tmp_dev->rdev))) {
+ md_error(mddev, tmp_dev->rdev);
bio_io_error(bio);
return true;
}
@@ -270,6 +271,16 @@ static void linear_status (struct seq_file *seq, struct mddev *mddev)
seq_printf(seq, " %dk rounding", mddev->chunk_sectors / 2);
}
+static void linear_error(struct mddev *mddev, struct md_rdev *rdev)
+{
+ if (!test_and_set_bit(MD_BROKEN, &mddev->flags)) {
+ char *md_name = mdname(mddev);
+
+ pr_crit("md/linear%s: Disk failure on %pg detected, failing array.\n",
+ md_name, rdev->bdev);
+ }
+}
+
static void linear_quiesce(struct mddev *mddev, int state)
{
}
@@ -286,6 +297,7 @@ static struct md_personality linear_personality =
.hot_add_disk = linear_add,
.size = linear_size,
.quiesce = linear_quiesce,
+ .error_handler = linear_error,
};
static int __init linear_init (void)
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 443837fe6291e..b65d8bf54924b 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7992,6 +7992,9 @@ void md_error(struct mddev *mddev, struct md_rdev *rdev)
return;
mddev->pers->error_handler(mddev, rdev);
+ if (mddev->pers->level == 0 || mddev->pers->level == LEVEL_LINEAR)
+ return;
+
if (mddev->degraded && !test_bit(MD_BROKEN, &mddev->flags))
set_bit(MD_RECOVERY_RECOVER, &mddev->recovery);
sysfs_notify_dirent_safe(rdev->sysfs_state);
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 64f8182a3dfc6..4f0b480974552 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -790,15 +790,9 @@ extern void mddev_destroy_serial_pool(struct mddev *mddev, struct md_rdev *rdev,
struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr);
struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev);
-static inline bool is_mddev_broken(struct md_rdev *rdev, const char *md_type)
+static inline bool is_rdev_broken(struct md_rdev *rdev)
{
- if (!disk_live(rdev->bdev->bd_disk)) {
- if (!test_and_set_bit(MD_BROKEN, &rdev->mddev->flags))
- pr_warn("md: %s: %s array has a missing/failed member\n",
- mdname(rdev->mddev), md_type);
- return true;
- }
- return false;
+ return !disk_live(rdev->bdev->bd_disk);
}
static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 0f7c3b3c62b25..d1ac73fcd8529 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -615,8 +615,9 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
return true;
}
- if (unlikely(is_mddev_broken(tmp_dev, "raid0"))) {
+ if (unlikely(is_rdev_broken(tmp_dev))) {
bio_io_error(bio);
+ md_error(mddev, tmp_dev);
return true;
}
@@ -638,6 +639,16 @@ static void raid0_status(struct seq_file *seq, struct mddev *mddev)
return;
}
+static void raid0_error(struct mddev *mddev, struct md_rdev *rdev)
+{
+ if (!test_and_set_bit(MD_BROKEN, &mddev->flags)) {
+ char *md_name = mdname(mddev);
+
+ pr_crit("md/raid0%s: Disk failure on %pg detected, failing array.\n",
+ md_name, rdev->bdev);
+ }
+}
+
static void *raid0_takeover_raid45(struct mddev *mddev)
{
struct md_rdev *rdev;
@@ -813,6 +824,7 @@ static struct md_personality raid0_personality=
.size = raid0_size,
.takeover = raid0_takeover,
.quiesce = raid0_quiesce,
+ .error_handler = raid0_error,
};
static int __init raid0_init (void)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 319/600] md/raid0: Factor out helper for mapping and submitting a bio
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (317 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 318/600] md: add error_handlers for raid0 and linear Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 320/600] md/raid0: Fix performance regression for large sequential writes Greg Kroah-Hartman
` (291 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jan Kara, Yu Kuai, Song Liu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <jack@suse.cz>
[ Upstream commit af50e20afb401cc203bd2a9ff62ece0ae4976103 ]
Factor out helper function for mapping and submitting a bio out of
raid0_make_request(). We will use it later for submitting both parts of
a split bio.
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230814092720.3931-1-jack@suse.cz
Signed-off-by: Song Liu <song@kernel.org>
Stable-dep-of: 319ff40a5427 ("md/raid0: Fix performance regression for large sequential writes")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid0.c | 79 +++++++++++++++++++++++-----------------------
1 file changed, 40 insertions(+), 39 deletions(-)
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index d1ac73fcd8529..d3c55f2e9b185 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -557,54 +557,21 @@ static void raid0_handle_discard(struct mddev *mddev, struct bio *bio)
bio_endio(bio);
}
-static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
+static void raid0_map_submit_bio(struct mddev *mddev, struct bio *bio)
{
struct r0conf *conf = mddev->private;
struct strip_zone *zone;
struct md_rdev *tmp_dev;
- sector_t bio_sector;
- sector_t sector;
- sector_t orig_sector;
- unsigned chunk_sects;
- unsigned sectors;
-
- if (unlikely(bio->bi_opf & REQ_PREFLUSH)
- && md_flush_request(mddev, bio))
- return true;
-
- if (unlikely((bio_op(bio) == REQ_OP_DISCARD))) {
- raid0_handle_discard(mddev, bio);
- return true;
- }
-
- bio_sector = bio->bi_iter.bi_sector;
- sector = bio_sector;
- chunk_sects = mddev->chunk_sectors;
-
- sectors = chunk_sects -
- (likely(is_power_of_2(chunk_sects))
- ? (sector & (chunk_sects-1))
- : sector_div(sector, chunk_sects));
-
- /* Restore due to sector_div */
- sector = bio_sector;
-
- if (sectors < bio_sectors(bio)) {
- struct bio *split = bio_split(bio, sectors, GFP_NOIO,
- &mddev->bio_set);
- bio_chain(split, bio);
- submit_bio_noacct(bio);
- bio = split;
- }
+ sector_t bio_sector = bio->bi_iter.bi_sector;
+ sector_t sector = bio_sector;
if (bio->bi_pool != &mddev->bio_set)
md_account_bio(mddev, &bio);
- orig_sector = sector;
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
case RAID0_ORIG_LAYOUT:
- tmp_dev = map_sector(mddev, zone, orig_sector, §or);
+ tmp_dev = map_sector(mddev, zone, bio_sector, §or);
break;
case RAID0_ALT_MULTIZONE_LAYOUT:
tmp_dev = map_sector(mddev, zone, sector, §or);
@@ -612,13 +579,13 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
default:
WARN(1, "md/raid0:%s: Invalid layout\n", mdname(mddev));
bio_io_error(bio);
- return true;
+ return;
}
if (unlikely(is_rdev_broken(tmp_dev))) {
bio_io_error(bio);
md_error(mddev, tmp_dev);
- return true;
+ return;
}
bio_set_dev(bio, tmp_dev->bdev);
@@ -630,6 +597,40 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
bio_sector);
mddev_check_write_zeroes(mddev, bio);
submit_bio_noacct(bio);
+}
+
+static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
+{
+ sector_t sector;
+ unsigned chunk_sects;
+ unsigned sectors;
+
+ if (unlikely(bio->bi_opf & REQ_PREFLUSH)
+ && md_flush_request(mddev, bio))
+ return true;
+
+ if (unlikely((bio_op(bio) == REQ_OP_DISCARD))) {
+ raid0_handle_discard(mddev, bio);
+ return true;
+ }
+
+ sector = bio->bi_iter.bi_sector;
+ chunk_sects = mddev->chunk_sectors;
+
+ sectors = chunk_sects -
+ (likely(is_power_of_2(chunk_sects))
+ ? (sector & (chunk_sects-1))
+ : sector_div(sector, chunk_sects));
+
+ if (sectors < bio_sectors(bio)) {
+ struct bio *split = bio_split(bio, sectors, GFP_NOIO,
+ &mddev->bio_set);
+ bio_chain(split, bio);
+ submit_bio_noacct(bio);
+ bio = split;
+ }
+
+ raid0_map_submit_bio(mddev, bio);
return true;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 320/600] md/raid0: Fix performance regression for large sequential writes
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (318 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 319/600] md/raid0: Factor out helper for mapping and submitting a bio Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 321/600] md: raid0: account for split bio in iostat accounting Greg Kroah-Hartman
` (290 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jan Kara, Yu Kuai, Song Liu,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jan Kara <jack@suse.cz>
[ Upstream commit 319ff40a542736d67e5bce18635de35d0e7a0bff ]
Commit f00d7c85be9e ("md/raid0: fix up bio splitting.") among other
things changed how bio that needs to be split is submitted. Before this
commit, we have split the bio, mapped and submitted each part. After
this commit, we map only the first part of the split bio and submit the
second part unmapped. Due to bio sorting in __submit_bio_noacct() this
results in the following request ordering:
9,0 18 1181 0.525037895 15995 Q WS 1479315464 + 63392
Split off chunk-sized (1024 sectors) request:
9,0 18 1182 0.629019647 15995 X WS 1479315464 / 1479316488
Request is unaligned to the chunk so it's split in
raid0_make_request(). This is the first part mapped and punted to
bio_list:
8,0 18 7053 0.629020455 15995 A WS 739921928 + 1016 <- (9,0) 1479315464
Now raid0_make_request() returns, second part is postponed on
bio_list. __submit_bio_noacct() resorts the bio_list, mapped request
is submitted to the underlying device:
8,0 18 7054 0.629022782 15995 G WS 739921928 + 1016
Now we take another request from the bio_list which is the remainder
of the original huge request. Split off another chunk-sized bit from
it and the situation repeats:
9,0 18 1183 0.629024499 15995 X WS 1479316488 / 1479317512
8,16 18 6998 0.629025110 15995 A WS 739921928 + 1016 <- (9,0) 1479316488
8,16 18 6999 0.629026728 15995 G WS 739921928 + 1016
...
9,0 18 1184 0.629032940 15995 X WS 1479317512 / 1479318536 [libnetacq-write]
8,0 18 7059 0.629033294 15995 A WS 739922952 + 1016 <- (9,0) 1479317512
8,0 18 7060 0.629033902 15995 G WS 739922952 + 1016
...
This repeats until we consume the whole original huge request. Now we
finally get to processing the second parts of the split off requests
(in reverse order):
8,16 18 7181 0.629161384 15995 A WS 739952640 + 8 <- (9,0) 1479377920
8,0 18 7239 0.629162140 15995 A WS 739952640 + 8 <- (9,0) 1479376896
8,16 18 7186 0.629163881 15995 A WS 739951616 + 8 <- (9,0) 1479375872
8,0 18 7242 0.629164421 15995 A WS 739951616 + 8 <- (9,0) 1479374848
...
I guess it is obvious that this IO pattern is extremely inefficient way
to perform sequential IO. It also makes bio_list to grow to rather long
lengths.
Change raid0_make_request() to map both parts of the split bio. Since we
know we are provided with at most chunk-sized bios, we will always need
to split the incoming bio at most once.
Fixes: f00d7c85be9e ("md/raid0: fix up bio splitting.")
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20230814092720.3931-2-jack@suse.cz
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid0.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index d3c55f2e9b185..595856948dff8 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -626,7 +626,7 @@ static bool raid0_make_request(struct mddev *mddev, struct bio *bio)
struct bio *split = bio_split(bio, sectors, GFP_NOIO,
&mddev->bio_set);
bio_chain(split, bio);
- submit_bio_noacct(bio);
+ raid0_map_submit_bio(mddev, bio);
bio = split;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 321/600] md: raid0: account for split bio in iostat accounting
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (319 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 320/600] md/raid0: Fix performance regression for large sequential writes Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 322/600] ASoC: SOF: amd: clear dsp to host interrupt status Greg Kroah-Hartman
` (289 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Jeffery, Laurence Oberman,
Yu Kuai, Song Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Jeffery <djeffery@redhat.com>
[ Upstream commit cc22b5407e9ca76adb7efeed843146510b1b72a5 ]
When a bio is split by md raid0, the newly created bio will not be tracked
by md for I/O accounting. Only the portion of I/O still assigned to the
original bio which was reduced by the split will be accounted for. This
results in md iostat data sometimes showing I/O values far below the actual
amount of data being sent through md.
md_account_bio() needs to be called for all bio generated by the bio split.
A simple example of the issue was generated using a raid0 device on partitions
to the same device. Since all raid0 I/O then goes to one device, it makes it
easy to see a gap between the md device and its sd storage. Reading an lvm
device on top of the md device, the iostat output (some 0 columns and extra
devices removed to make the data more compact) was:
Device tps kB_read/s kB_wrtn/s kB_dscd/s kB_read
md2 0.00 0.00 0.00 0.00 0
sde 0.00 0.00 0.00 0.00 0
md2 1364.00 411496.00 0.00 0.00 411496
sde 1734.00 646144.00 0.00 0.00 646144
md2 1699.00 510680.00 0.00 0.00 510680
sde 2155.00 802784.00 0.00 0.00 802784
md2 803.00 241480.00 0.00 0.00 241480
sde 1016.00 377888.00 0.00 0.00 377888
md2 0.00 0.00 0.00 0.00 0
sde 0.00 0.00 0.00 0.00 0
I/O was generated doing large direct I/O reads (12M) with dd to a linear
lvm volume on top of the 4 leg raid0 device.
The md2 reads were showing as roughly 2/3 of the reads to the sde device
containing all of md2's raid partitions. The sum of reads to sde was
1826816 kB, which was the expected amount as it was the amount read by
dd. With the patch, the total reads from md will match the reads from
sde and be consistent with the amount of I/O generated.
Fixes: 10764815ff47 ("md: add io accounting for raid0 and raid5")
Signed-off-by: David Jeffery <djeffery@redhat.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230816181433.13289-1-djeffery@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/md/raid0.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c
index 595856948dff8..7c6a0b4437d8f 100644
--- a/drivers/md/raid0.c
+++ b/drivers/md/raid0.c
@@ -565,8 +565,7 @@ static void raid0_map_submit_bio(struct mddev *mddev, struct bio *bio)
sector_t bio_sector = bio->bi_iter.bi_sector;
sector_t sector = bio_sector;
- if (bio->bi_pool != &mddev->bio_set)
- md_account_bio(mddev, &bio);
+ md_account_bio(mddev, &bio);
zone = find_zone(mddev->private, §or);
switch (conf->layout) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 322/600] ASoC: SOF: amd: clear dsp to host interrupt status
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (320 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 321/600] md: raid0: account for split bio in iostat accounting Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 323/600] of: overlay: Call of_changeset_init() early Greg Kroah-Hartman
` (288 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Vijendar Mukunda, Mark Brown,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
[ Upstream commit 38592ae6dc9f84b7a994c43de2136b8115ca30f6 ]
DSP_SW_INTR_STAT_OFFSET is a common interrupt register which will be
accessed by both ACP firmware and driver. This register contains register
bits corresponds to host to dsp interrupts and vice versa.
when dsp to host interrupt is reported, only clear dsp to host
interrupt bit in DSP_SW_INTR_STAT_OFFSET.
Fixes: 2e7c6652f9b8 ("ASoC: SOF: amd: Fix for handling spurious interrupts from DSP")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://lore.kernel.org/r/20230823073340.2829821-7-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/sof/amd/acp.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c
index 8afd67ba1e5a3..f8d2372a758f4 100644
--- a/sound/soc/sof/amd/acp.c
+++ b/sound/soc/sof/amd/acp.c
@@ -349,9 +349,9 @@ static irqreturn_t acp_irq_handler(int irq, void *dev_id)
unsigned int val;
val = snd_sof_dsp_read(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET);
- if (val) {
- val |= ACP_DSP_TO_HOST_IRQ;
- snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET, val);
+ if (val & ACP_DSP_TO_HOST_IRQ) {
+ snd_sof_dsp_write(sdev, ACP_DSP_BAR, base + DSP_SW_INTR_STAT_OFFSET,
+ ACP_DSP_TO_HOST_IRQ);
return IRQ_WAKE_THREAD;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 323/600] of: overlay: Call of_changeset_init() early
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (321 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 322/600] ASoC: SOF: amd: clear dsp to host interrupt status Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 324/600] of: unittest: Fix overlay type in apply/revert check Greg Kroah-Hartman
` (287 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Geert Uytterhoeven, Rob Herring,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <geert+renesas@glider.be>
[ Upstream commit a9515ff4fb142b690a0d2b58782b15903b990dba ]
When of_overlay_fdt_apply() fails, the changeset may be partially
applied, and the caller is still expected to call of_overlay_remove() to
clean up this partial state.
However, of_overlay_apply() calls of_resolve_phandles() before
init_overlay_changeset(). Hence if the overlay fails to apply due to an
unresolved symbol, the overlay_changeset.cset.entries list is still
uninitialized, and cleanup will crash with a NULL-pointer dereference in
overlay_removal_is_ok().
Fix this by moving the call to of_changeset_init() from
init_overlay_changeset() to of_overlay_fdt_apply(), where all other
early initialization is done.
Fixes: f948d6d8b792bb90 ("of: overlay: avoid race condition between applying multiple overlays")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/4f1d6d74b61cba2599026adb6d1948ae559ce91f.1690533838.git.geert+renesas@glider.be
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/of/overlay.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
index 5289975bad708..4402871b5c0c0 100644
--- a/drivers/of/overlay.c
+++ b/drivers/of/overlay.c
@@ -752,8 +752,6 @@ static int init_overlay_changeset(struct overlay_changeset *ovcs)
if (!of_node_is_root(ovcs->overlay_root))
pr_debug("%s() ovcs->overlay_root is not root\n", __func__);
- of_changeset_init(&ovcs->cset);
-
cnt = 0;
/* fragment nodes */
@@ -1013,6 +1011,7 @@ int of_overlay_fdt_apply(const void *overlay_fdt, u32 overlay_fdt_size,
INIT_LIST_HEAD(&ovcs->ovcs_list);
list_add_tail(&ovcs->ovcs_list, &ovcs_list);
+ of_changeset_init(&ovcs->cset);
/*
* Must create permanent copy of FDT because of_fdt_unflatten_tree()
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 324/600] of: unittest: Fix overlay type in apply/revert check
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (322 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 323/600] of: overlay: Call of_changeset_init() early Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 325/600] ALSA: ac97: Fix possible error value of *rac97 Greg Kroah-Hartman
` (286 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Geert Uytterhoeven, Rob Herring,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <geert+renesas@glider.be>
[ Upstream commit 6becf8f845ae1f0b1cfed395bbeccbd23654162d ]
The removal check in of_unittest_apply_revert_overlay_check()
always uses the platform device overlay type, while it should use the
actual overlay type, as passed as a parameter to the function.
This has no impact on any current test, as all tests calling
of_unittest_apply_revert_overlay_check() use the platform device overlay
type.
Fixes: d5e75500ca401d31 ("of: unitest: Add I2C overlay unit tests.")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/ba0234c41ba808f10112094f88792beeb6dbaedf.1690533838.git.geert+renesas@glider.be
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/of/unittest.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c
index b815b8862e187..edd2342598e49 100644
--- a/drivers/of/unittest.c
+++ b/drivers/of/unittest.c
@@ -2062,7 +2062,7 @@ static int __init of_unittest_apply_revert_overlay_check(int overlay_nr,
of_unittest_untrack_overlay(save_ovcs_id);
/* unittest device must be again in before state */
- if (of_unittest_device_exists(unittest_nr, PDEV_OVERLAY) != before) {
+ if (of_unittest_device_exists(unittest_nr, ovtype) != before) {
unittest(0, "%s with device @\"%s\" %s\n",
overlay_name_from_nr(overlay_nr),
unittest_path(unittest_nr, ovtype),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 325/600] ALSA: ac97: Fix possible error value of *rac97
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (323 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 324/600] of: unittest: Fix overlay type in apply/revert check Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 326/600] ipmi:ssif: Add check for kstrdup Greg Kroah-Hartman
` (285 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe JAILLET, Su Hui,
Takashi Iwai, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Su Hui <suhui@nfschina.com>
[ Upstream commit 67de40c9df94037769967ba28c7d951afb45b7fb ]
Before committing 79597c8bf64c, *rac97 always be NULL if there is
an error. When error happens, make sure *rac97 is NULL is safer.
For examble, in snd_vortex_mixer():
err = snd_ac97_mixer(pbus, &ac97, &vortex->codec);
vortex->isquad = ((vortex->codec == NULL) ?
0 : (vortex->codec->ext_id&0x80));
If error happened but vortex->codec isn't NULL, this may cause some
problems.
Move the judgement order to be clearer and better.
Fixes: 79597c8bf64c ("ALSA: ac97: Fix possible NULL dereference in snd_ac97_mixer")
Suggested-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Acked-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Su Hui <suhui@nfschina.com>
Link: https://lore.kernel.org/r/20230823025212.1000961-1-suhui@nfschina.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/pci/ac97/ac97_codec.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c
index 534ea7a256ec3..606b318f34e56 100644
--- a/sound/pci/ac97/ac97_codec.c
+++ b/sound/pci/ac97/ac97_codec.c
@@ -2070,10 +2070,9 @@ int snd_ac97_mixer(struct snd_ac97_bus *bus, struct snd_ac97_template *template,
.dev_disconnect = snd_ac97_dev_disconnect,
};
- if (!rac97)
- return -EINVAL;
- if (snd_BUG_ON(!bus || !template))
+ if (snd_BUG_ON(!bus || !template || !rac97))
return -EINVAL;
+ *rac97 = NULL;
if (snd_BUG_ON(template->num >= 4))
return -EINVAL;
if (bus->codec[template->num])
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 326/600] ipmi:ssif: Add check for kstrdup
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (324 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 325/600] ALSA: ac97: Fix possible error value of *rac97 Greg Kroah-Hartman
@ 2023-09-11 13:45 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 327/600] ipmi:ssif: Fix a memory leak when scanning for an adapter Greg Kroah-Hartman
` (284 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:45 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jiasheng Jiang, Corey Minyard,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiasheng Jiang <jiasheng@iscas.ac.cn>
[ Upstream commit c5586d0f711e9744d0cade39b0c4a2d116a333ca ]
Add check for the return value of kstrdup() and return the error
if it fails in order to avoid NULL pointer dereference.
Fixes: c4436c9149c5 ("ipmi_ssif: avoid registering duplicate ssif interface")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Message-Id: <20230619092802.35384-1-jiasheng@iscas.ac.cn>
Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/char/ipmi/ipmi_ssif.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index d48061ec27dd9..e94d0750d5cc5 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -1603,6 +1603,11 @@ static int ssif_add_infos(struct i2c_client *client)
info->addr_src = SI_ACPI;
info->client = client;
info->adapter_name = kstrdup(client->adapter->name, GFP_KERNEL);
+ if (!info->adapter_name) {
+ kfree(info);
+ return -ENOMEM;
+ }
+
info->binfo.addr = client->addr;
list_add_tail(&info->link, &ssif_infos);
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 327/600] ipmi:ssif: Fix a memory leak when scanning for an adapter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (325 preceding siblings ...)
2023-09-11 13:45 ` [PATCH 6.1 326/600] ipmi:ssif: Add check for kstrdup Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 328/600] clk: qcom: gpucc-sm6350: Introduce index-based clk lookup Greg Kroah-Hartman
` (283 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Corey Minyard, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Corey Minyard <minyard@acm.org>
[ Upstream commit b8d72e32e1453d37ee5c8a219f24e7eeadc471ef ]
The adapter scan ssif_info_find() sets info->adapter_name if the adapter
info came from SMBIOS, as it's not set in that case. However, this
function can be called more than once, and it will leak the adapter name
if it had already been set. So check for NULL before setting it.
Fixes: c4436c9149c5 ("ipmi_ssif: avoid registering duplicate ssif interface")
Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/char/ipmi/ipmi_ssif.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index e94d0750d5cc5..248459f97c67b 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -1403,7 +1403,7 @@ static struct ssif_addr_info *ssif_info_find(unsigned short addr,
restart:
list_for_each_entry(info, &ssif_infos, link) {
if (info->binfo.addr == addr) {
- if (info->addr_src == SI_SMBIOS)
+ if (info->addr_src == SI_SMBIOS && !info->adapter_name)
info->adapter_name = kstrdup(adapter_name,
GFP_KERNEL);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 328/600] clk: qcom: gpucc-sm6350: Introduce index-based clk lookup
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (326 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 327/600] ipmi:ssif: Fix a memory leak when scanning for an adapter Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 329/600] clk: qcom: gpucc-sm6350: Fix clock source names Greg Kroah-Hartman
` (282 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit f6f89d194e4ddcfe197ac8a05ed4161f642a5c68 ]
Add the nowadays-prefered and marginally faster way of looking up parent
clocks in the device tree. It also allows for clock-names-independent
operation, so long as the order (which is enforced by schema) is kept.
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230315-topic-lagoon_gpu-v2-1-afcdfb18bb13@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Stable-dep-of: 743913b343a3 ("clk: qcom: gpucc-sm6350: Fix clock source names")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gpucc-sm6350.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c
index ef15185a99c31..a9887d1f0ed71 100644
--- a/drivers/clk/qcom/gpucc-sm6350.c
+++ b/drivers/clk/qcom/gpucc-sm6350.c
@@ -24,6 +24,12 @@
#define CX_GMU_CBCR_WAKE_MASK 0xF
#define CX_GMU_CBCR_WAKE_SHIFT 8
+enum {
+ DT_BI_TCXO,
+ DT_GPLL0_OUT_MAIN,
+ DT_GPLL0_OUT_MAIN_DIV,
+};
+
enum {
P_BI_TCXO,
P_GPLL0_OUT_MAIN,
@@ -61,6 +67,7 @@ static struct clk_alpha_pll gpu_cc_pll0 = {
.hw.init = &(struct clk_init_data){
.name = "gpu_cc_pll0",
.parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO,
.fw_name = "bi_tcxo",
},
.num_parents = 1,
@@ -104,6 +111,7 @@ static struct clk_alpha_pll gpu_cc_pll1 = {
.hw.init = &(struct clk_init_data){
.name = "gpu_cc_pll1",
.parent_data = &(const struct clk_parent_data){
+ .index = DT_BI_TCXO,
.fw_name = "bi_tcxo",
},
.num_parents = 1,
@@ -121,11 +129,11 @@ static const struct parent_map gpu_cc_parent_map_0[] = {
};
static const struct clk_parent_data gpu_cc_parent_data_0[] = {
- { .fw_name = "bi_tcxo" },
+ { .index = DT_BI_TCXO, .fw_name = "bi_tcxo" },
{ .hw = &gpu_cc_pll0.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
- { .fw_name = "gcc_gpu_gpll0_clk" },
- { .fw_name = "gcc_gpu_gpll0_div_clk" },
+ { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk" },
+ { .index = DT_GPLL0_OUT_MAIN_DIV, .fw_name = "gcc_gpu_gpll0_div_clk" },
};
static const struct parent_map gpu_cc_parent_map_1[] = {
@@ -138,12 +146,12 @@ static const struct parent_map gpu_cc_parent_map_1[] = {
};
static const struct clk_parent_data gpu_cc_parent_data_1[] = {
- { .fw_name = "bi_tcxo" },
+ { .index = DT_BI_TCXO, .fw_name = "bi_tcxo" },
{ .hw = &crc_div.hw },
{ .hw = &gpu_cc_pll0.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
- { .fw_name = "gcc_gpu_gpll0_clk" },
+ { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk" },
};
static const struct freq_tbl ftbl_gpu_cc_gmu_clk_src[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 329/600] clk: qcom: gpucc-sm6350: Fix clock source names
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (327 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 328/600] clk: qcom: gpucc-sm6350: Introduce index-based clk lookup Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 330/600] clk: qcom: gcc-sc8280xp: Add EMAC GDSCs Greg Kroah-Hartman
` (281 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 743913b343a3ec2510fe3c0dfaff03d049659922 ]
fw_name for GCC inputs didn't match the bindings. Fix it.
Fixes: 013804a727a0 ("clk: qcom: Add GPU clock controller driver for SM6350")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230315-topic-lagoon_gpu-v2-2-afcdfb18bb13@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gpucc-sm6350.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c
index a9887d1f0ed71..0bcbba2a29436 100644
--- a/drivers/clk/qcom/gpucc-sm6350.c
+++ b/drivers/clk/qcom/gpucc-sm6350.c
@@ -132,8 +132,8 @@ static const struct clk_parent_data gpu_cc_parent_data_0[] = {
{ .index = DT_BI_TCXO, .fw_name = "bi_tcxo" },
{ .hw = &gpu_cc_pll0.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
- { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk" },
- { .index = DT_GPLL0_OUT_MAIN_DIV, .fw_name = "gcc_gpu_gpll0_div_clk" },
+ { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk_src" },
+ { .index = DT_GPLL0_OUT_MAIN_DIV, .fw_name = "gcc_gpu_gpll0_div_clk_src" },
};
static const struct parent_map gpu_cc_parent_map_1[] = {
@@ -151,7 +151,7 @@ static const struct clk_parent_data gpu_cc_parent_data_1[] = {
{ .hw = &gpu_cc_pll0.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
{ .hw = &gpu_cc_pll1.clkr.hw },
- { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk" },
+ { .index = DT_GPLL0_OUT_MAIN, .fw_name = "gcc_gpu_gpll0_clk_src" },
};
static const struct freq_tbl ftbl_gpu_cc_gmu_clk_src[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 330/600] clk: qcom: gcc-sc8280xp: Add EMAC GDSCs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (328 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 329/600] clk: qcom: gpucc-sm6350: Fix clock source names Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 331/600] clk: qcom: gcc-sc8280xp: Add missing GDSC flags Greg Kroah-Hartman
` (280 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stephen Boyd, Konrad Dybcio,
Brian Masney, Andrew Halaney, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andrew Halaney <ahalaney@redhat.com>
[ Upstream commit 32c2f2a46db1322caaf78d5ea747ed5c56d2e353 ]
Add the EMAC GDSCs to allow the EMAC hardware to be enabled.
Acked-by: Stephen Boyd <sboyd@kernel.org>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Tested-by: Brian Masney <bmasney@redhat.com>
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Link: https://lore.kernel.org/r/20230413191541.1073027-2-ahalaney@redhat.com
Stable-dep-of: 2fd02de27054 ("clk: qcom: gcc-sc8280xp: Add missing GDSC flags")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sc8280xp.c | 18 ++++++++++++++++++
include/dt-bindings/clock/qcom,gcc-sc8280xp.h | 2 ++
2 files changed, 20 insertions(+)
diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c
index b3198784e1c3d..04a99dbaa57e0 100644
--- a/drivers/clk/qcom/gcc-sc8280xp.c
+++ b/drivers/clk/qcom/gcc-sc8280xp.c
@@ -6873,6 +6873,22 @@ static struct gdsc usb30_sec_gdsc = {
.pwrsts = PWRSTS_RET_ON,
};
+static struct gdsc emac_0_gdsc = {
+ .gdscr = 0xaa004,
+ .pd = {
+ .name = "emac_0_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+};
+
+static struct gdsc emac_1_gdsc = {
+ .gdscr = 0xba004,
+ .pd = {
+ .name = "emac_1_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+};
+
static struct clk_regmap *gcc_sc8280xp_clocks[] = {
[GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr,
[GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr,
@@ -7351,6 +7367,8 @@ static struct gdsc *gcc_sc8280xp_gdscs[] = {
[USB30_MP_GDSC] = &usb30_mp_gdsc,
[USB30_PRIM_GDSC] = &usb30_prim_gdsc,
[USB30_SEC_GDSC] = &usb30_sec_gdsc,
+ [EMAC_0_GDSC] = &emac_0_gdsc,
+ [EMAC_1_GDSC] = &emac_1_gdsc,
};
static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
diff --git a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
index cb2fb638825ca..721105ea4fad8 100644
--- a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
+++ b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
@@ -492,5 +492,7 @@
#define USB30_MP_GDSC 9
#define USB30_PRIM_GDSC 10
#define USB30_SEC_GDSC 11
+#define EMAC_0_GDSC 12
+#define EMAC_1_GDSC 13
#endif
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 331/600] clk: qcom: gcc-sc8280xp: Add missing GDSC flags
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (329 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 330/600] clk: qcom: gcc-sc8280xp: Add EMAC GDSCs Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 332/600] dt-bindings: clock: qcom,gcc-sc8280xp: Add missing GDSCs Greg Kroah-Hartman
` (279 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Manivannan Sadhasivam,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 2fd02de27054576a4a8c89302e2f77122c55e957 ]
All of the 8280's GCC GDSCs can and should use the retain registers so
as not to lose their state when entering lower power modes.
Fixes: d65d005f9a6c ("clk: qcom: add sc8280xp GCC driver")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20230620-topic-sc8280_gccgdsc-v2-1-562c1428c10d@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sc8280xp.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c
index 04a99dbaa57e0..43c518e5c986b 100644
--- a/drivers/clk/qcom/gcc-sc8280xp.c
+++ b/drivers/clk/qcom/gcc-sc8280xp.c
@@ -6760,7 +6760,7 @@ static struct gdsc pcie_0_tunnel_gdsc = {
.name = "pcie_0_tunnel_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE,
+ .flags = VOTABLE | RETAIN_FF_ENABLE,
};
static struct gdsc pcie_1_tunnel_gdsc = {
@@ -6771,7 +6771,7 @@ static struct gdsc pcie_1_tunnel_gdsc = {
.name = "pcie_1_tunnel_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE,
+ .flags = VOTABLE | RETAIN_FF_ENABLE,
};
/*
@@ -6786,7 +6786,7 @@ static struct gdsc pcie_2a_gdsc = {
.name = "pcie_2a_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE | ALWAYS_ON,
+ .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
};
static struct gdsc pcie_2b_gdsc = {
@@ -6797,7 +6797,7 @@ static struct gdsc pcie_2b_gdsc = {
.name = "pcie_2b_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE | ALWAYS_ON,
+ .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
};
static struct gdsc pcie_3a_gdsc = {
@@ -6808,7 +6808,7 @@ static struct gdsc pcie_3a_gdsc = {
.name = "pcie_3a_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE | ALWAYS_ON,
+ .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
};
static struct gdsc pcie_3b_gdsc = {
@@ -6819,7 +6819,7 @@ static struct gdsc pcie_3b_gdsc = {
.name = "pcie_3b_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE | ALWAYS_ON,
+ .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
};
static struct gdsc pcie_4_gdsc = {
@@ -6830,7 +6830,7 @@ static struct gdsc pcie_4_gdsc = {
.name = "pcie_4_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
- .flags = VOTABLE | ALWAYS_ON,
+ .flags = VOTABLE | RETAIN_FF_ENABLE | ALWAYS_ON,
};
static struct gdsc ufs_card_gdsc = {
@@ -6839,6 +6839,7 @@ static struct gdsc ufs_card_gdsc = {
.name = "ufs_card_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc ufs_phy_gdsc = {
@@ -6847,6 +6848,7 @@ static struct gdsc ufs_phy_gdsc = {
.name = "ufs_phy_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc usb30_mp_gdsc = {
@@ -6855,6 +6857,7 @@ static struct gdsc usb30_mp_gdsc = {
.name = "usb30_mp_gdsc",
},
.pwrsts = PWRSTS_RET_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc usb30_prim_gdsc = {
@@ -6863,6 +6866,7 @@ static struct gdsc usb30_prim_gdsc = {
.name = "usb30_prim_gdsc",
},
.pwrsts = PWRSTS_RET_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc usb30_sec_gdsc = {
@@ -6871,6 +6875,7 @@ static struct gdsc usb30_sec_gdsc = {
.name = "usb30_sec_gdsc",
},
.pwrsts = PWRSTS_RET_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc emac_0_gdsc = {
@@ -6879,6 +6884,7 @@ static struct gdsc emac_0_gdsc = {
.name = "emac_0_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct gdsc emac_1_gdsc = {
@@ -6887,6 +6893,7 @@ static struct gdsc emac_1_gdsc = {
.name = "emac_1_gdsc",
},
.pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
};
static struct clk_regmap *gcc_sc8280xp_clocks[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 332/600] dt-bindings: clock: qcom,gcc-sc8280xp: Add missing GDSCs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (330 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 331/600] clk: qcom: gcc-sc8280xp: Add missing GDSC flags Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 333/600] clk: qcom: gcc-sc8280xp: " Greg Kroah-Hartman
` (278 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rob Herring, Konrad Dybcio,
Manivannan Sadhasivam, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 9eba4db02a88e7a810aabd70f7a6960f184f391f ]
There are 10 more GDSCs that we've not been caring about, and by extension
(and perhaps even more importantly), not putting to sleep. Add them.
Fixes: a66a82f2a55e ("dt-bindings: clock: Add Qualcomm SC8280XP GCC bindings")
Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20230620-topic-sc8280_gccgdsc-v2-2-562c1428c10d@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/dt-bindings/clock/qcom,gcc-sc8280xp.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
index 721105ea4fad8..8454915917849 100644
--- a/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
+++ b/include/dt-bindings/clock/qcom,gcc-sc8280xp.h
@@ -494,5 +494,15 @@
#define USB30_SEC_GDSC 11
#define EMAC_0_GDSC 12
#define EMAC_1_GDSC 13
+#define USB4_1_GDSC 14
+#define USB4_GDSC 15
+#define HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC 16
+#define HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC 17
+#define HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC 18
+#define HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC 19
+#define HLOS1_VOTE_TURING_MMU_TBU0_GDSC 20
+#define HLOS1_VOTE_TURING_MMU_TBU1_GDSC 21
+#define HLOS1_VOTE_TURING_MMU_TBU2_GDSC 22
+#define HLOS1_VOTE_TURING_MMU_TBU3_GDSC 23
#endif
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 333/600] clk: qcom: gcc-sc8280xp: Add missing GDSCs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (331 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 332/600] dt-bindings: clock: qcom,gcc-sc8280xp: Add missing GDSCs Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 334/600] clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz Greg Kroah-Hartman
` (277 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Manivannan Sadhasivam,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 4712eb7ff85bd3dd09c6668b8de4080e02b3eea9 ]
There are 10 more GDSCs that we've not been caring about, and by extension
(and perhaps even more importantly), not putting to sleep. Add them.
Fixes: d65d005f9a6c ("clk: qcom: add sc8280xp GCC driver")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Acked-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Link: https://lore.kernel.org/r/20230620-topic-sc8280_gccgdsc-v2-3-562c1428c10d@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sc8280xp.c | 100 ++++++++++++++++++++++++++++++++
1 file changed, 100 insertions(+)
diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c
index 43c518e5c986b..57bbd609151cd 100644
--- a/drivers/clk/qcom/gcc-sc8280xp.c
+++ b/drivers/clk/qcom/gcc-sc8280xp.c
@@ -6896,6 +6896,96 @@ static struct gdsc emac_1_gdsc = {
.flags = RETAIN_FF_ENABLE,
};
+static struct gdsc usb4_1_gdsc = {
+ .gdscr = 0xb8004,
+ .pd = {
+ .name = "usb4_1_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
+};
+
+static struct gdsc usb4_gdsc = {
+ .gdscr = 0x2a004,
+ .pd = {
+ .name = "usb4_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = RETAIN_FF_ENABLE,
+};
+
+static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc = {
+ .gdscr = 0x7d050,
+ .pd = {
+ .name = "hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc = {
+ .gdscr = 0x7d058,
+ .pd = {
+ .name = "hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc = {
+ .gdscr = 0x7d054,
+ .pd = {
+ .name = "hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc = {
+ .gdscr = 0x7d06c,
+ .pd = {
+ .name = "hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_turing_mmu_tbu0_gdsc = {
+ .gdscr = 0x7d05c,
+ .pd = {
+ .name = "hlos1_vote_turing_mmu_tbu0_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_turing_mmu_tbu1_gdsc = {
+ .gdscr = 0x7d060,
+ .pd = {
+ .name = "hlos1_vote_turing_mmu_tbu1_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_turing_mmu_tbu2_gdsc = {
+ .gdscr = 0x7d0a0,
+ .pd = {
+ .name = "hlos1_vote_turing_mmu_tbu2_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
+static struct gdsc hlos1_vote_turing_mmu_tbu3_gdsc = {
+ .gdscr = 0x7d0a4,
+ .pd = {
+ .name = "hlos1_vote_turing_mmu_tbu3_gdsc",
+ },
+ .pwrsts = PWRSTS_OFF_ON,
+ .flags = VOTABLE,
+};
+
static struct clk_regmap *gcc_sc8280xp_clocks[] = {
[GCC_AGGRE_NOC_PCIE0_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie0_tunnel_axi_clk.clkr,
[GCC_AGGRE_NOC_PCIE1_TUNNEL_AXI_CLK] = &gcc_aggre_noc_pcie1_tunnel_axi_clk.clkr,
@@ -7376,6 +7466,16 @@ static struct gdsc *gcc_sc8280xp_gdscs[] = {
[USB30_SEC_GDSC] = &usb30_sec_gdsc,
[EMAC_0_GDSC] = &emac_0_gdsc,
[EMAC_1_GDSC] = &emac_1_gdsc,
+ [USB4_1_GDSC] = &usb4_1_gdsc,
+ [USB4_GDSC] = &usb4_gdsc,
+ [HLOS1_VOTE_MMNOC_MMU_TBU_HF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf0_gdsc,
+ [HLOS1_VOTE_MMNOC_MMU_TBU_HF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_hf1_gdsc,
+ [HLOS1_VOTE_MMNOC_MMU_TBU_SF0_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf0_gdsc,
+ [HLOS1_VOTE_MMNOC_MMU_TBU_SF1_GDSC] = &hlos1_vote_mmnoc_mmu_tbu_sf1_gdsc,
+ [HLOS1_VOTE_TURING_MMU_TBU0_GDSC] = &hlos1_vote_turing_mmu_tbu0_gdsc,
+ [HLOS1_VOTE_TURING_MMU_TBU1_GDSC] = &hlos1_vote_turing_mmu_tbu1_gdsc,
+ [HLOS1_VOTE_TURING_MMU_TBU2_GDSC] = &hlos1_vote_turing_mmu_tbu2_gdsc,
+ [HLOS1_VOTE_TURING_MMU_TBU3_GDSC] = &hlos1_vote_turing_mmu_tbu3_gdsc,
};
static const struct clk_rcg_dfs_data gcc_dfs_clocks[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 334/600] clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (332 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 333/600] clk: qcom: gcc-sc8280xp: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 335/600] PCI: apple: Initialize pcie->nvecs before use Greg Kroah-Hartman
` (276 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alibek Omarov, Sascha Hauer,
Heiko Stuebner, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alibek Omarov <a1ba.omarov@gmail.com>
[ Upstream commit dafebd0f9a4f56b10d7fbda0bff1f540d16a2ea4 ]
PLL rate on RK356x is calculated through the simple formula:
((24000000 / _refdiv) * _fbdiv) / (_postdiv1 * _postdiv2)
The PLL rate setting for 78.75MHz seems to be copied from 96MHz
so this patch fixes it and configures it properly.
Signed-off-by: Alibek Omarov <a1ba.omarov@gmail.com>
Fixes: 842f4cb72639 ("clk: rockchip: Add more PLL rates for rk3568")
Reviewed-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://lore.kernel.org/r/20230614134750.1056293-1-a1ba.omarov@gmail.com
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/rockchip/clk-rk3568.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/rockchip/clk-rk3568.c b/drivers/clk/rockchip/clk-rk3568.c
index f85902e2590c7..2f54f630c8b65 100644
--- a/drivers/clk/rockchip/clk-rk3568.c
+++ b/drivers/clk/rockchip/clk-rk3568.c
@@ -81,7 +81,7 @@ static struct rockchip_pll_rate_table rk3568_pll_rates[] = {
RK3036_PLL_RATE(108000000, 2, 45, 5, 1, 1, 0),
RK3036_PLL_RATE(100000000, 1, 150, 6, 6, 1, 0),
RK3036_PLL_RATE(96000000, 1, 96, 6, 4, 1, 0),
- RK3036_PLL_RATE(78750000, 1, 96, 6, 4, 1, 0),
+ RK3036_PLL_RATE(78750000, 4, 315, 6, 4, 1, 0),
RK3036_PLL_RATE(74250000, 2, 99, 4, 4, 1, 0),
{ /* sentinel */ },
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 335/600] PCI: apple: Initialize pcie->nvecs before use
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (333 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 334/600] clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 336/600] PCI: qcom-ep: Switch MHI bus master clock off during L1SS Greg Kroah-Hartman
` (275 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Sven Peter,
Krzysztof Wilczyński, Marc Zyngier, Alyssa Rosenzweig,
Eric Curtin, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sven Peter <sven@svenpeter.dev>
[ Upstream commit d8650c0c2aa2e413594e4cb0faafa9958c1d7782 ]
The apple_pcie_setup_port() function computes ilog2(pcie->nvecs) to set
up the number of MSIs available for each port. However, it's called
before apple_msi_init(), which initializes pcie->nvecs.
Luckily, pcie->nvecs is part of kzalloc()-ed structure and, as such,
initialized as zero. ilog2(0) happens to be 0xffffffff which then simply
configures more MSIs in hardware than we have. This doesn't break
anything because we never hand out those vectors.
Thus, swap the order of the two calls so that the correctly initialized
value is then used.
[kwilczynski: commit log]
Link: https://lore.kernel.org/linux-pci/20230311133453.63246-1-sven@svenpeter.dev
Fixes: 476c41ed4597 ("PCI: apple: Implement MSI support")
Signed-off-by: Sven Peter <sven@svenpeter.dev>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Eric Curtin <ecurtin@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/controller/pcie-apple.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index 66f37e403a09c..2340dab6cd5bd 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -783,6 +783,10 @@ static int apple_pcie_init(struct pci_config_window *cfg)
cfg->priv = pcie;
INIT_LIST_HEAD(&pcie->ports);
+ ret = apple_msi_init(pcie);
+ if (ret)
+ return ret;
+
for_each_child_of_node(dev->of_node, of_port) {
ret = apple_pcie_setup_port(pcie, of_port);
if (ret) {
@@ -792,7 +796,7 @@ static int apple_pcie_init(struct pci_config_window *cfg)
}
}
- return apple_msi_init(pcie);
+ return 0;
}
static int apple_pcie_probe(struct platform_device *pdev)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 336/600] PCI: qcom-ep: Switch MHI bus master clock off during L1SS
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (334 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 335/600] PCI: apple: Initialize pcie->nvecs before use Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 337/600] drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() Greg Kroah-Hartman
` (274 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Krzysztof Wilczyński,
Manivannan Sadhasivam, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
[ Upstream commit b9cbc06049cb6b7a322d708c2098195fb9fdcc4c ]
Currently, as part of the qcom_pcie_perst_deassert() function, instead
of writing the updated value to clear PARF_MSTR_AXI_CLK_EN, the variable
"val" is re-read.
This must be fixed to ensure that the master clock supplied to the MHI
bus is correctly gated during L1.1/L1.2 to save power.
Thus, replace the line that re-reads "val" with a line that writes the
updated value to the register to clear PARF_MSTR_AXI_CLK_EN.
[kwilczynski: commit log]
Fixes: c457ac029e44 ("PCI: qcom-ep: Gate Master AXI clock to MHI bus during L1SS")
Link: https://lore.kernel.org/linux-pci/20230627141036.11600-1-manivannan.sadhasivam@linaro.org
Reported-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/controller/dwc/pcie-qcom-ep.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/controller/dwc/pcie-qcom-ep.c b/drivers/pci/controller/dwc/pcie-qcom-ep.c
index 6d0d1b759ca24..d4c566c1c8725 100644
--- a/drivers/pci/controller/dwc/pcie-qcom-ep.c
+++ b/drivers/pci/controller/dwc/pcie-qcom-ep.c
@@ -410,7 +410,7 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci)
/* Gate Master AXI clock to MHI bus during L1SS */
val = readl_relaxed(pcie_ep->parf + PARF_MHI_CLOCK_RESET_CTRL);
val &= ~PARF_MSTR_AXI_CLK_EN;
- val = readl_relaxed(pcie_ep->parf + PARF_MHI_CLOCK_RESET_CTRL);
+ writel_relaxed(val, pcie_ep->parf + PARF_MHI_CLOCK_RESET_CTRL);
dw_pcie_ep_init_notify(&pcie_ep->pci.ep);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 337/600] drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (335 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 336/600] PCI: qcom-ep: Switch MHI bus master clock off during L1SS Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 338/600] PCI/DOE: Fix destroy_work_on_stack() race Greg Kroah-Hartman
` (273 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Minjie Du, Stephen Boyd, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Minjie Du <duminjie@vivo.com>
[ Upstream commit a995c50db887ef97f3160775aef7d772635a6f6e ]
The function clk_register_pll() may return NULL or an ERR_PTR. Don't
treat an ERR_PTR as valid.
Signed-off-by: Minjie Du <duminjie@vivo.com>
Link: https://lore.kernel.org/r/20230712102246.10348-1-duminjie@vivo.com
Fixes: b9e0d40c0d83 ("clk: keystone: add Keystone PLL clock driver")
[sboyd@kernel.org: Reword commit text]
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/keystone/pll.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/keystone/pll.c b/drivers/clk/keystone/pll.c
index d59a7621bb204..ee5c72369334f 100644
--- a/drivers/clk/keystone/pll.c
+++ b/drivers/clk/keystone/pll.c
@@ -209,7 +209,7 @@ static void __init _of_pll_clk_init(struct device_node *node, bool pllctrl)
}
clk = clk_register_pll(NULL, node->name, parent_name, pll_data);
- if (clk) {
+ if (!IS_ERR_OR_NULL(clk)) {
of_clk_add_provider(node, of_clk_src_simple_get, clk);
return;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 338/600] PCI/DOE: Fix destroy_work_on_stack() race
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (336 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 337/600] drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 339/600] clk: sunxi-ng: Modify mismatched function name Greg Kroah-Hartman
` (272 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ira Weiny, Bjorn Helgaas,
Lukas Wunner, Dan Williams, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ira Weiny <ira.weiny@intel.com>
[ Upstream commit e3a3a097eaebaf234a482b4d2f9f18fe989208c1 ]
The following debug object splat was observed in testing:
ODEBUG: free active (active state 0) object: 0000000097d23782 object type: work_struct hint: doe_statemachine_work+0x0/0x510
WARNING: CPU: 1 PID: 71 at lib/debugobjects.c:514 debug_print_object+0x7d/0xb0
...
Workqueue: pci 0000:36:00.0 DOE [1 doe_statemachine_work
RIP: 0010:debug_print_object+0x7d/0xb0
...
Call Trace:
? debug_print_object+0x7d/0xb0
? __pfx_doe_statemachine_work+0x10/0x10
debug_object_free.part.0+0x11b/0x150
doe_statemachine_work+0x45e/0x510
process_one_work+0x1d4/0x3c0
This occurs because destroy_work_on_stack() was called after signaling
the completion in the calling thread. This creates a race between
destroy_work_on_stack() and the task->work struct going out of scope in
pci_doe().
Signal the work complete after destroying the work struct. This is safe
because signal_task_complete() is the final thing the work item does and
the workqueue code is careful not to access the work struct after.
Fixes: abf04be0e707 ("PCI/DOE: Fix memory leak with CONFIG_DEBUG_OBJECTS=y")
Link: https://lore.kernel.org/r/20230726-doe-fix-v1-1-af07e614d4dd@intel.com
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Lukas Wunner <lukas@wunner.de>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/doe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/doe.c b/drivers/pci/doe.c
index e5e9b287b9766..c1776f82b7fce 100644
--- a/drivers/pci/doe.c
+++ b/drivers/pci/doe.c
@@ -223,8 +223,8 @@ static int pci_doe_recv_resp(struct pci_doe_mb *doe_mb, struct pci_doe_task *tas
static void signal_task_complete(struct pci_doe_task *task, int rv)
{
task->rv = rv;
- task->complete(task);
destroy_work_on_stack(&task->work);
+ task->complete(task);
}
static void signal_task_abort(struct pci_doe_task *task, int rv)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 339/600] clk: sunxi-ng: Modify mismatched function name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (337 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 338/600] PCI/DOE: Fix destroy_work_on_stack() race Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 340/600] clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
` (271 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zhang Jianhua, Randy Dunlap,
Jernej Skrabec, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhang Jianhua <chris.zjh@huawei.com>
[ Upstream commit 075d9ca5b4e17f84fd1c744a405e69ec743be7f0 ]
No functional modification involved.
drivers/clk/sunxi-ng/ccu_mmc_timing.c:54: warning: expecting prototype for sunxi_ccu_set_mmc_timing_mode(). Prototype was for sunxi_ccu_get_mmc_timing_mode() instead
Fixes: f6f64ed868d3 ("clk: sunxi-ng: Add interface to query or configure MMC timing modes.")
Signed-off-by: Zhang Jianhua <chris.zjh@huawei.com>
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://lore.kernel.org/r/20230722153107.2078179-1-chris.zjh@huawei.com
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/sunxi-ng/ccu_mmc_timing.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/sunxi-ng/ccu_mmc_timing.c b/drivers/clk/sunxi-ng/ccu_mmc_timing.c
index de33414fc5c28..c6a6ce98ca03a 100644
--- a/drivers/clk/sunxi-ng/ccu_mmc_timing.c
+++ b/drivers/clk/sunxi-ng/ccu_mmc_timing.c
@@ -43,7 +43,7 @@ int sunxi_ccu_set_mmc_timing_mode(struct clk *clk, bool new_mode)
EXPORT_SYMBOL_GPL(sunxi_ccu_set_mmc_timing_mode);
/**
- * sunxi_ccu_set_mmc_timing_mode: Get the current MMC clock timing mode
+ * sunxi_ccu_get_mmc_timing_mode: Get the current MMC clock timing mode
* @clk: clock to query
*
* Returns 0 if the clock is in old timing mode, > 0 if it is in
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 340/600] clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (338 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 339/600] clk: sunxi-ng: Modify mismatched function name Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 341/600] EDAC/igen6: Fix the issue of no error events Greg Kroah-Hartman
` (270 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Wronek, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Wronek <davidwronek@gmail.com>
[ Upstream commit fd0b5ba87ad5709f0fd3d2bc4b7870494a75f96a ]
Set .flags = CLK_OPS_PARENT_ENABLE to fix "gcc_sdcc2_apps_clk_src: rcg
didn't update its configuration" error.
Fixes: 17269568f726 ("clk: qcom: Add Global Clock controller (GCC) driver for SC7180")
Signed-off-by: David Wronek <davidwronek@gmail.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230723190725.1619193-2-davidwronek@gmail.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sc7180.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/qcom/gcc-sc7180.c b/drivers/clk/qcom/gcc-sc7180.c
index 2d3980251e78e..5822db4f4f358 100644
--- a/drivers/clk/qcom/gcc-sc7180.c
+++ b/drivers/clk/qcom/gcc-sc7180.c
@@ -667,6 +667,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.name = "gcc_sdcc2_apps_clk_src",
.parent_data = gcc_parent_data_5,
.num_parents = ARRAY_SIZE(gcc_parent_data_5),
+ .flags = CLK_OPS_PARENT_ENABLE,
.ops = &clk_rcg2_floor_ops,
},
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 341/600] EDAC/igen6: Fix the issue of no error events
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (339 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 340/600] clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 342/600] ext4: correct grp validation in ext4_mb_good_group Greg Kroah-Hartman
` (269 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ee Wey Lim, Qiuxu Zhuo, Tony Luck,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
[ Upstream commit ce53ad81ed36c24aff075f94474adecfabfcf239 ]
Current igen6_edac checks for pending errors before the registration
of the error handler. However, there is a possibility that the error
occurs during the registration process, leading to unhandled pending
errors and no future error events. This issue can be reproduced by
repeatedly injecting errors during the loading of the igen6_edac.
Fix this issue by moving the pending error handler after the registration
of the error handler, ensuring that no pending errors are left unhandled.
Fixes: 10590a9d4f23 ("EDAC/igen6: Add EDAC driver for Intel client SoCs using IBECC")
Reported-by: Ee Wey Lim <ee.wey.lim@intel.com>
Tested-by: Ee Wey Lim <ee.wey.lim@intel.com>
Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Link: https://lore.kernel.org/r/20230725080427.23883-1-qiuxu.zhuo@intel.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/edac/igen6_edac.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/edac/igen6_edac.c b/drivers/edac/igen6_edac.c
index a07bbfd075d06..8ec70da8d84fe 100644
--- a/drivers/edac/igen6_edac.c
+++ b/drivers/edac/igen6_edac.c
@@ -27,7 +27,7 @@
#include "edac_mc.h"
#include "edac_module.h"
-#define IGEN6_REVISION "v2.5"
+#define IGEN6_REVISION "v2.5.1"
#define EDAC_MOD_STR "igen6_edac"
#define IGEN6_NMI_NAME "igen6_ibecc"
@@ -1216,9 +1216,6 @@ static int igen6_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
INIT_WORK(&ecclog_work, ecclog_work_cb);
init_irq_work(&ecclog_irq_work, ecclog_irq_work_cb);
- /* Check if any pending errors before registering the NMI handler */
- ecclog_handler();
-
rc = register_err_handler();
if (rc)
goto fail3;
@@ -1230,6 +1227,9 @@ static int igen6_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
goto fail4;
}
+ /* Check if any pending errors before/during the registration of the error handler */
+ ecclog_handler();
+
igen6_debug_setup();
return 0;
fail4:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 342/600] ext4: correct grp validation in ext4_mb_good_group
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (340 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 341/600] EDAC/igen6: Fix the issue of no error events Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 343/600] ext4: avoid potential data overflow in next_linear_group Greg Kroah-Hartman
` (268 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kemeng Shi, Ritesh Harjani (IBM),
Theodore Tso, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kemeng Shi <shikemeng@huaweicloud.com>
[ Upstream commit a9ce5993a0f5c0887c8a1b4ffa3b8046fbcfdc93 ]
Group corruption check will access memory of grp and will trigger kernel
crash if grp is NULL. So do NULL check before corruption check.
Fixes: 5354b2af3406 ("ext4: allow ext4_get_group_info() to fail")
Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Link: https://lore.kernel.org/r/20230801143204.2284343-2-shikemeng@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ext4/mballoc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 88ed64ebae3e7..20d02cc0a17aa 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2401,7 +2401,7 @@ static bool ext4_mb_good_group(struct ext4_allocation_context *ac,
BUG_ON(cr < 0 || cr >= 4);
- if (unlikely(EXT4_MB_GRP_BBITMAP_CORRUPT(grp) || !grp))
+ if (unlikely(!grp || EXT4_MB_GRP_BBITMAP_CORRUPT(grp)))
return false;
free = grp->bb_free;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 343/600] ext4: avoid potential data overflow in next_linear_group
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (341 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 342/600] ext4: correct grp validation in ext4_mb_good_group Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 344/600] clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
` (267 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kemeng Shi, Ritesh Harjani (IBM),
Theodore Tso, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kemeng Shi <shikemeng@huaweicloud.com>
[ Upstream commit 60c672b7f2d1e5dd1774f2399b355c9314e709f8 ]
ngroups is ext4_group_t (unsigned int) while next_linear_group treat it
in int. If ngroups is bigger than max number described by int, it will
be treat as a negative number. Then "return group + 1 >= ngroups ? 0 :
group + 1;" may keep returning 0.
Switch int to ext4_group_t in next_linear_group to fix the overflow.
Fixes: 196e402adf2e ("ext4: improve cr 0 / cr 1 group scanning")
Signed-off-by: Kemeng Shi <shikemeng@huaweicloud.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Link: https://lore.kernel.org/r/20230801143204.2284343-3-shikemeng@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ext4/mballoc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 20d02cc0a17aa..016925b1a0908 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -966,8 +966,9 @@ static inline int should_optimize_scan(struct ext4_allocation_context *ac)
* Return next linear group for allocation. If linear traversal should not be
* performed, this function just returns the same group
*/
-static int
-next_linear_group(struct ext4_allocation_context *ac, int group, int ngroups)
+static ext4_group_t
+next_linear_group(struct ext4_allocation_context *ac, ext4_group_t group,
+ ext4_group_t ngroups)
{
if (!should_optimize_scan(ac))
goto inc_and_return;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 344/600] clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (342 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 343/600] ext4: avoid potential data overflow in next_linear_group Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 345/600] kvm/vfio: Prepare for accepting vfio device fd Greg Kroah-Hartman
` (266 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bryan ODonoghue,
Patrick Whewell, Vinod Koul, Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Patrick Whewell <patrick.whewell@sightlineapplications.com>
[ Upstream commit 783cb693828ce487cf0bc6ad16cbcf2caae6f8d9 ]
GPLL9 is not on by default, which causes a "gcc_sdcc2_apps_clk_src: rcg
didn't update its configuration" error when booting. Set .flags =
CLK_OPS_PARENT_ENABLE to fix the error.
Fixes: 3e5770921a88 ("clk: qcom: gcc: Add global clock controller driver for SM8250")
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Patrick Whewell <patrick.whewell@sightlineapplications.com>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20230802210359.408-1-patrick.whewell@sightlineapplications.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sm8250.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/qcom/gcc-sm8250.c b/drivers/clk/qcom/gcc-sm8250.c
index a0ba37656b07b..30bd561461074 100644
--- a/drivers/clk/qcom/gcc-sm8250.c
+++ b/drivers/clk/qcom/gcc-sm8250.c
@@ -721,6 +721,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.name = "gcc_sdcc2_apps_clk_src",
.parent_data = gcc_parent_data_4,
.num_parents = ARRAY_SIZE(gcc_parent_data_4),
+ .flags = CLK_OPS_PARENT_ENABLE,
.ops = &clk_rcg2_floor_ops,
},
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 345/600] kvm/vfio: Prepare for accepting vfio device fd
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (343 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 344/600] clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 346/600] kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() Greg Kroah-Hartman
` (265 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kevin Tian, Eric Auger,
Jason Gunthorpe, Terrence Xu, Nicolin Chen, Matthew Rosato,
Yanting Jiang, Shameer Kolothum, Zhenzhong Duan, Yi Liu,
Alex Williamson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Liu <yi.l.liu@intel.com>
[ Upstream commit 2f99073a722beef5f74f3b0f32bda227ba3df1e0 ]
This renames kvm_vfio_group related helpers to prepare for accepting
vfio device fd. No functional change is intended.
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Tested-by: Terrence Xu <terrence.xu@intel.com>
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Tested-by: Matthew Rosato <mjrosato@linux.ibm.com>
Tested-by: Yanting Jiang <yanting.jiang@intel.com>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Signed-off-by: Yi Liu <yi.l.liu@intel.com>
Link: https://lore.kernel.org/r/20230718135551.6592-5-yi.l.liu@intel.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Stable-dep-of: 9e0f4f2918c2 ("kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
virt/kvm/vfio.c | 115 ++++++++++++++++++++++++------------------------
1 file changed, 58 insertions(+), 57 deletions(-)
diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c
index 9584eb57e0eda..af3d0cf06e4c6 100644
--- a/virt/kvm/vfio.c
+++ b/virt/kvm/vfio.c
@@ -21,7 +21,7 @@
#include <asm/kvm_ppc.h>
#endif
-struct kvm_vfio_group {
+struct kvm_vfio_file {
struct list_head node;
struct file *file;
#ifdef CONFIG_SPAPR_TCE_IOMMU
@@ -30,7 +30,7 @@ struct kvm_vfio_group {
};
struct kvm_vfio {
- struct list_head group_list;
+ struct list_head file_list;
struct mutex lock;
bool noncoherent;
};
@@ -98,34 +98,35 @@ static struct iommu_group *kvm_vfio_file_iommu_group(struct file *file)
}
static void kvm_spapr_tce_release_vfio_group(struct kvm *kvm,
- struct kvm_vfio_group *kvg)
+ struct kvm_vfio_file *kvf)
{
- if (WARN_ON_ONCE(!kvg->iommu_group))
+ if (WARN_ON_ONCE(!kvf->iommu_group))
return;
- kvm_spapr_tce_release_iommu_group(kvm, kvg->iommu_group);
- iommu_group_put(kvg->iommu_group);
- kvg->iommu_group = NULL;
+ kvm_spapr_tce_release_iommu_group(kvm, kvf->iommu_group);
+ iommu_group_put(kvf->iommu_group);
+ kvf->iommu_group = NULL;
}
#endif
/*
- * Groups can use the same or different IOMMU domains. If the same then
- * adding a new group may change the coherency of groups we've previously
- * been told about. We don't want to care about any of that so we retest
- * each group and bail as soon as we find one that's noncoherent. This
- * means we only ever [un]register_noncoherent_dma once for the whole device.
+ * Groups/devices can use the same or different IOMMU domains. If the same
+ * then adding a new group/device may change the coherency of groups/devices
+ * we've previously been told about. We don't want to care about any of
+ * that so we retest each group/device and bail as soon as we find one that's
+ * noncoherent. This means we only ever [un]register_noncoherent_dma once
+ * for the whole device.
*/
static void kvm_vfio_update_coherency(struct kvm_device *dev)
{
struct kvm_vfio *kv = dev->private;
bool noncoherent = false;
- struct kvm_vfio_group *kvg;
+ struct kvm_vfio_file *kvf;
mutex_lock(&kv->lock);
- list_for_each_entry(kvg, &kv->group_list, node) {
- if (!kvm_vfio_file_enforced_coherent(kvg->file)) {
+ list_for_each_entry(kvf, &kv->file_list, node) {
+ if (!kvm_vfio_file_enforced_coherent(kvf->file)) {
noncoherent = true;
break;
}
@@ -143,10 +144,10 @@ static void kvm_vfio_update_coherency(struct kvm_device *dev)
mutex_unlock(&kv->lock);
}
-static int kvm_vfio_group_add(struct kvm_device *dev, unsigned int fd)
+static int kvm_vfio_file_add(struct kvm_device *dev, unsigned int fd)
{
struct kvm_vfio *kv = dev->private;
- struct kvm_vfio_group *kvg;
+ struct kvm_vfio_file *kvf;
struct file *filp;
int ret;
@@ -162,27 +163,27 @@ static int kvm_vfio_group_add(struct kvm_device *dev, unsigned int fd)
mutex_lock(&kv->lock);
- list_for_each_entry(kvg, &kv->group_list, node) {
- if (kvg->file == filp) {
+ list_for_each_entry(kvf, &kv->file_list, node) {
+ if (kvf->file == filp) {
ret = -EEXIST;
goto err_unlock;
}
}
- kvg = kzalloc(sizeof(*kvg), GFP_KERNEL_ACCOUNT);
- if (!kvg) {
+ kvf = kzalloc(sizeof(*kvf), GFP_KERNEL_ACCOUNT);
+ if (!kvf) {
ret = -ENOMEM;
goto err_unlock;
}
- kvg->file = filp;
- list_add_tail(&kvg->node, &kv->group_list);
+ kvf->file = filp;
+ list_add_tail(&kvf->node, &kv->file_list);
kvm_arch_start_assignment(dev->kvm);
mutex_unlock(&kv->lock);
- kvm_vfio_file_set_kvm(kvg->file, dev->kvm);
+ kvm_vfio_file_set_kvm(kvf->file, dev->kvm);
kvm_vfio_update_coherency(dev);
return 0;
@@ -193,10 +194,10 @@ static int kvm_vfio_group_add(struct kvm_device *dev, unsigned int fd)
return ret;
}
-static int kvm_vfio_group_del(struct kvm_device *dev, unsigned int fd)
+static int kvm_vfio_file_del(struct kvm_device *dev, unsigned int fd)
{
struct kvm_vfio *kv = dev->private;
- struct kvm_vfio_group *kvg;
+ struct kvm_vfio_file *kvf;
struct fd f;
int ret;
@@ -208,18 +209,18 @@ static int kvm_vfio_group_del(struct kvm_device *dev, unsigned int fd)
mutex_lock(&kv->lock);
- list_for_each_entry(kvg, &kv->group_list, node) {
- if (kvg->file != f.file)
+ list_for_each_entry(kvf, &kv->file_list, node) {
+ if (kvf->file != f.file)
continue;
- list_del(&kvg->node);
+ list_del(&kvf->node);
kvm_arch_end_assignment(dev->kvm);
#ifdef CONFIG_SPAPR_TCE_IOMMU
- kvm_spapr_tce_release_vfio_group(dev->kvm, kvg);
+ kvm_spapr_tce_release_vfio_group(dev->kvm, kvf);
#endif
- kvm_vfio_file_set_kvm(kvg->file, NULL);
- fput(kvg->file);
- kfree(kvg);
+ kvm_vfio_file_set_kvm(kvf->file, NULL);
+ fput(kvf->file);
+ kfree(kvf);
ret = 0;
break;
}
@@ -234,12 +235,12 @@ static int kvm_vfio_group_del(struct kvm_device *dev, unsigned int fd)
}
#ifdef CONFIG_SPAPR_TCE_IOMMU
-static int kvm_vfio_group_set_spapr_tce(struct kvm_device *dev,
- void __user *arg)
+static int kvm_vfio_file_set_spapr_tce(struct kvm_device *dev,
+ void __user *arg)
{
struct kvm_vfio_spapr_tce param;
struct kvm_vfio *kv = dev->private;
- struct kvm_vfio_group *kvg;
+ struct kvm_vfio_file *kvf;
struct fd f;
int ret;
@@ -254,20 +255,20 @@ static int kvm_vfio_group_set_spapr_tce(struct kvm_device *dev,
mutex_lock(&kv->lock);
- list_for_each_entry(kvg, &kv->group_list, node) {
- if (kvg->file != f.file)
+ list_for_each_entry(kvf, &kv->file_list, node) {
+ if (kvf->file != f.file)
continue;
- if (!kvg->iommu_group) {
- kvg->iommu_group = kvm_vfio_file_iommu_group(kvg->file);
- if (WARN_ON_ONCE(!kvg->iommu_group)) {
+ if (!kvf->iommu_group) {
+ kvf->iommu_group = kvm_vfio_file_iommu_group(kvf->file);
+ if (WARN_ON_ONCE(!kvf->iommu_group)) {
ret = -EIO;
goto err_fdput;
}
}
ret = kvm_spapr_tce_attach_iommu_group(dev->kvm, param.tablefd,
- kvg->iommu_group);
+ kvf->iommu_group);
break;
}
@@ -278,8 +279,8 @@ static int kvm_vfio_group_set_spapr_tce(struct kvm_device *dev,
}
#endif
-static int kvm_vfio_set_group(struct kvm_device *dev, long attr,
- void __user *arg)
+static int kvm_vfio_set_file(struct kvm_device *dev, long attr,
+ void __user *arg)
{
int32_t __user *argp = arg;
int32_t fd;
@@ -288,16 +289,16 @@ static int kvm_vfio_set_group(struct kvm_device *dev, long attr,
case KVM_DEV_VFIO_GROUP_ADD:
if (get_user(fd, argp))
return -EFAULT;
- return kvm_vfio_group_add(dev, fd);
+ return kvm_vfio_file_add(dev, fd);
case KVM_DEV_VFIO_GROUP_DEL:
if (get_user(fd, argp))
return -EFAULT;
- return kvm_vfio_group_del(dev, fd);
+ return kvm_vfio_file_del(dev, fd);
#ifdef CONFIG_SPAPR_TCE_IOMMU
case KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE:
- return kvm_vfio_group_set_spapr_tce(dev, arg);
+ return kvm_vfio_file_set_spapr_tce(dev, arg);
#endif
}
@@ -309,8 +310,8 @@ static int kvm_vfio_set_attr(struct kvm_device *dev,
{
switch (attr->group) {
case KVM_DEV_VFIO_GROUP:
- return kvm_vfio_set_group(dev, attr->attr,
- u64_to_user_ptr(attr->addr));
+ return kvm_vfio_set_file(dev, attr->attr,
+ u64_to_user_ptr(attr->addr));
}
return -ENXIO;
@@ -339,16 +340,16 @@ static int kvm_vfio_has_attr(struct kvm_device *dev,
static void kvm_vfio_release(struct kvm_device *dev)
{
struct kvm_vfio *kv = dev->private;
- struct kvm_vfio_group *kvg, *tmp;
+ struct kvm_vfio_file *kvf, *tmp;
- list_for_each_entry_safe(kvg, tmp, &kv->group_list, node) {
+ list_for_each_entry_safe(kvf, tmp, &kv->file_list, node) {
#ifdef CONFIG_SPAPR_TCE_IOMMU
- kvm_spapr_tce_release_vfio_group(dev->kvm, kvg);
+ kvm_spapr_tce_release_vfio_group(dev->kvm, kvf);
#endif
- kvm_vfio_file_set_kvm(kvg->file, NULL);
- fput(kvg->file);
- list_del(&kvg->node);
- kfree(kvg);
+ kvm_vfio_file_set_kvm(kvf->file, NULL);
+ fput(kvf->file);
+ list_del(&kvf->node);
+ kfree(kvf);
kvm_arch_end_assignment(dev->kvm);
}
@@ -382,7 +383,7 @@ static int kvm_vfio_create(struct kvm_device *dev, u32 type)
if (!kv)
return -ENOMEM;
- INIT_LIST_HEAD(&kv->group_list);
+ INIT_LIST_HEAD(&kv->file_list);
mutex_init(&kv->lock);
dev->private = kv;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 346/600] kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (344 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 345/600] kvm/vfio: Prepare for accepting vfio device fd Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 347/600] clk: qcom: reset: Use the correct type of sleep/delay based on length Greg Kroah-Hartman
` (264 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alex Williamson, Dmitry Torokhov,
Kevin Tian, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
[ Upstream commit 9e0f4f2918c2ff145d3dedee862d9919a6ed5812 ]
kvm_vfio_group_add() creates kvg instance, links it to kv->group_list,
and calls kvm_vfio_file_set_kvm() with kvg->file as an argument after
dropping kv->lock. If we race group addition and deletion calls, kvg
instance may get freed by the time we get around to calling
kvm_vfio_file_set_kvm().
Previous iterations of the code did not reference kvg->file outside of
the critical section, but used a temporary variable. Still, they had
similar problem of the file reference being owned by kvg structure and
potential for kvm_vfio_group_del() dropping it before
kvm_vfio_group_add() had a chance to complete.
Fix this by moving call to kvm_vfio_file_set_kvm() under the protection
of kv->lock. We already call it while holding the same lock when vfio
group is being deleted, so it should be safe here as well.
Fixes: 2fc1bec15883 ("kvm: set/clear kvm to/from vfio_group when group add/delete")
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/20230714224538.404793-1-dmitry.torokhov@gmail.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
virt/kvm/vfio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/virt/kvm/vfio.c b/virt/kvm/vfio.c
index af3d0cf06e4c6..365d30779768a 100644
--- a/virt/kvm/vfio.c
+++ b/virt/kvm/vfio.c
@@ -180,10 +180,10 @@ static int kvm_vfio_file_add(struct kvm_device *dev, unsigned int fd)
list_add_tail(&kvf->node, &kv->file_list);
kvm_arch_start_assignment(dev->kvm);
+ kvm_vfio_file_set_kvm(kvf->file, dev->kvm);
mutex_unlock(&kv->lock);
- kvm_vfio_file_set_kvm(kvf->file, dev->kvm);
kvm_vfio_update_coherency(dev);
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 347/600] clk: qcom: reset: Use the correct type of sleep/delay based on length
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (345 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 346/600] kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 348/600] clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
` (263 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 181b66ee7cdd824797fc99b53bec29cf5630a04f ]
Use the fsleep() helper that (based on the length of the delay, see: [1])
chooses the correct sleep/delay functions.
[1] https://www.kernel.org/doc/Documentation/timers/timers-howto.txt
Fixes: 2cb8a39b6781 ("clk: qcom: reset: Allow specifying custom reset delay")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230726-topic-qcom_reset-v3-1-5958facd5db2@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/reset.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/qcom/reset.c b/drivers/clk/qcom/reset.c
index 0e914ec7aeae1..e45e32804d2c7 100644
--- a/drivers/clk/qcom/reset.c
+++ b/drivers/clk/qcom/reset.c
@@ -16,7 +16,8 @@ static int qcom_reset(struct reset_controller_dev *rcdev, unsigned long id)
struct qcom_reset_controller *rst = to_qcom_reset_controller(rcdev);
rcdev->ops->assert(rcdev, id);
- udelay(rst->reset_map[id].udelay ?: 1); /* use 1 us as default */
+ fsleep(rst->reset_map[id].udelay ?: 1); /* use 1 us as default */
+
rcdev->ops->deassert(rcdev, id);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 348/600] clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (346 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 347/600] clk: qcom: reset: Use the correct type of sleep/delay based on length Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 349/600] PCI: microchip: Correct the DED and SEC interrupt bit offsets Greg Kroah-Hartman
` (262 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Luca Weiss, Konrad Dybcio,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Luca Weiss <luca.weiss@fairphone.com>
[ Upstream commit df04d166d1f346dbf740bbea64a3bed3e7f14c8d ]
GPLL7 is not on by default, which causes a "gcc_sdcc2_apps_clk_src: rcg
didn't update its configuration" error when booting. Set .flags =
CLK_OPS_PARENT_ENABLE to fix the error.
Fixes: 131abae905df ("clk: qcom: Add SM6350 GCC driver")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230804-sm6350-sdcc2-v1-1-3d946927d37d@fairphone.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sm6350.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/qcom/gcc-sm6350.c b/drivers/clk/qcom/gcc-sm6350.c
index 9b4e4bb059635..cf4a7b6e0b23a 100644
--- a/drivers/clk/qcom/gcc-sm6350.c
+++ b/drivers/clk/qcom/gcc-sm6350.c
@@ -641,6 +641,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.name = "gcc_sdcc2_apps_clk_src",
.parent_data = gcc_parent_data_8,
.num_parents = ARRAY_SIZE(gcc_parent_data_8),
+ .flags = CLK_OPS_PARENT_ENABLE,
.ops = &clk_rcg2_floor_ops,
},
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 349/600] PCI: microchip: Correct the DED and SEC interrupt bit offsets
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (347 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 348/600] clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 350/600] PCI: Mark NVIDIA T4 GPUs to avoid bus reset Greg Kroah-Hartman
` (261 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daire McNamara, Lorenzo Pieralisi,
Conor Dooley, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daire McNamara <daire.mcnamara@microchip.com>
[ Upstream commit 6d473a5a26136edf55c435a1c433e52910e03926 ]
The SEC and DED interrupt bits are laid out the wrong way round so the SEC
interrupt handler attempts to mask, unmask, and clear the DED interrupt
and vice versa. Correct the bit offsets so that each interrupt handler
operates properly.
Link: https://lore.kernel.org/r/20230728131401.1615724-2-daire.mcnamara@microchip.com
Fixes: 6f15a9c9f941 ("PCI: microchip: Add Microchip PolarFire PCIe controller driver")
Signed-off-by: Daire McNamara <daire.mcnamara@microchip.com>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/controller/pcie-microchip-host.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/controller/pcie-microchip-host.c b/drivers/pci/controller/pcie-microchip-host.c
index 7263d175b5adb..5ba101efd9326 100644
--- a/drivers/pci/controller/pcie-microchip-host.c
+++ b/drivers/pci/controller/pcie-microchip-host.c
@@ -167,12 +167,12 @@
#define EVENT_PCIE_DLUP_EXIT 2
#define EVENT_SEC_TX_RAM_SEC_ERR 3
#define EVENT_SEC_RX_RAM_SEC_ERR 4
-#define EVENT_SEC_AXI2PCIE_RAM_SEC_ERR 5
-#define EVENT_SEC_PCIE2AXI_RAM_SEC_ERR 6
+#define EVENT_SEC_PCIE2AXI_RAM_SEC_ERR 5
+#define EVENT_SEC_AXI2PCIE_RAM_SEC_ERR 6
#define EVENT_DED_TX_RAM_DED_ERR 7
#define EVENT_DED_RX_RAM_DED_ERR 8
-#define EVENT_DED_AXI2PCIE_RAM_DED_ERR 9
-#define EVENT_DED_PCIE2AXI_RAM_DED_ERR 10
+#define EVENT_DED_PCIE2AXI_RAM_DED_ERR 9
+#define EVENT_DED_AXI2PCIE_RAM_DED_ERR 10
#define EVENT_LOCAL_DMA_END_ENGINE_0 11
#define EVENT_LOCAL_DMA_END_ENGINE_1 12
#define EVENT_LOCAL_DMA_ERROR_ENGINE_0 13
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 350/600] PCI: Mark NVIDIA T4 GPUs to avoid bus reset
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (348 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 349/600] PCI: microchip: Correct the DED and SEC interrupt bit offsets Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 351/600] pinctrl: mcp23s08: check return value of devm_kasprintf() Greg Kroah-Hartman
` (260 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Wu Zongyong, Bjorn Helgaas,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wu Zongyong <wuzongyong@linux.alibaba.com>
[ Upstream commit d5af729dc2071273f14cbb94abbc60608142fd83 ]
NVIDIA T4 GPUs do not work with SBR. This problem is found when the T4 card
is direct attached to a Root Port only. Avoid bus reset by marking T4 GPUs
PCI_DEV_FLAGS_NO_BUS_RESET.
Fixes: 4c207e7121fa ("PCI: Mark some NVIDIA GPUs to avoid bus reset")
Link: https://lore.kernel.org/r/2dcebea53a6eb9bd212ec6d8974af2e5e0333ef6.1681129861.git.wuzongyong@linux.alibaba.com
Signed-off-by: Wu Zongyong <wuzongyong@linux.alibaba.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/quirks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 472fa2c8ebcec..d6fe44a5270d5 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3631,7 +3631,7 @@ static void quirk_no_bus_reset(struct pci_dev *dev)
*/
static void quirk_nvidia_no_bus_reset(struct pci_dev *dev)
{
- if ((dev->device & 0xffc0) == 0x2340)
+ if ((dev->device & 0xffc0) == 0x2340 || dev->device == 0x1eb8)
quirk_no_bus_reset(dev);
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 351/600] pinctrl: mcp23s08: check return value of devm_kasprintf()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (349 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 350/600] PCI: Mark NVIDIA T4 GPUs to avoid bus reset Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 352/600] PCI: Allow drivers to request exclusive config regions Greg Kroah-Hartman
` (259 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Claudiu Beznea, Andy Shevchenko,
Linus Walleij, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Claudiu Beznea <claudiu.beznea@microchip.com>
[ Upstream commit f941714a7c7698eadb59bc27d34d6d6f38982705 ]
devm_kasprintf() returns a pointer to dynamically allocated memory.
Pointer could be NULL in case allocation fails. Check pointer validity.
Identified with coccinelle (kmerr.cocci script).
Fixes: 0f04a81784fe ("pinctrl: mcp23s08: Split to three parts: core, I²C, SPI")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230621100409.1608395-1-claudiu.beznea@microchip.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pinctrl/pinctrl-mcp23s08_spi.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/drivers/pinctrl/pinctrl-mcp23s08_spi.c b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
index 9ae10318f6f35..ea059b9c5542e 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08_spi.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
@@ -91,18 +91,28 @@ static int mcp23s08_spi_regmap_init(struct mcp23s08 *mcp, struct device *dev,
mcp->reg_shift = 0;
mcp->chip.ngpio = 8;
mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s08.%d", addr);
+ if (!mcp->chip.label)
+ return -ENOMEM;
config = &mcp23x08_regmap;
name = devm_kasprintf(dev, GFP_KERNEL, "%d", addr);
+ if (!name)
+ return -ENOMEM;
+
break;
case MCP_TYPE_S17:
mcp->reg_shift = 1;
mcp->chip.ngpio = 16;
mcp->chip.label = devm_kasprintf(dev, GFP_KERNEL, "mcp23s17.%d", addr);
+ if (!mcp->chip.label)
+ return -ENOMEM;
config = &mcp23x17_regmap;
name = devm_kasprintf(dev, GFP_KERNEL, "%d", addr);
+ if (!name)
+ return -ENOMEM;
+
break;
case MCP_TYPE_S18:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 352/600] PCI: Allow drivers to request exclusive config regions
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (350 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 351/600] pinctrl: mcp23s08: check return value of devm_kasprintf() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 353/600] PCI: Add locking to RMW PCI Express Capability Register accessors Greg Kroah-Hartman
` (258 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bjorn Helgaas, Jonathan Cameron,
Dan Williams, Ira Weiny, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ira Weiny <ira.weiny@intel.com>
[ Upstream commit 278294798ac9118412c9624a801d3f20f2279363 ]
PCI config space access from user space has traditionally been
unrestricted with writes being an understood risk for device operation.
Unfortunately, device breakage or odd behavior from config writes lacks
indicators that can leave driver writers confused when evaluating
failures. This is especially true with the new PCIe Data Object
Exchange (DOE) mailbox protocol where backdoor shenanigans from user
space through things such as vendor defined protocols may affect device
operation without complete breakage.
A prior proposal restricted read and writes completely.[1] Greg and
Bjorn pointed out that proposal is flawed for a couple of reasons.
First, lspci should always be allowed and should not interfere with any
device operation. Second, setpci is a valuable tool that is sometimes
necessary and it should not be completely restricted.[2] Finally
methods exist for full lock of device access if required.
Even though access should not be restricted it would be nice for driver
writers to be able to flag critical parts of the config space such that
interference from user space can be detected.
Introduce pci_request_config_region_exclusive() to mark exclusive config
regions. Such regions trigger a warning and kernel taint if accessed
via user space.
Create pci_warn_once() to restrict the user from spamming the log.
[1] https://lore.kernel.org/all/161663543465.1867664.5674061943008380442.stgit@dwillia2-desk3.amr.corp.intel.com/
[2] https://lore.kernel.org/all/YF8NGeGv9vYcMfTV@kroah.com/
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Suggested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://lore.kernel.org/r/20220926215711.2893286-2-ira.weiny@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Stable-dep-of: 5e70d0acf082 ("PCI: Add locking to RMW PCI Express Capability Register accessors")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/pci-sysfs.c | 7 +++++++
drivers/pci/probe.c | 6 ++++++
include/linux/ioport.h | 2 ++
include/linux/pci.h | 17 +++++++++++++++++
kernel/resource.c | 13 ++++++++-----
5 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index ba38fc47d35e9..dd0d9d9bc5097 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -756,6 +756,13 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
if (ret)
return ret;
+ if (resource_is_exclusive(&dev->driver_exclusive_resource, off,
+ count)) {
+ pci_warn_once(dev, "%s: Unexpected write to kernel-exclusive config offset %llx",
+ current->comm, off);
+ add_taint(TAINT_USER, LOCKDEP_STILL_OK);
+ }
+
if (off > dev->cfg_size)
return 0;
if (off + count > dev->cfg_size) {
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 7170516298b0b..e3a1dc6432bcd 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2306,6 +2306,12 @@ struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
INIT_LIST_HEAD(&dev->bus_list);
dev->dev.type = &pci_dev_type;
dev->bus = pci_bus_get(bus);
+ dev->driver_exclusive_resource = (struct resource) {
+ .name = "PCI Exclusive",
+ .start = 0,
+ .end = -1,
+ };
+
#ifdef CONFIG_PCI_MSI
raw_spin_lock_init(&dev->msi_lock);
#endif
diff --git a/include/linux/ioport.h b/include/linux/ioport.h
index 27642ca15d932..4ae3c541ea6f4 100644
--- a/include/linux/ioport.h
+++ b/include/linux/ioport.h
@@ -318,6 +318,8 @@ extern void __devm_release_region(struct device *dev, struct resource *parent,
resource_size_t start, resource_size_t n);
extern int iomem_map_sanity_check(resource_size_t addr, unsigned long size);
extern bool iomem_is_exclusive(u64 addr);
+extern bool resource_is_exclusive(struct resource *resource, u64 addr,
+ resource_size_t size);
extern int
walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 9f617ffdb863f..4ea8de6890bea 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -409,6 +409,7 @@ struct pci_dev {
*/
unsigned int irq;
struct resource resource[DEVICE_COUNT_RESOURCE]; /* I/O and memory regions + expansion ROMs */
+ struct resource driver_exclusive_resource; /* driver exclusive resource ranges */
bool match_driver; /* Skip attaching driver */
@@ -1408,6 +1409,21 @@ int pci_request_selected_regions(struct pci_dev *, int, const char *);
int pci_request_selected_regions_exclusive(struct pci_dev *, int, const char *);
void pci_release_selected_regions(struct pci_dev *, int);
+static inline __must_check struct resource *
+pci_request_config_region_exclusive(struct pci_dev *pdev, unsigned int offset,
+ unsigned int len, const char *name)
+{
+ return __request_region(&pdev->driver_exclusive_resource, offset, len,
+ name, IORESOURCE_EXCLUSIVE);
+}
+
+static inline void pci_release_config_region(struct pci_dev *pdev,
+ unsigned int offset,
+ unsigned int len)
+{
+ __release_region(&pdev->driver_exclusive_resource, offset, len);
+}
+
/* drivers/pci/bus.c */
void pci_add_resource(struct list_head *resources, struct resource *res);
void pci_add_resource_offset(struct list_head *resources, struct resource *res,
@@ -2487,6 +2503,7 @@ void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type);
#define pci_crit(pdev, fmt, arg...) dev_crit(&(pdev)->dev, fmt, ##arg)
#define pci_err(pdev, fmt, arg...) dev_err(&(pdev)->dev, fmt, ##arg)
#define pci_warn(pdev, fmt, arg...) dev_warn(&(pdev)->dev, fmt, ##arg)
+#define pci_warn_once(pdev, fmt, arg...) dev_warn_once(&(pdev)->dev, fmt, ##arg)
#define pci_notice(pdev, fmt, arg...) dev_notice(&(pdev)->dev, fmt, ##arg)
#define pci_info(pdev, fmt, arg...) dev_info(&(pdev)->dev, fmt, ##arg)
#define pci_dbg(pdev, fmt, arg...) dev_dbg(&(pdev)->dev, fmt, ##arg)
diff --git a/kernel/resource.c b/kernel/resource.c
index 1aeeededdd4c8..8f52f88009652 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -1693,18 +1693,15 @@ static int strict_iomem_checks;
*
* Returns true if exclusive to the kernel, otherwise returns false.
*/
-bool iomem_is_exclusive(u64 addr)
+bool resource_is_exclusive(struct resource *root, u64 addr, resource_size_t size)
{
const unsigned int exclusive_system_ram = IORESOURCE_SYSTEM_RAM |
IORESOURCE_EXCLUSIVE;
bool skip_children = false, err = false;
- int size = PAGE_SIZE;
struct resource *p;
- addr = addr & PAGE_MASK;
-
read_lock(&resource_lock);
- for_each_resource(&iomem_resource, p, skip_children) {
+ for_each_resource(root, p, skip_children) {
if (p->start >= addr + size)
break;
if (p->end < addr) {
@@ -1743,6 +1740,12 @@ bool iomem_is_exclusive(u64 addr)
return err;
}
+bool iomem_is_exclusive(u64 addr)
+{
+ return resource_is_exclusive(&iomem_resource, addr & PAGE_MASK,
+ PAGE_SIZE);
+}
+
struct resource_entry *resource_list_create_entry(struct resource *res,
size_t extra_size)
{
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 353/600] PCI: Add locking to RMW PCI Express Capability Register accessors
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (351 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 352/600] PCI: Allow drivers to request exclusive config regions Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 354/600] PCI: pciehp: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
` (257 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 5e70d0acf0825f439079736080350371f8d6699a ]
Many places in the kernel write the Link Control and Root Control PCI
Express Capability Registers without proper concurrency control and this
could result in losing the changes one of the writers intended to make.
Add pcie_cap_lock spinlock into the struct pci_dev and use it to protect
bit changes made in the RMW capability accessors. Protect only a selected
set of registers by differentiating the RMW accessor internally to
locked/unlocked variants using a wrapper which has the same signature as
pcie_capability_clear_and_set_word(). As the Capability Register (pos)
given to the wrapper is always a constant, the compiler should be able to
simplify all the dead-code away.
So far only the Link Control Register (ASPM, hotplug, link retraining,
various drivers) and the Root Control Register (AER & PME) seem to
require RMW locking.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: c7f486567c1d ("PCI PM: PCIe PME root port service driver")
Fixes: f12eb72a268b ("PCI/ASPM: Use PCI Express Capability accessors")
Fixes: 7d715a6c1ae5 ("PCI: add PCI Express ASPM support")
Fixes: affa48de8417 ("staging/rdma/hfi1: Add support for enabling/disabling PCIe ASPM")
Fixes: 849a9366cba9 ("misc: rtsx: Add support new chip rts5228 mmc: rtsx: Add support MMC_CAP2_NO_MMC")
Fixes: 3d1e7aa80d1c ("misc: rtsx: Use pcie_capability_clear_and_set_word() for PCI_EXP_LNKCTL")
Fixes: c0e5f4e73a71 ("misc: rtsx: Add support for RTS5261")
Fixes: 3df4fce739e2 ("misc: rtsx: separate aspm mode into MODE_REG and MODE_CFG")
Fixes: 121e9c6b5c4c ("misc: rtsx: modify and fix init_hw function")
Fixes: 19f3bd548f27 ("mfd: rtsx: Remove LCTLR defination")
Fixes: 773ccdfd9cc6 ("mfd: rtsx: Read vendor setting from config space")
Fixes: 8275b77a1513 ("mfd: rts5249: Add support for RTS5250S power saving")
Fixes: 5da4e04ae480 ("misc: rtsx: Add support for RTS5260")
Fixes: 0f49bfbd0f2e ("tg3: Use PCI Express Capability accessors")
Fixes: 5e7dfd0fb94a ("tg3: Prevent corruption at 10 / 100Mbps w CLKREQ")
Fixes: b726e493e8dc ("r8169: sync existing 8168 device hardware start sequences with vendor driver")
Fixes: e6de30d63eb1 ("r8169: more 8168dp support.")
Fixes: 8a06127602de ("Bluetooth: hci_bcm4377: Add new driver for BCM4377 PCIe boards")
Fixes: 6f461f6c7c96 ("e1000e: enable/disable ASPM L0s and L1 and ERT according to hardware errata")
Fixes: 1eae4eb2a1c7 ("e1000e: Disable L1 ASPM power savings for 82573 mobile variants")
Fixes: 8060e169e02f ("ath9k: Enable extended synch for AR9485 to fix L0s recovery issue")
Fixes: 69ce674bfa69 ("ath9k: do btcoex ASPM disabling at initialization time")
Fixes: f37f05503575 ("mt76: mt76x2e: disable pcie_aspm by default")
Link: https://lore.kernel.org/r/20230717120503.15276-2-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: "Rafael J. Wysocki" <rafael@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/access.c | 20 +++++++++++++++++---
drivers/pci/probe.c | 1 +
include/linux/pci.h | 34 ++++++++++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
index 708c7529647fd..3d20f9c51efe7 100644
--- a/drivers/pci/access.c
+++ b/drivers/pci/access.c
@@ -491,8 +491,8 @@ int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val)
}
EXPORT_SYMBOL(pcie_capability_write_dword);
-int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
- u16 clear, u16 set)
+int pcie_capability_clear_and_set_word_unlocked(struct pci_dev *dev, int pos,
+ u16 clear, u16 set)
{
int ret;
u16 val;
@@ -506,7 +506,21 @@ int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
return ret;
}
-EXPORT_SYMBOL(pcie_capability_clear_and_set_word);
+EXPORT_SYMBOL(pcie_capability_clear_and_set_word_unlocked);
+
+int pcie_capability_clear_and_set_word_locked(struct pci_dev *dev, int pos,
+ u16 clear, u16 set)
+{
+ unsigned long flags;
+ int ret;
+
+ spin_lock_irqsave(&dev->pcie_cap_lock, flags);
+ ret = pcie_capability_clear_and_set_word_unlocked(dev, pos, clear, set);
+ spin_unlock_irqrestore(&dev->pcie_cap_lock, flags);
+
+ return ret;
+}
+EXPORT_SYMBOL(pcie_capability_clear_and_set_word_locked);
int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
u32 clear, u32 set)
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index e3a1dc6432bcd..843e4a58788e3 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2312,6 +2312,7 @@ struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
.end = -1,
};
+ spin_lock_init(&dev->pcie_cap_lock);
#ifdef CONFIG_PCI_MSI
raw_spin_lock_init(&dev->msi_lock);
#endif
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 4ea8de6890bea..eccaf1abea79d 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -466,6 +466,7 @@ struct pci_dev {
pci_dev_flags_t dev_flags;
atomic_t enable_cnt; /* pci_enable_device has been called */
+ spinlock_t pcie_cap_lock; /* Protects RMW ops in capability accessors */
u32 saved_config_space[16]; /* Config space saved at suspend time */
struct hlist_head saved_cap_space;
int rom_attr_enabled; /* Display of ROM attribute enabled? */
@@ -1209,11 +1210,40 @@ int pcie_capability_read_word(struct pci_dev *dev, int pos, u16 *val);
int pcie_capability_read_dword(struct pci_dev *dev, int pos, u32 *val);
int pcie_capability_write_word(struct pci_dev *dev, int pos, u16 val);
int pcie_capability_write_dword(struct pci_dev *dev, int pos, u32 val);
-int pcie_capability_clear_and_set_word(struct pci_dev *dev, int pos,
- u16 clear, u16 set);
+int pcie_capability_clear_and_set_word_unlocked(struct pci_dev *dev, int pos,
+ u16 clear, u16 set);
+int pcie_capability_clear_and_set_word_locked(struct pci_dev *dev, int pos,
+ u16 clear, u16 set);
int pcie_capability_clear_and_set_dword(struct pci_dev *dev, int pos,
u32 clear, u32 set);
+/**
+ * pcie_capability_clear_and_set_word - RMW accessor for PCI Express Capability Registers
+ * @dev: PCI device structure of the PCI Express device
+ * @pos: PCI Express Capability Register
+ * @clear: Clear bitmask
+ * @set: Set bitmask
+ *
+ * Perform a Read-Modify-Write (RMW) operation using @clear and @set
+ * bitmasks on PCI Express Capability Register at @pos. Certain PCI Express
+ * Capability Registers are accessed concurrently in RMW fashion, hence
+ * require locking which is handled transparently to the caller.
+ */
+static inline int pcie_capability_clear_and_set_word(struct pci_dev *dev,
+ int pos,
+ u16 clear, u16 set)
+{
+ switch (pos) {
+ case PCI_EXP_LNKCTL:
+ case PCI_EXP_RTCTL:
+ return pcie_capability_clear_and_set_word_locked(dev, pos,
+ clear, set);
+ default:
+ return pcie_capability_clear_and_set_word_unlocked(dev, pos,
+ clear, set);
+ }
+}
+
static inline int pcie_capability_set_word(struct pci_dev *dev, int pos,
u16 set)
{
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 354/600] PCI: pciehp: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (352 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 353/600] PCI: Add locking to RMW PCI Express Capability Register accessors Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 355/600] PCI/ASPM: " Greg Kroah-Hartman
` (256 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 5f75f96c61039151c193775d776fde42477eace1 ]
As hotplug is not the only driver touching LNKCTL, use the RMW capability
accessor which handles concurrent changes correctly.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: 7f822999e12a ("PCI: pciehp: Add Disable/enable link functions")
Link: https://lore.kernel.org/r/20230717120503.15276-4-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: "Rafael J. Wysocki" <rafael@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/hotplug/pciehp_hpc.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c
index 112c8f401ac4e..358f077284cbe 100644
--- a/drivers/pci/hotplug/pciehp_hpc.c
+++ b/drivers/pci/hotplug/pciehp_hpc.c
@@ -332,17 +332,11 @@ int pciehp_check_link_status(struct controller *ctrl)
static int __pciehp_link_set(struct controller *ctrl, bool enable)
{
struct pci_dev *pdev = ctrl_dev(ctrl);
- u16 lnk_ctrl;
- pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &lnk_ctrl);
+ pcie_capability_clear_and_set_word(pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_LD,
+ enable ? 0 : PCI_EXP_LNKCTL_LD);
- if (enable)
- lnk_ctrl &= ~PCI_EXP_LNKCTL_LD;
- else
- lnk_ctrl |= PCI_EXP_LNKCTL_LD;
-
- pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, lnk_ctrl);
- ctrl_dbg(ctrl, "%s: lnk_ctrl = %x\n", __func__, lnk_ctrl);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 355/600] PCI/ASPM: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (353 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 354/600] PCI: pciehp: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 356/600] clk: qcom: gcc-sm8450: Use floor ops for SDCC RCGs Greg Kroah-Hartman
` (255 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit e09060b3b6b4661278ff8e1b7b81a37d5ea86eae ]
Don't assume that the device is fully under the control of ASPM and use RMW
capability accessors which do proper locking to avoid losing concurrent
updates to the register values.
If configuration fails in pcie_aspm_configure_common_clock(), the
function attempts to restore the old PCI_EXP_LNKCTL_CCC settings. Store
only the old PCI_EXP_LNKCTL_CCC bit for the relevant devices rather
than the content of the whole LNKCTL registers. It aligns better with
how pcie_lnkctl_clear_and_set() expects its parameter and makes the
code more obvious to understand.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: 2a42d9dba784 ("PCIe: ASPM: Break out of endless loop waiting for PCI config bits to switch")
Fixes: 7d715a6c1ae5 ("PCI: add PCI Express ASPM support")
Link: https://lore.kernel.org/r/20230717120503.15276-5-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: "Rafael J. Wysocki" <rafael@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/pci/pcie/aspm.c | 30 +++++++++++++-----------------
1 file changed, 13 insertions(+), 17 deletions(-)
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
index 07166a4ec27ad..7e89cdbd446fc 100644
--- a/drivers/pci/pcie/aspm.c
+++ b/drivers/pci/pcie/aspm.c
@@ -250,7 +250,7 @@ static int pcie_retrain_link(struct pcie_link_state *link)
static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
{
int same_clock = 1;
- u16 reg16, parent_reg, child_reg[8];
+ u16 reg16, ccc, parent_old_ccc, child_old_ccc[8];
struct pci_dev *child, *parent = link->pdev;
struct pci_bus *linkbus = parent->subordinate;
/*
@@ -272,6 +272,7 @@ static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
/* Port might be already in common clock mode */
pcie_capability_read_word(parent, PCI_EXP_LNKCTL, ®16);
+ parent_old_ccc = reg16 & PCI_EXP_LNKCTL_CCC;
if (same_clock && (reg16 & PCI_EXP_LNKCTL_CCC)) {
bool consistent = true;
@@ -288,34 +289,29 @@ static void pcie_aspm_configure_common_clock(struct pcie_link_state *link)
pci_info(parent, "ASPM: current common clock configuration is inconsistent, reconfiguring\n");
}
+ ccc = same_clock ? PCI_EXP_LNKCTL_CCC : 0;
/* Configure downstream component, all functions */
list_for_each_entry(child, &linkbus->devices, bus_list) {
pcie_capability_read_word(child, PCI_EXP_LNKCTL, ®16);
- child_reg[PCI_FUNC(child->devfn)] = reg16;
- if (same_clock)
- reg16 |= PCI_EXP_LNKCTL_CCC;
- else
- reg16 &= ~PCI_EXP_LNKCTL_CCC;
- pcie_capability_write_word(child, PCI_EXP_LNKCTL, reg16);
+ child_old_ccc[PCI_FUNC(child->devfn)] = reg16 & PCI_EXP_LNKCTL_CCC;
+ pcie_capability_clear_and_set_word(child, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_CCC, ccc);
}
/* Configure upstream component */
- pcie_capability_read_word(parent, PCI_EXP_LNKCTL, ®16);
- parent_reg = reg16;
- if (same_clock)
- reg16 |= PCI_EXP_LNKCTL_CCC;
- else
- reg16 &= ~PCI_EXP_LNKCTL_CCC;
- pcie_capability_write_word(parent, PCI_EXP_LNKCTL, reg16);
+ pcie_capability_clear_and_set_word(parent, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_CCC, ccc);
if (pcie_retrain_link(link)) {
/* Training failed. Restore common clock configurations */
pci_err(parent, "ASPM: Could not configure common clock\n");
list_for_each_entry(child, &linkbus->devices, bus_list)
- pcie_capability_write_word(child, PCI_EXP_LNKCTL,
- child_reg[PCI_FUNC(child->devfn)]);
- pcie_capability_write_word(parent, PCI_EXP_LNKCTL, parent_reg);
+ pcie_capability_clear_and_set_word(child, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_CCC,
+ child_old_ccc[PCI_FUNC(child->devfn)]);
+ pcie_capability_clear_and_set_word(parent, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_CCC, parent_old_ccc);
}
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 356/600] clk: qcom: gcc-sm8450: Use floor ops for SDCC RCGs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (354 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 355/600] PCI/ASPM: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 357/600] clk: imx: pllv4: Fix SPLL2 MULT range Greg Kroah-Hartman
` (254 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Vinod Koul,
Bjorn Andersson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit a27ac3806b0a0e6954fb5967223b8635242e5b8f ]
Use the floor ops to prevent warnings like this at suspend exit and boot:
mmc0: Card appears overclocked; req 800000 Hz, actual 25000000 Hz
Fixes: db0c944ee92b ("clk: qcom: Add clock driver for SM8450")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20230811-topic-8450_clk-v1-1-88031478d548@linaro.org
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/qcom/gcc-sm8450.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c
index 666efa5ff9780..59c567e76d656 100644
--- a/drivers/clk/qcom/gcc-sm8450.c
+++ b/drivers/clk/qcom/gcc-sm8450.c
@@ -904,7 +904,7 @@ static struct clk_rcg2 gcc_sdcc2_apps_clk_src = {
.parent_data = gcc_parent_data_7,
.num_parents = ARRAY_SIZE(gcc_parent_data_7),
.flags = CLK_SET_RATE_PARENT,
- .ops = &clk_rcg2_ops,
+ .ops = &clk_rcg2_floor_ops,
},
};
@@ -926,7 +926,7 @@ static struct clk_rcg2 gcc_sdcc4_apps_clk_src = {
.parent_data = gcc_parent_data_0,
.num_parents = ARRAY_SIZE(gcc_parent_data_0),
.flags = CLK_SET_RATE_PARENT,
- .ops = &clk_rcg2_ops,
+ .ops = &clk_rcg2_floor_ops,
},
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 357/600] clk: imx: pllv4: Fix SPLL2 MULT range
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (355 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 356/600] clk: qcom: gcc-sm8450: Use floor ops for SDCC RCGs Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 358/600] clk: imx: imx8ulp: update SPLL2 type Greg Kroah-Hartman
` (253 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Peng Fan, Jacky Bai, Ye Li,
Abel Vesa, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ye Li <ye.li@nxp.com>
[ Upstream commit 3f0cdb945471f1abd1cf4d172190e9c489c5052a ]
The SPLL2 on iMX8ULP is different with other frac PLLs, it can
support VCO from 650Mhz to 1Ghz. According to RM, the MULT is
using a range from 27 to 54, not some fixed values. If using
current PLL implementation, some clock rate can't be supported.
Fix the issue by adding new type for the SPLL2 and use MULT range
to replace MULT table
Fixes: 5f0601c47c33 ("clk: imx: Update the pllv4 to support imx8ulp")
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Jacky Bai <ping.bai@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20230625123340.4067536-1-peng.fan@oss.nxp.com
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/imx/clk-pllv4.c | 46 +++++++++++++++++++++++++++++--------
drivers/clk/imx/clk.h | 1 +
2 files changed, 37 insertions(+), 10 deletions(-)
diff --git a/drivers/clk/imx/clk-pllv4.c b/drivers/clk/imx/clk-pllv4.c
index 6e7e34571fc8d..9b136c951762c 100644
--- a/drivers/clk/imx/clk-pllv4.c
+++ b/drivers/clk/imx/clk-pllv4.c
@@ -44,11 +44,15 @@ struct clk_pllv4 {
u32 cfg_offset;
u32 num_offset;
u32 denom_offset;
+ bool use_mult_range;
};
/* Valid PLL MULT Table */
static const int pllv4_mult_table[] = {33, 27, 22, 20, 17, 16};
+/* Valid PLL MULT range, (max, min) */
+static const int pllv4_mult_range[] = {54, 27};
+
#define to_clk_pllv4(__hw) container_of(__hw, struct clk_pllv4, hw)
#define LOCK_TIMEOUT_US USEC_PER_MSEC
@@ -94,17 +98,30 @@ static unsigned long clk_pllv4_recalc_rate(struct clk_hw *hw,
static long clk_pllv4_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long *prate)
{
+ struct clk_pllv4 *pll = to_clk_pllv4(hw);
unsigned long parent_rate = *prate;
unsigned long round_rate, i;
u32 mfn, mfd = DEFAULT_MFD;
bool found = false;
u64 temp64;
-
- for (i = 0; i < ARRAY_SIZE(pllv4_mult_table); i++) {
- round_rate = parent_rate * pllv4_mult_table[i];
- if (rate >= round_rate) {
+ u32 mult;
+
+ if (pll->use_mult_range) {
+ temp64 = (u64)rate;
+ do_div(temp64, parent_rate);
+ mult = temp64;
+ if (mult >= pllv4_mult_range[1] &&
+ mult <= pllv4_mult_range[0]) {
+ round_rate = parent_rate * mult;
found = true;
- break;
+ }
+ } else {
+ for (i = 0; i < ARRAY_SIZE(pllv4_mult_table); i++) {
+ round_rate = parent_rate * pllv4_mult_table[i];
+ if (rate >= round_rate) {
+ found = true;
+ break;
+ }
}
}
@@ -138,14 +155,20 @@ static long clk_pllv4_round_rate(struct clk_hw *hw, unsigned long rate,
return round_rate + (u32)temp64;
}
-static bool clk_pllv4_is_valid_mult(unsigned int mult)
+static bool clk_pllv4_is_valid_mult(struct clk_pllv4 *pll, unsigned int mult)
{
int i;
/* check if mult is in valid MULT table */
- for (i = 0; i < ARRAY_SIZE(pllv4_mult_table); i++) {
- if (pllv4_mult_table[i] == mult)
+ if (pll->use_mult_range) {
+ if (mult >= pllv4_mult_range[1] &&
+ mult <= pllv4_mult_range[0])
return true;
+ } else {
+ for (i = 0; i < ARRAY_SIZE(pllv4_mult_table); i++) {
+ if (pllv4_mult_table[i] == mult)
+ return true;
+ }
}
return false;
@@ -160,7 +183,7 @@ static int clk_pllv4_set_rate(struct clk_hw *hw, unsigned long rate,
mult = rate / parent_rate;
- if (!clk_pllv4_is_valid_mult(mult))
+ if (!clk_pllv4_is_valid_mult(pll, mult))
return -EINVAL;
if (parent_rate <= MAX_MFD)
@@ -227,10 +250,13 @@ struct clk_hw *imx_clk_hw_pllv4(enum imx_pllv4_type type, const char *name,
pll->base = base;
- if (type == IMX_PLLV4_IMX8ULP) {
+ if (type == IMX_PLLV4_IMX8ULP ||
+ type == IMX_PLLV4_IMX8ULP_1GHZ) {
pll->cfg_offset = IMX8ULP_PLL_CFG_OFFSET;
pll->num_offset = IMX8ULP_PLL_NUM_OFFSET;
pll->denom_offset = IMX8ULP_PLL_DENOM_OFFSET;
+ if (type == IMX_PLLV4_IMX8ULP_1GHZ)
+ pll->use_mult_range = true;
} else {
pll->cfg_offset = PLL_CFG_OFFSET;
pll->num_offset = PLL_NUM_OFFSET;
diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h
index dd49f90110e8b..fb59131395f03 100644
--- a/drivers/clk/imx/clk.h
+++ b/drivers/clk/imx/clk.h
@@ -46,6 +46,7 @@ enum imx_pll14xx_type {
enum imx_pllv4_type {
IMX_PLLV4_IMX7ULP,
IMX_PLLV4_IMX8ULP,
+ IMX_PLLV4_IMX8ULP_1GHZ,
};
enum imx_pfdv2_type {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 358/600] clk: imx: imx8ulp: update SPLL2 type
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (356 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 357/600] clk: imx: pllv4: Fix SPLL2 MULT range Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 359/600] clk: imx8mp: fix sai4 clock Greg Kroah-Hartman
` (252 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Peng Fan, Abel Vesa, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peng Fan <peng.fan@nxp.com>
[ Upstream commit 7653a59be8af043adc4c09473975a860e6055ff9 ]
The SPLL2 on iMX8ULP is different with other frac PLLs, it can
support VCO from 650Mhz to 1Ghz. Following the changes to pllv4,
use the new type IMX_PLLV4_IMX8ULP_1GHZ.
Fixes: c43a801a5789 ("clk: imx: Add clock driver for imx8ulp")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Abel Vesa <abel.vesa@linaro.org>
Link: https://lore.kernel.org/r/20230625123340.4067536-2-peng.fan@oss.nxp.com
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/imx/clk-imx8ulp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/clk/imx/clk-imx8ulp.c b/drivers/clk/imx/clk-imx8ulp.c
index ca0e4a3aa454e..fa9121b3cf36a 100644
--- a/drivers/clk/imx/clk-imx8ulp.c
+++ b/drivers/clk/imx/clk-imx8ulp.c
@@ -167,7 +167,7 @@ static int imx8ulp_clk_cgc1_init(struct platform_device *pdev)
clks[IMX8ULP_CLK_SPLL2_PRE_SEL] = imx_clk_hw_mux_flags("spll2_pre_sel", base + 0x510, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
clks[IMX8ULP_CLK_SPLL3_PRE_SEL] = imx_clk_hw_mux_flags("spll3_pre_sel", base + 0x610, 0, 1, pll_pre_sels, ARRAY_SIZE(pll_pre_sels), CLK_SET_PARENT_GATE);
- clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll2", "spll2_pre_sel", base + 0x500);
+ clks[IMX8ULP_CLK_SPLL2] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP_1GHZ, "spll2", "spll2_pre_sel", base + 0x500);
clks[IMX8ULP_CLK_SPLL3] = imx_clk_hw_pllv4(IMX_PLLV4_IMX8ULP, "spll3", "spll3_pre_sel", base + 0x600);
clks[IMX8ULP_CLK_SPLL3_VCODIV] = imx_clk_hw_divider("spll3_vcodiv", "spll3", base + 0x604, 0, 6);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 359/600] clk: imx8mp: fix sai4 clock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (357 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 358/600] clk: imx: imx8ulp: update SPLL2 type Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 360/600] clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op Greg Kroah-Hartman
` (251 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stephen Boyd, Marco Felsch,
Abel Vesa, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marco Felsch <m.felsch@pengutronix.de>
[ Upstream commit c30f600f1f41dcf5ef0fb02e9a201f9b2e8f31bd ]
The reference manual don't mention a SAI4 hardware block. This would be
clock slice 78 which is skipped (TRM, page 237). Remove any reference to
this clock to align the driver with the reality.
Fixes: 9c140d992676 ("clk: imx: Add support for i.MX8MP clock driver")
Acked-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
Link: https://lore.kernel.org/r/20230731142150.3186650-1-m.felsch@pengutronix.de
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/imx/clk-imx8mp.c | 5 -----
1 file changed, 5 deletions(-)
diff --git a/drivers/clk/imx/clk-imx8mp.c b/drivers/clk/imx/clk-imx8mp.c
index 05c02f4e2a143..3d0d8f2c02dc1 100644
--- a/drivers/clk/imx/clk-imx8mp.c
+++ b/drivers/clk/imx/clk-imx8mp.c
@@ -177,10 +177,6 @@ static const char * const imx8mp_sai3_sels[] = {"osc_24m", "audio_pll1_out", "au
"video_pll1_out", "sys_pll1_133m", "osc_hdmi",
"clk_ext3", "clk_ext4", };
-static const char * const imx8mp_sai4_sels[] = {"osc_24m", "audio_pll1_out", "audio_pll2_out",
- "video_pll1_out", "sys_pll1_133m", "osc_hdmi",
- "clk_ext1", "clk_ext2", };
-
static const char * const imx8mp_sai5_sels[] = {"osc_24m", "audio_pll1_out", "audio_pll2_out",
"video_pll1_out", "sys_pll1_133m", "osc_hdmi",
"clk_ext2", "clk_ext3", };
@@ -566,7 +562,6 @@ static int imx8mp_clocks_probe(struct platform_device *pdev)
hws[IMX8MP_CLK_SAI1] = imx8m_clk_hw_composite("sai1", imx8mp_sai1_sels, ccm_base + 0xa580);
hws[IMX8MP_CLK_SAI2] = imx8m_clk_hw_composite("sai2", imx8mp_sai2_sels, ccm_base + 0xa600);
hws[IMX8MP_CLK_SAI3] = imx8m_clk_hw_composite("sai3", imx8mp_sai3_sels, ccm_base + 0xa680);
- hws[IMX8MP_CLK_SAI4] = imx8m_clk_hw_composite("sai4", imx8mp_sai4_sels, ccm_base + 0xa700);
hws[IMX8MP_CLK_SAI5] = imx8m_clk_hw_composite("sai5", imx8mp_sai5_sels, ccm_base + 0xa780);
hws[IMX8MP_CLK_SAI6] = imx8m_clk_hw_composite("sai6", imx8mp_sai6_sels, ccm_base + 0xa800);
hws[IMX8MP_CLK_ENET_QOS] = imx8m_clk_hw_composite("enet_qos", imx8mp_enet_qos_sels, ccm_base + 0xa880);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 360/600] clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (358 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 359/600] clk: imx8mp: fix sai4 clock Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 361/600] powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE Greg Kroah-Hartman
` (250 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ahmad Fatoum, Peng Fan, Abel Vesa,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
[ Upstream commit 4dd432d985ef258e3bc436e568fba4b987b59171 ]
Reconfiguring the clock divider to the exact same value is observed
on an i.MX8MN to often cause a longer than usual clock pause, probably
because the divider restarts counting whenever the register is rewritten.
This issue doesn't show up normally, because the clock framework will
take care to not call set_rate when the clock rate is the same.
However, when we reconfigure an upstream clock, the common code will
call set_rate with the newly calculated rate on all children, e.g.:
- sai5 is running normally and divides Audio PLL out by 16.
- Audio PLL rate is increased by 32Hz (glitch-free kdiv change)
- rates for children are recalculated and rates are set recursively
- imx8m_clk_composite_divider_set_rate(sai5) is called with
32/16 = 2Hz more
- imx8m_clk_composite_divider_set_rate computes same divider as before
- divider register is written, so it restarts counting from zero and
MCLK is briefly paused, so instead of e.g. 40ns, MCLK is low for 120ns.
Some external clock consumers can be upset by such unexpected clock pauses,
so let's make sure we only rewrite the divider value when the value to be
written is actually different.
Fixes: d3ff9728134e ("clk: imx: Add imx composite clock")
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20230807082201.2332746-1-a.fatoum@pengutronix.de
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/clk/imx/clk-composite-8m.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/drivers/clk/imx/clk-composite-8m.c b/drivers/clk/imx/clk-composite-8m.c
index cbf0d7955a00a..3e9a092e136c1 100644
--- a/drivers/clk/imx/clk-composite-8m.c
+++ b/drivers/clk/imx/clk-composite-8m.c
@@ -97,7 +97,7 @@ static int imx8m_clk_composite_divider_set_rate(struct clk_hw *hw,
int prediv_value;
int div_value;
int ret;
- u32 val;
+ u32 orig, val;
ret = imx8m_clk_composite_compute_dividers(rate, parent_rate,
&prediv_value, &div_value);
@@ -106,13 +106,15 @@ static int imx8m_clk_composite_divider_set_rate(struct clk_hw *hw,
spin_lock_irqsave(divider->lock, flags);
- val = readl(divider->reg);
- val &= ~((clk_div_mask(divider->width) << divider->shift) |
- (clk_div_mask(PCG_DIV_WIDTH) << PCG_DIV_SHIFT));
+ orig = readl(divider->reg);
+ val = orig & ~((clk_div_mask(divider->width) << divider->shift) |
+ (clk_div_mask(PCG_DIV_WIDTH) << PCG_DIV_SHIFT));
val |= (u32)(prediv_value - 1) << divider->shift;
val |= (u32)(div_value - 1) << PCG_DIV_SHIFT;
- writel(val, divider->reg);
+
+ if (val != orig)
+ writel(val, divider->reg);
spin_unlock_irqrestore(divider->lock, flags);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 361/600] powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (359 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 360/600] clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 362/600] vfio/type1: fix cap_migration information leak Greg Kroah-Hartman
` (249 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Christophe Leroy,
Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe Leroy <christophe.leroy@csgroup.eu>
[ Upstream commit 4a9dd8f292efd614f0a18452e6474fe19ae17b47 ]
With skiboot_defconfig, Clang reports:
CC arch/powerpc/mm/book3s64/radix_tlb.o
arch/powerpc/mm/book3s64/radix_tlb.c:419:20: error: unused function '_tlbie_pid_lpid' [-Werror,-Wunused-function]
static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
^
arch/powerpc/mm/book3s64/radix_tlb.c:663:20: error: unused function '_tlbie_va_range_lpid' [-Werror,-Wunused-function]
static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
^
This is because those functions are only called from functions
enclosed in a #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
Move below functions inside that #ifdef
* __tlbie_pid_lpid(unsigned long pid,
* __tlbie_va_lpid(unsigned long va, unsigned long pid,
* fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
* _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
* fixup_tlbie_va_range_lpid(unsigned long va,
* __tlbie_va_range_lpid(unsigned long start, unsigned long end,
* _tlbie_va_range_lpid(unsigned long start, unsigned long end,
Fixes: f0c6fbbb9050 ("KVM: PPC: Book3S HV: Add support for H_RPT_INVALIDATE")
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202307260802.Mjr99P5O-lkp@intel.com/
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/3d72efd39f986ee939d068af69fdce28bd600766.1691568093.git.christophe.leroy@csgroup.eu
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/mm/book3s64/radix_tlb.c | 240 ++++++++++++++-------------
1 file changed, 121 insertions(+), 119 deletions(-)
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index 6d7a1ef723e69..a8ba04dcb20fa 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -127,21 +127,6 @@ static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric)
trace_tlbie(0, 0, rb, rs, ric, prs, r);
}
-static __always_inline void __tlbie_pid_lpid(unsigned long pid,
- unsigned long lpid,
- unsigned long ric)
-{
- unsigned long rb, rs, prs, r;
-
- rb = PPC_BIT(53); /* IS = 1 */
- rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
- prs = 1; /* process scoped */
- r = 1; /* radix format */
-
- asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
- : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
- trace_tlbie(0, 0, rb, rs, ric, prs, r);
-}
static __always_inline void __tlbie_lpid(unsigned long lpid, unsigned long ric)
{
unsigned long rb,rs,prs,r;
@@ -202,23 +187,6 @@ static __always_inline void __tlbie_va(unsigned long va, unsigned long pid,
trace_tlbie(0, 0, rb, rs, ric, prs, r);
}
-static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
- unsigned long lpid,
- unsigned long ap, unsigned long ric)
-{
- unsigned long rb, rs, prs, r;
-
- rb = va & ~(PPC_BITMASK(52, 63));
- rb |= ap << PPC_BITLSHIFT(58);
- rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
- prs = 1; /* process scoped */
- r = 1; /* radix format */
-
- asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
- : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
- trace_tlbie(0, 0, rb, rs, ric, prs, r);
-}
-
static __always_inline void __tlbie_lpid_va(unsigned long va, unsigned long lpid,
unsigned long ap, unsigned long ric)
{
@@ -264,22 +232,6 @@ static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid,
}
}
-static inline void fixup_tlbie_va_range_lpid(unsigned long va,
- unsigned long pid,
- unsigned long lpid,
- unsigned long ap)
-{
- if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
- asm volatile("ptesync" : : : "memory");
- __tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
- }
-
- if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
- asm volatile("ptesync" : : : "memory");
- __tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
- }
-}
-
static inline void fixup_tlbie_pid(unsigned long pid)
{
/*
@@ -299,26 +251,6 @@ static inline void fixup_tlbie_pid(unsigned long pid)
}
}
-static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
-{
- /*
- * We can use any address for the invalidation, pick one which is
- * probably unused as an optimisation.
- */
- unsigned long va = ((1UL << 52) - 1);
-
- if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
- asm volatile("ptesync" : : : "memory");
- __tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
- }
-
- if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
- asm volatile("ptesync" : : : "memory");
- __tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
- RIC_FLUSH_TLB);
- }
-}
-
static inline void fixup_tlbie_lpid_va(unsigned long va, unsigned long lpid,
unsigned long ap)
{
@@ -416,31 +348,6 @@ static inline void _tlbie_pid(unsigned long pid, unsigned long ric)
asm volatile("eieio; tlbsync; ptesync": : :"memory");
}
-static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
- unsigned long ric)
-{
- asm volatile("ptesync" : : : "memory");
-
- /*
- * Workaround the fact that the "ric" argument to __tlbie_pid
- * must be a compile-time contraint to match the "i" constraint
- * in the asm statement.
- */
- switch (ric) {
- case RIC_FLUSH_TLB:
- __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
- fixup_tlbie_pid_lpid(pid, lpid);
- break;
- case RIC_FLUSH_PWC:
- __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
- break;
- case RIC_FLUSH_ALL:
- default:
- __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
- fixup_tlbie_pid_lpid(pid, lpid);
- }
- asm volatile("eieio; tlbsync; ptesync" : : : "memory");
-}
struct tlbiel_pid {
unsigned long pid;
unsigned long ric;
@@ -566,20 +473,6 @@ static inline void __tlbie_va_range(unsigned long start, unsigned long end,
fixup_tlbie_va_range(addr - page_size, pid, ap);
}
-static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
- unsigned long pid, unsigned long lpid,
- unsigned long page_size,
- unsigned long psize)
-{
- unsigned long addr;
- unsigned long ap = mmu_get_ap(psize);
-
- for (addr = start; addr < end; addr += page_size)
- __tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
-
- fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
-}
-
static __always_inline void _tlbie_va(unsigned long va, unsigned long pid,
unsigned long psize, unsigned long ric)
{
@@ -660,18 +553,6 @@ static inline void _tlbie_va_range(unsigned long start, unsigned long end,
asm volatile("eieio; tlbsync; ptesync": : :"memory");
}
-static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
- unsigned long pid, unsigned long lpid,
- unsigned long page_size,
- unsigned long psize, bool also_pwc)
-{
- asm volatile("ptesync" : : : "memory");
- if (also_pwc)
- __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
- __tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
- asm volatile("eieio; tlbsync; ptesync" : : : "memory");
-}
-
static inline void _tlbiel_va_range_multicast(struct mm_struct *mm,
unsigned long start, unsigned long end,
unsigned long pid, unsigned long page_size,
@@ -1476,6 +1357,127 @@ void radix__flush_tlb_all(void)
}
#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
+static __always_inline void __tlbie_pid_lpid(unsigned long pid,
+ unsigned long lpid,
+ unsigned long ric)
+{
+ unsigned long rb, rs, prs, r;
+
+ rb = PPC_BIT(53); /* IS = 1 */
+ rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+ prs = 1; /* process scoped */
+ r = 1; /* radix format */
+
+ asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+ : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+ trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
+
+static __always_inline void __tlbie_va_lpid(unsigned long va, unsigned long pid,
+ unsigned long lpid,
+ unsigned long ap, unsigned long ric)
+{
+ unsigned long rb, rs, prs, r;
+
+ rb = va & ~(PPC_BITMASK(52, 63));
+ rb |= ap << PPC_BITLSHIFT(58);
+ rs = (pid << PPC_BITLSHIFT(31)) | (lpid & ~(PPC_BITMASK(0, 31)));
+ prs = 1; /* process scoped */
+ r = 1; /* radix format */
+
+ asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
+ : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
+ trace_tlbie(0, 0, rb, rs, ric, prs, r);
+}
+
+static inline void fixup_tlbie_pid_lpid(unsigned long pid, unsigned long lpid)
+{
+ /*
+ * We can use any address for the invalidation, pick one which is
+ * probably unused as an optimisation.
+ */
+ unsigned long va = ((1UL << 52) - 1);
+
+ if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+ asm volatile("ptesync" : : : "memory");
+ __tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+ }
+
+ if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+ asm volatile("ptesync" : : : "memory");
+ __tlbie_va_lpid(va, pid, lpid, mmu_get_ap(MMU_PAGE_64K),
+ RIC_FLUSH_TLB);
+ }
+}
+
+static inline void _tlbie_pid_lpid(unsigned long pid, unsigned long lpid,
+ unsigned long ric)
+{
+ asm volatile("ptesync" : : : "memory");
+
+ /*
+ * Workaround the fact that the "ric" argument to __tlbie_pid
+ * must be a compile-time contraint to match the "i" constraint
+ * in the asm statement.
+ */
+ switch (ric) {
+ case RIC_FLUSH_TLB:
+ __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_TLB);
+ fixup_tlbie_pid_lpid(pid, lpid);
+ break;
+ case RIC_FLUSH_PWC:
+ __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+ break;
+ case RIC_FLUSH_ALL:
+ default:
+ __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_ALL);
+ fixup_tlbie_pid_lpid(pid, lpid);
+ }
+ asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
+
+static inline void fixup_tlbie_va_range_lpid(unsigned long va,
+ unsigned long pid,
+ unsigned long lpid,
+ unsigned long ap)
+{
+ if (cpu_has_feature(CPU_FTR_P9_TLBIE_ERAT_BUG)) {
+ asm volatile("ptesync" : : : "memory");
+ __tlbie_pid_lpid(0, lpid, RIC_FLUSH_TLB);
+ }
+
+ if (cpu_has_feature(CPU_FTR_P9_TLBIE_STQ_BUG)) {
+ asm volatile("ptesync" : : : "memory");
+ __tlbie_va_lpid(va, pid, lpid, ap, RIC_FLUSH_TLB);
+ }
+}
+
+static inline void __tlbie_va_range_lpid(unsigned long start, unsigned long end,
+ unsigned long pid, unsigned long lpid,
+ unsigned long page_size,
+ unsigned long psize)
+{
+ unsigned long addr;
+ unsigned long ap = mmu_get_ap(psize);
+
+ for (addr = start; addr < end; addr += page_size)
+ __tlbie_va_lpid(addr, pid, lpid, ap, RIC_FLUSH_TLB);
+
+ fixup_tlbie_va_range_lpid(addr - page_size, pid, lpid, ap);
+}
+
+static inline void _tlbie_va_range_lpid(unsigned long start, unsigned long end,
+ unsigned long pid, unsigned long lpid,
+ unsigned long page_size,
+ unsigned long psize, bool also_pwc)
+{
+ asm volatile("ptesync" : : : "memory");
+ if (also_pwc)
+ __tlbie_pid_lpid(pid, lpid, RIC_FLUSH_PWC);
+ __tlbie_va_range_lpid(start, end, pid, lpid, page_size, psize);
+ asm volatile("eieio; tlbsync; ptesync" : : : "memory");
+}
+
/*
* Performs process-scoped invalidations for a given LPID
* as part of H_RPT_INVALIDATE hcall.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 362/600] vfio/type1: fix cap_migration information leak
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (360 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 361/600] powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 363/600] nvdimm: Fix memleak of pmu attr_groups in unregister_nvdimm_pmu() Greg Kroah-Hartman
` (248 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stefan Hajnoczi, Kevin Tian,
Alex Williamson, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Stefan Hajnoczi <stefanha@redhat.com>
[ Upstream commit cd24e2a60af633f157d7e59c0a6dba64f131c0b1 ]
Fix an information leak where an uninitialized hole in struct
vfio_iommu_type1_info_cap_migration on the stack is exposed to userspace.
The definition of struct vfio_iommu_type1_info_cap_migration contains a hole as
shown in this pahole(1) output:
struct vfio_iommu_type1_info_cap_migration {
struct vfio_info_cap_header header; /* 0 8 */
__u32 flags; /* 8 4 */
/* XXX 4 bytes hole, try to pack */
__u64 pgsize_bitmap; /* 16 8 */
__u64 max_dirty_bitmap_size; /* 24 8 */
/* size: 32, cachelines: 1, members: 4 */
/* sum members: 28, holes: 1, sum holes: 4 */
/* last cacheline: 32 bytes */
};
The cap_mig variable is filled in without initializing the hole:
static int vfio_iommu_migration_build_caps(struct vfio_iommu *iommu,
struct vfio_info_cap *caps)
{
struct vfio_iommu_type1_info_cap_migration cap_mig;
cap_mig.header.id = VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION;
cap_mig.header.version = 1;
cap_mig.flags = 0;
/* support minimum pgsize */
cap_mig.pgsize_bitmap = (size_t)1 << __ffs(iommu->pgsize_bitmap);
cap_mig.max_dirty_bitmap_size = DIRTY_BITMAP_SIZE_MAX;
return vfio_info_add_capability(caps, &cap_mig.header, sizeof(cap_mig));
}
The structure is then copied to a temporary location on the heap. At this point
it's already too late and ioctl(VFIO_IOMMU_GET_INFO) copies it to userspace
later:
int vfio_info_add_capability(struct vfio_info_cap *caps,
struct vfio_info_cap_header *cap, size_t size)
{
struct vfio_info_cap_header *header;
header = vfio_info_cap_add(caps, size, cap->id, cap->version);
if (IS_ERR(header))
return PTR_ERR(header);
memcpy(header + 1, cap + 1, size - sizeof(*header));
return 0;
}
This issue was found by code inspection.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Fixes: ad721705d09c ("vfio iommu: Add migration capability to report supported features")
Link: https://lore.kernel.org/r/20230801155352.1391945-1-stefanha@redhat.com
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/vfio/vfio_iommu_type1.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 009ba186652ac..18a2dbbc77799 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -2822,7 +2822,7 @@ static int vfio_iommu_iova_build_caps(struct vfio_iommu *iommu,
static int vfio_iommu_migration_build_caps(struct vfio_iommu *iommu,
struct vfio_info_cap *caps)
{
- struct vfio_iommu_type1_info_cap_migration cap_mig;
+ struct vfio_iommu_type1_info_cap_migration cap_mig = {};
cap_mig.header.id = VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION;
cap_mig.header.version = 1;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 363/600] nvdimm: Fix memleak of pmu attr_groups in unregister_nvdimm_pmu()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (361 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 362/600] vfio/type1: fix cap_migration information leak Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 364/600] nvdimm: Fix dereference after free in register_nvdimm_pmu() Greg Kroah-Hartman
` (247 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konstantin Meskhidze, Jeff Moyer,
Dave Jiang, Sasha Levin, Ivanov Mikhail
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
[ Upstream commit 85ae42c72142346645e63c33835da947dfa008b3 ]
Memory pointed by 'nd_pmu->pmu.attr_groups' is allocated in function
'register_nvdimm_pmu' and is lost after 'kfree(nd_pmu)' call in function
'unregister_nvdimm_pmu'.
Fixes: 0fab1ba6ad6b ("drivers/nvdimm: Add perf interface to expose nvdimm performance stats")
Co-developed-by: Ivanov Mikhail <ivanov.mikhail1@huawei-partners.com>
Signed-off-by: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Link: https://lore.kernel.org/r/20230817115945.771826-1-konstantin.meskhidze@huawei.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/nvdimm/nd_perf.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/nvdimm/nd_perf.c b/drivers/nvdimm/nd_perf.c
index 433bbb68ae641..14881c4e03e6b 100644
--- a/drivers/nvdimm/nd_perf.c
+++ b/drivers/nvdimm/nd_perf.c
@@ -324,6 +324,7 @@ void unregister_nvdimm_pmu(struct nvdimm_pmu *nd_pmu)
{
perf_pmu_unregister(&nd_pmu->pmu);
nvdimm_pmu_free_hotplug_memory(nd_pmu);
+ kfree(nd_pmu->pmu.attr_groups);
kfree(nd_pmu);
}
EXPORT_SYMBOL_GPL(unregister_nvdimm_pmu);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 364/600] nvdimm: Fix dereference after free in register_nvdimm_pmu()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (362 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 363/600] nvdimm: Fix memleak of pmu attr_groups in unregister_nvdimm_pmu() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 365/600] powerpc/fadump: reset dump area size if fadump memory reserve fails Greg Kroah-Hartman
` (246 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konstantin Meskhidze, Jeff Moyer,
Dave Jiang, Sasha Levin, Ivanov Mikhail
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
[ Upstream commit 08ca6906a4b7e48f8e93b7c1f49a742a415be6d5 ]
'nd_pmu->pmu.attr_groups' is dereferenced in function
'nvdimm_pmu_free_hotplug_memory' call after it has been freed. Because in
function 'nvdimm_pmu_free_hotplug_memory' memory pointed by the fields of
'nd_pmu->pmu.attr_groups' is deallocated it is necessary to call 'kfree'
after 'nvdimm_pmu_free_hotplug_memory'.
Fixes: 0fab1ba6ad6b ("drivers/nvdimm: Add perf interface to expose nvdimm performance stats")
Co-developed-by: Ivanov Mikhail <ivanov.mikhail1@huawei-partners.com>
Signed-off-by: Konstantin Meskhidze <konstantin.meskhidze@huawei.com>
Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Link: https://lore.kernel.org/r/20230817114103.754977-1-konstantin.meskhidze@huawei.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/nvdimm/nd_perf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/nvdimm/nd_perf.c b/drivers/nvdimm/nd_perf.c
index 14881c4e03e6b..2b6dc80d8fb5b 100644
--- a/drivers/nvdimm/nd_perf.c
+++ b/drivers/nvdimm/nd_perf.c
@@ -308,8 +308,8 @@ int register_nvdimm_pmu(struct nvdimm_pmu *nd_pmu, struct platform_device *pdev)
rc = perf_pmu_register(&nd_pmu->pmu, nd_pmu->pmu.name, -1);
if (rc) {
- kfree(nd_pmu->pmu.attr_groups);
nvdimm_pmu_free_hotplug_memory(nd_pmu);
+ kfree(nd_pmu->pmu.attr_groups);
return rc;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 365/600] powerpc/fadump: reset dump area size if fadump memory reserve fails
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (363 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 364/600] nvdimm: Fix dereference after free in register_nvdimm_pmu() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 366/600] powerpc/perf: Convert fsl_emb notifier to state machine callbacks Greg Kroah-Hartman
` (245 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Sourabh Jain, Mahesh Salgaonkar,
Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sourabh Jain <sourabhjain@linux.ibm.com>
[ Upstream commit d1eb75e0dfed80d2d85b664e28a39f65b290ab55 ]
In case fadump_reserve_mem() fails to reserve memory, the
reserve_dump_area_size variable will retain the reserve area size. This
will lead to /sys/kernel/fadump/mem_reserved node displaying an incorrect
memory reserved by fadump.
To fix this problem, reserve dump area size variable is set to 0 if fadump
failed to reserve memory.
Fixes: 8255da95e545 ("powerpc/fadump: release all the memory above boot memory size")
Signed-off-by: Sourabh Jain <sourabhjain@linux.ibm.com>
Acked-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230704050715.203581-1-sourabhjain@linux.ibm.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/kernel/fadump.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
index ea0a073abd969..3ff2da7b120b5 100644
--- a/arch/powerpc/kernel/fadump.c
+++ b/arch/powerpc/kernel/fadump.c
@@ -654,6 +654,7 @@ int __init fadump_reserve_mem(void)
return ret;
error_out:
fw_dump.fadump_enabled = 0;
+ fw_dump.reserve_dump_area_size = 0;
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 366/600] powerpc/perf: Convert fsl_emb notifier to state machine callbacks
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (364 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 365/600] powerpc/fadump: reset dump area size if fadump memory reserve fails Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 367/600] drm/amdgpu: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
` (244 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe Leroy, Michael Ellerman,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe Leroy <christophe.leroy@csgroup.eu>
[ Upstream commit 34daf445f82bd3a4df852bb5f1dffd792ac830a0 ]
CC arch/powerpc/perf/core-fsl-emb.o
arch/powerpc/perf/core-fsl-emb.c:675:6: error: no previous prototype for 'hw_perf_event_setup' [-Werror=missing-prototypes]
675 | void hw_perf_event_setup(int cpu)
| ^~~~~~~~~~~~~~~~~~~
Looks like fsl_emb was completely missed by commit 3f6da3905398 ("perf:
Rework and fix the arch CPU-hotplug hooks")
So, apply same changes as commit 3f6da3905398 ("perf: Rework and fix
the arch CPU-hotplug hooks") then commit 57ecde42cc74 ("powerpc/perf:
Convert book3s notifier to state machine callbacks")
While at it, also fix following error:
arch/powerpc/perf/core-fsl-emb.c: In function 'perf_event_interrupt':
arch/powerpc/perf/core-fsl-emb.c:648:13: error: variable 'found' set but not used [-Werror=unused-but-set-variable]
648 | int found = 0;
| ^~~~~
Fixes: 3f6da3905398 ("perf: Rework and fix the arch CPU-hotplug hooks")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/603e1facb32608f88f40b7d7b9094adc50e7b2dc.1692349125.git.christophe.leroy@csgroup.eu
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/perf/core-fsl-emb.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/perf/core-fsl-emb.c b/arch/powerpc/perf/core-fsl-emb.c
index ee721f420a7ba..1a53ab08447cb 100644
--- a/arch/powerpc/perf/core-fsl-emb.c
+++ b/arch/powerpc/perf/core-fsl-emb.c
@@ -645,7 +645,6 @@ static void perf_event_interrupt(struct pt_regs *regs)
struct cpu_hw_events *cpuhw = this_cpu_ptr(&cpu_hw_events);
struct perf_event *event;
unsigned long val;
- int found = 0;
for (i = 0; i < ppmu->n_counter; ++i) {
event = cpuhw->event[i];
@@ -654,7 +653,6 @@ static void perf_event_interrupt(struct pt_regs *regs)
if ((int)val < 0) {
if (event) {
/* event has overflowed */
- found = 1;
record_and_restart(event, val, regs);
} else {
/*
@@ -672,11 +670,13 @@ static void perf_event_interrupt(struct pt_regs *regs)
isync();
}
-void hw_perf_event_setup(int cpu)
+static int fsl_emb_pmu_prepare_cpu(unsigned int cpu)
{
struct cpu_hw_events *cpuhw = &per_cpu(cpu_hw_events, cpu);
memset(cpuhw, 0, sizeof(*cpuhw));
+
+ return 0;
}
int register_fsl_emb_pmu(struct fsl_emb_pmu *pmu)
@@ -689,6 +689,8 @@ int register_fsl_emb_pmu(struct fsl_emb_pmu *pmu)
pmu->name);
perf_pmu_register(&fsl_emb_pmu, "cpu", PERF_TYPE_RAW);
+ cpuhp_setup_state(CPUHP_PERF_POWER, "perf/powerpc:prepare",
+ fsl_emb_pmu_prepare_cpu, NULL);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 367/600] drm/amdgpu: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (365 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 366/600] powerpc/perf: Convert fsl_emb notifier to state machine callbacks Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 368/600] drm/radeon: " Greg Kroah-Hartman
` (243 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit ce7d88110b9ed5f33fe79ea6d4ed049fb0e57bce ]
Don't assume that only the driver would be accessing LNKCTL. ASPM policy
changes can trigger write to LNKCTL outside of driver's control. And in
the case of upstream bridge, the driver does not even own the device it's
changing the registers for.
Use RMW capability accessors which do proper locking to avoid losing
concurrent updates to the register value.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: a2e73f56fa62 ("drm/amdgpu: Add support for CIK parts")
Fixes: 62a37553414a ("drm/amdgpu: add si implementation v10")
Link: https://lore.kernel.org/r/20230717120503.15276-6-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/cik.c | 36 +++++++++-----------------------
drivers/gpu/drm/amd/amdgpu/si.c | 36 +++++++++-----------------------
2 files changed, 20 insertions(+), 52 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/cik.c b/drivers/gpu/drm/amd/amdgpu/cik.c
index de6d10390ab2f..9be6da37032a7 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik.c
@@ -1574,17 +1574,8 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
u16 bridge_cfg2, gpu_cfg2;
u32 max_lw, current_lw, tmp;
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &bridge_cfg);
- pcie_capability_read_word(adev->pdev, PCI_EXP_LNKCTL,
- &gpu_cfg);
-
- tmp16 = bridge_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(root, PCI_EXP_LNKCTL, tmp16);
-
- tmp16 = gpu_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(adev->pdev, PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_set_word(root, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_set_word(adev->pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
tmp = RREG32_PCIE(ixPCIE_LC_STATUS1);
max_lw = (tmp & PCIE_LC_STATUS1__LC_DETECTED_LINK_WIDTH_MASK) >>
@@ -1637,21 +1628,14 @@ static void cik_pcie_gen3_enable(struct amdgpu_device *adev)
msleep(100);
/* linkctl */
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (bridge_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(root, PCI_EXP_LNKCTL,
- tmp16);
-
- pcie_capability_read_word(adev->pdev,
- PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (gpu_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(adev->pdev,
- PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_clear_and_set_word(root, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ bridge_cfg &
+ PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_clear_and_set_word(adev->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ gpu_cfg &
+ PCI_EXP_LNKCTL_HAWD);
/* linkctl2 */
pcie_capability_read_word(root, PCI_EXP_LNKCTL2,
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c
index 7f99e130acd06..fd34c2100bd96 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -2276,17 +2276,8 @@ static void si_pcie_gen3_enable(struct amdgpu_device *adev)
u16 bridge_cfg2, gpu_cfg2;
u32 max_lw, current_lw, tmp;
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &bridge_cfg);
- pcie_capability_read_word(adev->pdev, PCI_EXP_LNKCTL,
- &gpu_cfg);
-
- tmp16 = bridge_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(root, PCI_EXP_LNKCTL, tmp16);
-
- tmp16 = gpu_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(adev->pdev, PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_set_word(root, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_set_word(adev->pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
tmp = RREG32_PCIE(PCIE_LC_STATUS1);
max_lw = (tmp & LC_DETECTED_LINK_WIDTH_MASK) >> LC_DETECTED_LINK_WIDTH_SHIFT;
@@ -2331,21 +2322,14 @@ static void si_pcie_gen3_enable(struct amdgpu_device *adev)
mdelay(100);
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (bridge_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(root, PCI_EXP_LNKCTL,
- tmp16);
-
- pcie_capability_read_word(adev->pdev,
- PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (gpu_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(adev->pdev,
- PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_clear_and_set_word(root, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ bridge_cfg &
+ PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_clear_and_set_word(adev->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ gpu_cfg &
+ PCI_EXP_LNKCTL_HAWD);
pcie_capability_read_word(root, PCI_EXP_LNKCTL2,
&tmp16);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 368/600] drm/radeon: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (366 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 367/600] drm/amdgpu: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 369/600] net/mlx5: " Greg Kroah-Hartman
` (242 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Alex Deucher, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 7189576e8a829130192b33c5b64e8a475369c776 ]
Don't assume that only the driver would be accessing LNKCTL. ASPM policy
changes can trigger write to LNKCTL outside of driver's control. And in
the case of upstream bridge, the driver does not even own the device it's
changing the registers for.
Use RMW capability accessors which do proper locking to avoid losing
concurrent updates to the register value.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: 8a7cd27679d0 ("drm/radeon/cik: add support for pcie gen1/2/3 switching")
Fixes: b9d305dfb66c ("drm/radeon: implement pcie gen2/3 support for SI")
Link: https://lore.kernel.org/r/20230717120503.15276-7-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/gpu/drm/radeon/cik.c | 36 ++++++++++-------------------------
drivers/gpu/drm/radeon/si.c | 37 ++++++++++--------------------------
2 files changed, 20 insertions(+), 53 deletions(-)
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 5819737c21c67..a6f3c811ceb8e 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -9534,17 +9534,8 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev)
u16 bridge_cfg2, gpu_cfg2;
u32 max_lw, current_lw, tmp;
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &bridge_cfg);
- pcie_capability_read_word(rdev->pdev, PCI_EXP_LNKCTL,
- &gpu_cfg);
-
- tmp16 = bridge_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(root, PCI_EXP_LNKCTL, tmp16);
-
- tmp16 = gpu_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(rdev->pdev, PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_set_word(root, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_set_word(rdev->pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
tmp = RREG32_PCIE_PORT(PCIE_LC_STATUS1);
max_lw = (tmp & LC_DETECTED_LINK_WIDTH_MASK) >> LC_DETECTED_LINK_WIDTH_SHIFT;
@@ -9591,21 +9582,14 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev)
msleep(100);
/* linkctl */
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (bridge_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(root, PCI_EXP_LNKCTL,
- tmp16);
-
- pcie_capability_read_word(rdev->pdev,
- PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (gpu_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(rdev->pdev,
- PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_clear_and_set_word(root, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ bridge_cfg &
+ PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_clear_and_set_word(rdev->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ gpu_cfg &
+ PCI_EXP_LNKCTL_HAWD);
/* linkctl2 */
pcie_capability_read_word(root, PCI_EXP_LNKCTL2,
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 8d5e4b25609d5..a91012447b56e 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -7131,17 +7131,8 @@ static void si_pcie_gen3_enable(struct radeon_device *rdev)
u16 bridge_cfg2, gpu_cfg2;
u32 max_lw, current_lw, tmp;
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &bridge_cfg);
- pcie_capability_read_word(rdev->pdev, PCI_EXP_LNKCTL,
- &gpu_cfg);
-
- tmp16 = bridge_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(root, PCI_EXP_LNKCTL, tmp16);
-
- tmp16 = gpu_cfg | PCI_EXP_LNKCTL_HAWD;
- pcie_capability_write_word(rdev->pdev, PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_set_word(root, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_set_word(rdev->pdev, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_HAWD);
tmp = RREG32_PCIE(PCIE_LC_STATUS1);
max_lw = (tmp & LC_DETECTED_LINK_WIDTH_MASK) >> LC_DETECTED_LINK_WIDTH_SHIFT;
@@ -7188,22 +7179,14 @@ static void si_pcie_gen3_enable(struct radeon_device *rdev)
msleep(100);
/* linkctl */
- pcie_capability_read_word(root, PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (bridge_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(root,
- PCI_EXP_LNKCTL,
- tmp16);
-
- pcie_capability_read_word(rdev->pdev,
- PCI_EXP_LNKCTL,
- &tmp16);
- tmp16 &= ~PCI_EXP_LNKCTL_HAWD;
- tmp16 |= (gpu_cfg & PCI_EXP_LNKCTL_HAWD);
- pcie_capability_write_word(rdev->pdev,
- PCI_EXP_LNKCTL,
- tmp16);
+ pcie_capability_clear_and_set_word(root, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ bridge_cfg &
+ PCI_EXP_LNKCTL_HAWD);
+ pcie_capability_clear_and_set_word(rdev->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_HAWD,
+ gpu_cfg &
+ PCI_EXP_LNKCTL_HAWD);
/* linkctl2 */
pcie_capability_read_word(root, PCI_EXP_LNKCTL2,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 369/600] net/mlx5: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (367 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 368/600] drm/radeon: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 370/600] wifi: ath11k: " Greg Kroah-Hartman
` (241 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Moshe Shemesh, Simon Horman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 30de872537bda526664d7a20b646adfb3e7ce6e6 ]
Don't assume that only the driver would be accessing LNKCTL of the upstream
bridge. ASPM policy changes can trigger write to LNKCTL outside of driver's
control.
Use RMW capability accessors which do proper locking to avoid losing
concurrent updates to the register value.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: eabe8e5e88f5 ("net/mlx5: Handle sync reset now event")
Link: https://lore.kernel.org/r/20230717120503.15276-8-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c b/drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c
index d219f8417d93a..dec1492da74de 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c
@@ -319,16 +319,11 @@ static int mlx5_pci_link_toggle(struct mlx5_core_dev *dev)
pci_cfg_access_lock(sdev);
}
/* PCI link toggle */
- err = pci_read_config_word(bridge, cap + PCI_EXP_LNKCTL, ®16);
- if (err)
- return err;
- reg16 |= PCI_EXP_LNKCTL_LD;
- err = pci_write_config_word(bridge, cap + PCI_EXP_LNKCTL, reg16);
+ err = pcie_capability_set_word(bridge, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_LD);
if (err)
return err;
msleep(500);
- reg16 &= ~PCI_EXP_LNKCTL_LD;
- err = pci_write_config_word(bridge, cap + PCI_EXP_LNKCTL, reg16);
+ err = pcie_capability_clear_word(bridge, PCI_EXP_LNKCTL, PCI_EXP_LNKCTL_LD);
if (err)
return err;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 370/600] wifi: ath11k: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (368 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 369/600] net/mlx5: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 371/600] wifi: ath10k: " Greg Kroah-Hartman
` (240 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Simon Horman, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit 6c1b6bdb34aaf8f94f65a9cae1d63490320c11bc ]
Don't assume that only the driver would be accessing LNKCTL. ASPM policy
changes can trigger write to LNKCTL outside of driver's control.
Use RMW capability accessors which do proper locking to avoid losing
concurrent updates to the register value. On restore, clear the ASPMC field
properly.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: e9603f4bdcc0 ("ath11k: pci: disable ASPM L0sLs before downloading firmware")
Link: https://lore.kernel.org/r/20230717120503.15276-9-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath11k/pci.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c
index 3c6005ab9a717..3953ebd551bf8 100644
--- a/drivers/net/wireless/ath/ath11k/pci.c
+++ b/drivers/net/wireless/ath/ath11k/pci.c
@@ -582,8 +582,8 @@ static void ath11k_pci_aspm_disable(struct ath11k_pci *ab_pci)
u16_get_bits(ab_pci->link_ctl, PCI_EXP_LNKCTL_ASPM_L1));
/* disable L0s and L1 */
- pcie_capability_write_word(ab_pci->pdev, PCI_EXP_LNKCTL,
- ab_pci->link_ctl & ~PCI_EXP_LNKCTL_ASPMC);
+ pcie_capability_clear_word(ab_pci->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_ASPMC);
set_bit(ATH11K_PCI_ASPM_RESTORE, &ab_pci->flags);
}
@@ -591,8 +591,10 @@ static void ath11k_pci_aspm_disable(struct ath11k_pci *ab_pci)
static void ath11k_pci_aspm_restore(struct ath11k_pci *ab_pci)
{
if (test_and_clear_bit(ATH11K_PCI_ASPM_RESTORE, &ab_pci->flags))
- pcie_capability_write_word(ab_pci->pdev, PCI_EXP_LNKCTL,
- ab_pci->link_ctl);
+ pcie_capability_clear_and_set_word(ab_pci->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_ASPMC,
+ ab_pci->link_ctl &
+ PCI_EXP_LNKCTL_ASPMC);
}
static int ath11k_pci_power_up(struct ath11k_base *ab)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 371/600] wifi: ath10k: Use RMW accessors for changing LNKCTL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (369 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 370/600] wifi: ath11k: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 372/600] NFSv4.2: Rework scratch handling for READ_PLUS Greg Kroah-Hartman
` (239 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lukas Wunner, Ilpo Järvinen,
Bjorn Helgaas, Simon Horman, Kalle Valo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[ Upstream commit f139492a09f15254fa261245cdbd65555cdf39e3 ]
Don't assume that only the driver would be accessing LNKCTL. ASPM policy
changes can trigger write to LNKCTL outside of driver's control.
Use RMW capability accessors which does proper locking to avoid losing
concurrent updates to the register value. On restore, clear the ASPMC field
properly.
Suggested-by: Lukas Wunner <lukas@wunner.de>
Fixes: 76d870ed09ab ("ath10k: enable ASPM")
Link: https://lore.kernel.org/r/20230717120503.15276-11-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Acked-by: Kalle Valo <kvalo@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/net/wireless/ath/ath10k/pci.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index 728d607289c36..522691ba4c5d2 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -1963,8 +1963,9 @@ static int ath10k_pci_hif_start(struct ath10k *ar)
ath10k_pci_irq_enable(ar);
ath10k_pci_rx_post(ar);
- pcie_capability_write_word(ar_pci->pdev, PCI_EXP_LNKCTL,
- ar_pci->link_ctl);
+ pcie_capability_clear_and_set_word(ar_pci->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_ASPMC,
+ ar_pci->link_ctl & PCI_EXP_LNKCTL_ASPMC);
return 0;
}
@@ -2821,8 +2822,8 @@ static int ath10k_pci_hif_power_up(struct ath10k *ar,
pcie_capability_read_word(ar_pci->pdev, PCI_EXP_LNKCTL,
&ar_pci->link_ctl);
- pcie_capability_write_word(ar_pci->pdev, PCI_EXP_LNKCTL,
- ar_pci->link_ctl & ~PCI_EXP_LNKCTL_ASPMC);
+ pcie_capability_clear_word(ar_pci->pdev, PCI_EXP_LNKCTL,
+ PCI_EXP_LNKCTL_ASPMC);
/*
* Bring the target up cleanly.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 372/600] NFSv4.2: Rework scratch handling for READ_PLUS
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (370 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 371/600] wifi: ath10k: " Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 373/600] NFSv4.2: Fix READ_PLUS smatch warnings Greg Kroah-Hartman
` (238 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Anna Schumaker, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
[ Upstream commit fbd2a05f29a95d5b42b294bf47e55a711424965b ]
Instead of using a tiny, static scratch buffer, we should use a kmalloc()-ed
buffer that is allocated when checking for read plus usage. This lets us
use the buffer before decoding any part of the READ_PLUS operation
instead of setting it right before segment decoding, meaning it should
be a little more robust.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Stable-dep-of: bb05a617f06b ("NFSv4.2: Fix READ_PLUS smatch warnings")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs42xdr.c | 4 ++--
fs/nfs/nfs4proc.c | 17 ++++++++++++-----
include/linux/nfs_xdr.h | 1 +
3 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c
index 2fd465cab631d..08c1dd094f010 100644
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -1121,7 +1121,6 @@ static int decode_read_plus(struct xdr_stream *xdr, struct nfs_pgio_res *res)
uint32_t segments;
struct read_plus_segment *segs;
int status, i;
- char scratch_buf[16];
__be32 *p;
status = decode_op_hdr(xdr, OP_READ_PLUS);
@@ -1142,7 +1141,6 @@ static int decode_read_plus(struct xdr_stream *xdr, struct nfs_pgio_res *res)
if (!segs)
return -ENOMEM;
- xdr_set_scratch_buffer(xdr, &scratch_buf, sizeof(scratch_buf));
status = -EIO;
for (i = 0; i < segments; i++) {
status = decode_read_plus_segment(xdr, &segs[i]);
@@ -1347,6 +1345,8 @@ static int nfs4_xdr_dec_read_plus(struct rpc_rqst *rqstp,
struct compound_hdr hdr;
int status;
+ xdr_set_scratch_buffer(xdr, res->scratch, sizeof(res->scratch));
+
status = decode_compound_hdr(xdr, &hdr);
if (status)
goto out;
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 1044305e77996..3f96ccc386c34 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5446,6 +5446,8 @@ static bool nfs4_read_plus_not_supported(struct rpc_task *task,
static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
{
+ if (hdr->res.scratch)
+ kfree(hdr->res.scratch);
if (!nfs4_sequence_done(task, &hdr->res.seq_res))
return -EAGAIN;
if (nfs4_read_stateid_changed(task, &hdr->args))
@@ -5459,17 +5461,22 @@ static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
}
#if defined CONFIG_NFS_V4_2 && defined CONFIG_NFS_V4_2_READ_PLUS
-static void nfs42_read_plus_support(struct nfs_pgio_header *hdr,
+static bool nfs42_read_plus_support(struct nfs_pgio_header *hdr,
struct rpc_message *msg)
{
/* Note: We don't use READ_PLUS with pNFS yet */
- if (nfs_server_capable(hdr->inode, NFS_CAP_READ_PLUS) && !hdr->ds_clp)
+ if (nfs_server_capable(hdr->inode, NFS_CAP_READ_PLUS) && !hdr->ds_clp) {
msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ_PLUS];
+ hdr->res.scratch = kmalloc(32, GFP_KERNEL);
+ return hdr->res.scratch != NULL;
+ }
+ return false;
}
#else
-static void nfs42_read_plus_support(struct nfs_pgio_header *hdr,
+static bool nfs42_read_plus_support(struct nfs_pgio_header *hdr,
struct rpc_message *msg)
{
+ return false;
}
#endif /* CONFIG_NFS_V4_2 */
@@ -5479,8 +5486,8 @@ static void nfs4_proc_read_setup(struct nfs_pgio_header *hdr,
hdr->timestamp = jiffies;
if (!hdr->pgio_done_cb)
hdr->pgio_done_cb = nfs4_read_done_cb;
- msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
- nfs42_read_plus_support(hdr, msg);
+ if (!nfs42_read_plus_support(hdr, msg))
+ msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ];
nfs4_init_sequence(&hdr->args.seq_args, &hdr->res.seq_res, 0, 0);
}
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index e86cf6642d212..2fd973d188c47 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -670,6 +670,7 @@ struct nfs_pgio_res {
struct {
unsigned int replen; /* used by read */
int eof; /* used by read */
+ void * scratch; /* used by read */
};
struct {
struct nfs_writeverf * verf; /* used by write */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 373/600] NFSv4.2: Fix READ_PLUS smatch warnings
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (371 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 372/600] NFSv4.2: Rework scratch handling for READ_PLUS Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 374/600] NFSv4.2: Fix up READ_PLUS alignment Greg Kroah-Hartman
` (237 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Dan Carpenter,
Anna Schumaker, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
[ Upstream commit bb05a617f06b7a882e19c4f475b8e37f14d9ceac ]
Smatch reports:
fs/nfs/nfs42xdr.c:1131 decode_read_plus() warn: missing error code? 'status'
Which Dan suggests to fix by doing a hardcoded "return 0" from the
"if (segments == 0)" check.
Additionally, smatch reports that the "status = -EIO" assignment is not
used. This patch addresses both these issues.
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <error27@gmail.com>
Closes: https://lore.kernel.org/r/202305222209.6l5VM2lL-lkp@intel.com/
Fixes: d3b00a802c845 ("NFS: Replace the READ_PLUS decoding code")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs42xdr.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c
index 08c1dd094f010..ae034a1c53efd 100644
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -1135,13 +1135,12 @@ static int decode_read_plus(struct xdr_stream *xdr, struct nfs_pgio_res *res)
res->eof = be32_to_cpup(p++);
segments = be32_to_cpup(p++);
if (segments == 0)
- return status;
+ return 0;
segs = kmalloc_array(segments, sizeof(*segs), GFP_KERNEL);
if (!segs)
return -ENOMEM;
- status = -EIO;
for (i = 0; i < segments; i++) {
status = decode_read_plus_segment(xdr, &segs[i]);
if (status < 0)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 374/600] NFSv4.2: Fix up READ_PLUS alignment
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (372 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 373/600] NFSv4.2: Fix READ_PLUS smatch warnings Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 375/600] NFSv4.2: Fix READ_PLUS size calculations Greg Kroah-Hartman
` (236 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Anna Schumaker, Trond Myklebust,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
[ Upstream commit f8527028a7e52da884055c401abc04e0b0c84285 ]
Assume that the first segment will be a DATA segment, and place the data
directly into the xdr pages so it doesn't need to be shifted.
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Stable-dep-of: 8d18f6c5bb86 ("NFSv4.2: Fix READ_PLUS size calculations")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs42xdr.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c
index ae034a1c53efd..ef3b150970ff6 100644
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -47,13 +47,14 @@
#define decode_deallocate_maxsz (op_decode_hdr_maxsz)
#define encode_read_plus_maxsz (op_encode_hdr_maxsz + \
encode_stateid_maxsz + 3)
-#define NFS42_READ_PLUS_SEGMENT_SIZE (1 /* data_content4 */ + \
+#define NFS42_READ_PLUS_DATA_SEGMENT_SIZE \
+ (1 /* data_content4 */ + \
2 /* data_info4.di_offset */ + \
- 2 /* data_info4.di_length */)
+ 1 /* data_info4.di_length */)
#define decode_read_plus_maxsz (op_decode_hdr_maxsz + \
1 /* rpr_eof */ + \
1 /* rpr_contents count */ + \
- 2 * NFS42_READ_PLUS_SEGMENT_SIZE)
+ NFS42_READ_PLUS_DATA_SEGMENT_SIZE)
#define encode_seek_maxsz (op_encode_hdr_maxsz + \
encode_stateid_maxsz + \
2 /* offset */ + \
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 375/600] NFSv4.2: Fix READ_PLUS size calculations
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (373 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 374/600] NFSv4.2: Fix up READ_PLUS alignment Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 376/600] powerpc: Dont include lppaca.h in paca.h Greg Kroah-Hartman
` (235 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chuck Lever, Anna Schumaker,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
[ Upstream commit 8d18f6c5bb864d97a730f471c56cdecf313efe64 ]
I bump the decode_read_plus_maxsz to account for hole segments, but I
need to subtract out this increase when calling
rpc_prepare_reply_pages() so the common case of single data segment
replies can be directly placed into the xdr pages without needing to be
shifted around.
Reported-by: Chuck Lever <chuck.lever@oracle.com>
Fixes: d3b00a802c845 ("NFS: Replace the READ_PLUS decoding code")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs42xdr.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/fs/nfs/nfs42xdr.c b/fs/nfs/nfs42xdr.c
index ef3b150970ff6..75765382cc0e6 100644
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -51,10 +51,16 @@
(1 /* data_content4 */ + \
2 /* data_info4.di_offset */ + \
1 /* data_info4.di_length */)
+#define NFS42_READ_PLUS_HOLE_SEGMENT_SIZE \
+ (1 /* data_content4 */ + \
+ 2 /* data_info4.di_offset */ + \
+ 2 /* data_info4.di_length */)
+#define READ_PLUS_SEGMENT_SIZE_DIFF (NFS42_READ_PLUS_HOLE_SEGMENT_SIZE - \
+ NFS42_READ_PLUS_DATA_SEGMENT_SIZE)
#define decode_read_plus_maxsz (op_decode_hdr_maxsz + \
1 /* rpr_eof */ + \
1 /* rpr_contents count */ + \
- NFS42_READ_PLUS_DATA_SEGMENT_SIZE)
+ NFS42_READ_PLUS_HOLE_SEGMENT_SIZE)
#define encode_seek_maxsz (op_encode_hdr_maxsz + \
encode_stateid_maxsz + \
2 /* offset */ + \
@@ -781,8 +787,8 @@ static void nfs4_xdr_enc_read_plus(struct rpc_rqst *req,
encode_putfh(xdr, args->fh, &hdr);
encode_read_plus(xdr, args, &hdr);
- rpc_prepare_reply_pages(req, args->pages, args->pgbase,
- args->count, hdr.replen);
+ rpc_prepare_reply_pages(req, args->pages, args->pgbase, args->count,
+ hdr.replen - READ_PLUS_SEGMENT_SIZE_DIFF);
encode_nops(&hdr);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 376/600] powerpc: Dont include lppaca.h in paca.h
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (374 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 375/600] NFSv4.2: Fix READ_PLUS size calculations Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 377/600] powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT Greg Kroah-Hartman
` (234 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michael Ellerman <mpe@ellerman.id.au>
[ Upstream commit 1aa000667669fa855853decbb1c69e974d8ff716 ]
By adding a forward declaration for struct lppaca we can untangle paca.h
and lppaca.h. Also move get_lppaca() into lppaca.h for consistency.
Add includes of lppaca.h to some files that need it.
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230823055317.751786-3-mpe@ellerman.id.au
Stable-dep-of: eac030b22ea1 ("powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/include/asm/lppaca.h | 4 ++++
arch/powerpc/include/asm/paca.h | 6 +-----
arch/powerpc/include/asm/paravirt.h | 1 +
arch/powerpc/include/asm/plpar_wrappers.h | 1 +
arch/powerpc/kvm/book3s_hv_ras.c | 1 +
arch/powerpc/mm/book3s64/slb.c | 1 +
arch/powerpc/xmon/xmon.c | 1 +
7 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/include/asm/lppaca.h b/arch/powerpc/include/asm/lppaca.h
index 34d44cb17c874..fe278172e9d42 100644
--- a/arch/powerpc/include/asm/lppaca.h
+++ b/arch/powerpc/include/asm/lppaca.h
@@ -134,6 +134,10 @@ static inline bool lppaca_shared_proc(struct lppaca *l)
return !!(l->__old_status & LPPACA_OLD_SHARED_PROC);
}
+#ifdef CONFIG_PPC_PSERIES
+#define get_lppaca() (get_paca()->lppaca_ptr)
+#endif
+
/*
* SLB shadow buffer structure as defined in the PAPR. The save_area
* contains adjacent ESID and VSID pairs for each shadowed SLB. The
diff --git a/arch/powerpc/include/asm/paca.h b/arch/powerpc/include/asm/paca.h
index 0ab3511a47d77..183b5a251804c 100644
--- a/arch/powerpc/include/asm/paca.h
+++ b/arch/powerpc/include/asm/paca.h
@@ -15,7 +15,6 @@
#include <linux/cache.h>
#include <linux/string.h>
#include <asm/types.h>
-#include <asm/lppaca.h>
#include <asm/mmu.h>
#include <asm/page.h>
#ifdef CONFIG_PPC_BOOK3E_64
@@ -47,14 +46,11 @@ extern unsigned int debug_smp_processor_id(void); /* from linux/smp.h */
#define get_paca() local_paca
#endif
-#ifdef CONFIG_PPC_PSERIES
-#define get_lppaca() (get_paca()->lppaca_ptr)
-#endif
-
#define get_slb_shadow() (get_paca()->slb_shadow_ptr)
struct task_struct;
struct rtas_args;
+struct lppaca;
/*
* Defines the layout of the paca.
diff --git a/arch/powerpc/include/asm/paravirt.h b/arch/powerpc/include/asm/paravirt.h
index f5ba1a3c41f8e..e08513d731193 100644
--- a/arch/powerpc/include/asm/paravirt.h
+++ b/arch/powerpc/include/asm/paravirt.h
@@ -6,6 +6,7 @@
#include <asm/smp.h>
#ifdef CONFIG_PPC64
#include <asm/paca.h>
+#include <asm/lppaca.h>
#include <asm/hvcall.h>
#endif
diff --git a/arch/powerpc/include/asm/plpar_wrappers.h b/arch/powerpc/include/asm/plpar_wrappers.h
index 8239c0af5eb2b..fe3d0ea0058ac 100644
--- a/arch/powerpc/include/asm/plpar_wrappers.h
+++ b/arch/powerpc/include/asm/plpar_wrappers.h
@@ -9,6 +9,7 @@
#include <asm/hvcall.h>
#include <asm/paca.h>
+#include <asm/lppaca.h>
#include <asm/page.h>
static inline long poll_pending(void)
diff --git a/arch/powerpc/kvm/book3s_hv_ras.c b/arch/powerpc/kvm/book3s_hv_ras.c
index ccfd969656306..82be6d87514b7 100644
--- a/arch/powerpc/kvm/book3s_hv_ras.c
+++ b/arch/powerpc/kvm/book3s_hv_ras.c
@@ -9,6 +9,7 @@
#include <linux/kvm.h>
#include <linux/kvm_host.h>
#include <linux/kernel.h>
+#include <asm/lppaca.h>
#include <asm/opal.h>
#include <asm/mce.h>
#include <asm/machdep.h>
diff --git a/arch/powerpc/mm/book3s64/slb.c b/arch/powerpc/mm/book3s64/slb.c
index 6956f637a38c1..f2708c8629a52 100644
--- a/arch/powerpc/mm/book3s64/slb.c
+++ b/arch/powerpc/mm/book3s64/slb.c
@@ -13,6 +13,7 @@
#include <asm/mmu.h>
#include <asm/mmu_context.h>
#include <asm/paca.h>
+#include <asm/lppaca.h>
#include <asm/ppc-opcode.h>
#include <asm/cputable.h>
#include <asm/cacheflush.h>
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index bd8e80936f44d..cd692f399cd18 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -58,6 +58,7 @@
#ifdef CONFIG_PPC64
#include <asm/hvcall.h>
#include <asm/paca.h>
+#include <asm/lppaca.h>
#endif
#include "nonstdio.h"
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 377/600] powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (375 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 376/600] powerpc: Dont include lppaca.h in paca.h Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 378/600] nfs/blocklayout: Use the passed in gfp flags Greg Kroah-Hartman
` (233 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Russell Currey, Michael Ellerman,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Russell Currey <ruscur@russell.cc>
[ Upstream commit eac030b22ea12cdfcbb2e941c21c03964403c63f ]
lppaca_shared_proc() takes a pointer to the lppaca which is typically
accessed through get_lppaca(). With DEBUG_PREEMPT enabled, this leads
to checking if preemption is enabled, for example:
BUG: using smp_processor_id() in preemptible [00000000] code: grep/10693
caller is lparcfg_data+0x408/0x19a0
CPU: 4 PID: 10693 Comm: grep Not tainted 6.5.0-rc3 #2
Call Trace:
dump_stack_lvl+0x154/0x200 (unreliable)
check_preemption_disabled+0x214/0x220
lparcfg_data+0x408/0x19a0
...
This isn't actually a problem however, as it does not matter which
lppaca is accessed, the shared proc state will be the same.
vcpudispatch_stats_procfs_init() already works around this by disabling
preemption, but the lparcfg code does not, erroring any time
/proc/powerpc/lparcfg is accessed with DEBUG_PREEMPT enabled.
Instead of disabling preemption on the caller side, rework
lppaca_shared_proc() to not take a pointer and instead directly access
the lppaca, bypassing any potential preemption checks.
Fixes: f13c13a00512 ("powerpc: Stop using non-architected shared_proc field in lppaca")
Signed-off-by: Russell Currey <ruscur@russell.cc>
[mpe: Rework to avoid needing a definition in paca.h and lppaca.h]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230823055317.751786-4-mpe@ellerman.id.au
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/include/asm/lppaca.h | 11 +++++++++--
arch/powerpc/platforms/pseries/lpar.c | 10 +---------
arch/powerpc/platforms/pseries/lparcfg.c | 4 ++--
arch/powerpc/platforms/pseries/setup.c | 2 +-
drivers/cpuidle/cpuidle-pseries.c | 8 +-------
5 files changed, 14 insertions(+), 21 deletions(-)
diff --git a/arch/powerpc/include/asm/lppaca.h b/arch/powerpc/include/asm/lppaca.h
index fe278172e9d42..ee1488d38fdc1 100644
--- a/arch/powerpc/include/asm/lppaca.h
+++ b/arch/powerpc/include/asm/lppaca.h
@@ -45,6 +45,7 @@
#include <asm/types.h>
#include <asm/mmu.h>
#include <asm/firmware.h>
+#include <asm/paca.h>
/*
* The lppaca is the "virtual processor area" registered with the hypervisor,
@@ -127,14 +128,20 @@ struct lppaca {
*/
#define LPPACA_OLD_SHARED_PROC 2
-static inline bool lppaca_shared_proc(struct lppaca *l)
+#ifdef CONFIG_PPC_PSERIES
+/*
+ * All CPUs should have the same shared proc value, so directly access the PACA
+ * to avoid false positives from DEBUG_PREEMPT.
+ */
+static inline bool lppaca_shared_proc(void)
{
+ struct lppaca *l = local_paca->lppaca_ptr;
+
if (!firmware_has_feature(FW_FEATURE_SPLPAR))
return false;
return !!(l->__old_status & LPPACA_OLD_SHARED_PROC);
}
-#ifdef CONFIG_PPC_PSERIES
#define get_lppaca() (get_paca()->lppaca_ptr)
#endif
diff --git a/arch/powerpc/platforms/pseries/lpar.c b/arch/powerpc/platforms/pseries/lpar.c
index 97ef6499e5019..2c2812a87d470 100644
--- a/arch/powerpc/platforms/pseries/lpar.c
+++ b/arch/powerpc/platforms/pseries/lpar.c
@@ -638,16 +638,8 @@ static const struct proc_ops vcpudispatch_stats_freq_proc_ops = {
static int __init vcpudispatch_stats_procfs_init(void)
{
- /*
- * Avoid smp_processor_id while preemptible. All CPUs should have
- * the same value for lppaca_shared_proc.
- */
- preempt_disable();
- if (!lppaca_shared_proc(get_lppaca())) {
- preempt_enable();
+ if (!lppaca_shared_proc())
return 0;
- }
- preempt_enable();
if (!proc_create("powerpc/vcpudispatch_stats", 0600, NULL,
&vcpudispatch_stats_proc_ops))
diff --git a/arch/powerpc/platforms/pseries/lparcfg.c b/arch/powerpc/platforms/pseries/lparcfg.c
index 63fd925ccbb83..ca10a3682c46e 100644
--- a/arch/powerpc/platforms/pseries/lparcfg.c
+++ b/arch/powerpc/platforms/pseries/lparcfg.c
@@ -205,7 +205,7 @@ static void parse_ppp_data(struct seq_file *m)
ppp_data.active_system_procs);
/* pool related entries are appropriate for shared configs */
- if (lppaca_shared_proc(get_lppaca())) {
+ if (lppaca_shared_proc()) {
unsigned long pool_idle_time, pool_procs;
seq_printf(m, "pool=%d\n", ppp_data.pool_num);
@@ -616,7 +616,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
partition_potential_processors);
seq_printf(m, "shared_processor_mode=%d\n",
- lppaca_shared_proc(get_lppaca()));
+ lppaca_shared_proc());
#ifdef CONFIG_PPC_64S_HASH_MMU
if (!radix_enabled())
diff --git a/arch/powerpc/platforms/pseries/setup.c b/arch/powerpc/platforms/pseries/setup.c
index 8ef3270515a9b..a0701dbdb1348 100644
--- a/arch/powerpc/platforms/pseries/setup.c
+++ b/arch/powerpc/platforms/pseries/setup.c
@@ -846,7 +846,7 @@ static void __init pSeries_setup_arch(void)
if (firmware_has_feature(FW_FEATURE_LPAR)) {
vpa_init(boot_cpuid);
- if (lppaca_shared_proc(get_lppaca())) {
+ if (lppaca_shared_proc()) {
static_branch_enable(&shared_processor);
pv_spinlocks_init();
#ifdef CONFIG_PARAVIRT_TIME_ACCOUNTING
diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c
index 7e7ab5597d7ac..0590001db6532 100644
--- a/drivers/cpuidle/cpuidle-pseries.c
+++ b/drivers/cpuidle/cpuidle-pseries.c
@@ -410,13 +410,7 @@ static int __init pseries_idle_probe(void)
return -ENODEV;
if (firmware_has_feature(FW_FEATURE_SPLPAR)) {
- /*
- * Use local_paca instead of get_lppaca() since
- * preemption is not disabled, and it is not required in
- * fact, since lppaca_ptr does not need to be the value
- * associated to the current CPU, it can be from any CPU.
- */
- if (lppaca_shared_proc(local_paca->lppaca_ptr)) {
+ if (lppaca_shared_proc()) {
cpuidle_state_table = shared_states;
max_idle_state = ARRAY_SIZE(shared_states);
} else {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 378/600] nfs/blocklayout: Use the passed in gfp flags
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (376 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 377/600] powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 379/600] powerpc/pseries: Fix hcall tracepoints with JUMP_LABEL=n Greg Kroah-Hartman
` (232 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Christoph Hellwig,
Anna Schumaker, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit 08b45fcb2d4675f6182fe0edc0d8b1fe604051fa ]
This allocation should use the passed in GFP_ flags instead of
GFP_KERNEL. One places where this matters is in filelayout_pg_init_write()
which uses GFP_NOFS as the allocation flags.
Fixes: 5c83746a0cf2 ("pnfs/blocklayout: in-kernel GETDEVICEINFO XDR parsing")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/blocklayout/dev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c
index fea5f8821da5e..ce2ea62397972 100644
--- a/fs/nfs/blocklayout/dev.c
+++ b/fs/nfs/blocklayout/dev.c
@@ -402,7 +402,7 @@ bl_parse_concat(struct nfs_server *server, struct pnfs_block_dev *d,
int ret, i;
d->children = kcalloc(v->concat.volumes_count,
- sizeof(struct pnfs_block_dev), GFP_KERNEL);
+ sizeof(struct pnfs_block_dev), gfp_mask);
if (!d->children)
return -ENOMEM;
@@ -431,7 +431,7 @@ bl_parse_stripe(struct nfs_server *server, struct pnfs_block_dev *d,
int ret, i;
d->children = kcalloc(v->stripe.volumes_count,
- sizeof(struct pnfs_block_dev), GFP_KERNEL);
+ sizeof(struct pnfs_block_dev), gfp_mask);
if (!d->children)
return -ENOMEM;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 379/600] powerpc/pseries: Fix hcall tracepoints with JUMP_LABEL=n
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (377 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 378/600] nfs/blocklayout: Use the passed in gfp flags Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 380/600] powerpc/mpc5xxx: Add missing fwnode_handle_put() Greg Kroah-Hartman
` (231 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicholas Piggin, Michael Ellerman,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicholas Piggin <npiggin@gmail.com>
[ Upstream commit 750bd41aeaeb1f0e0128aa4f8fcd6dd759713641 ]
With JUMP_LABEL=n, hcall_tracepoint_refcount's address is being tested
instead of its value. This results in the tracing slowpath always being
taken unnecessarily.
Fixes: 9a10ccb29c0a2 ("powerpc/pseries: move hcall_tracepoint_refcount out of .toc")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230509091600.70994-1-npiggin@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/platforms/pseries/hvCall.S | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/powerpc/platforms/pseries/hvCall.S b/arch/powerpc/platforms/pseries/hvCall.S
index 762eb15d3bd42..fc50b9c27c1ba 100644
--- a/arch/powerpc/platforms/pseries/hvCall.S
+++ b/arch/powerpc/platforms/pseries/hvCall.S
@@ -89,6 +89,7 @@ BEGIN_FTR_SECTION; \
b 1f; \
END_FTR_SECTION(0, 1); \
LOAD_REG_ADDR(r12, hcall_tracepoint_refcount) ; \
+ ld r12,0(r12); \
std r12,32(r1); \
cmpdi r12,0; \
bne- LABEL; \
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 380/600] powerpc/mpc5xxx: Add missing fwnode_handle_put()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (378 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 379/600] powerpc/pseries: Fix hcall tracepoints with JUMP_LABEL=n Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 381/600] powerpc/iommu: Fix notifiers being shared by PCI and VIO buses Greg Kroah-Hartman
` (230 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Liang He, Michael Ellerman,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Liang He <windhl@126.com>
[ Upstream commit b9bbbf4979073d5536b7650decd37fcb901e6556 ]
In mpc5xxx_fwnode_get_bus_frequency(), we should add
fwnode_handle_put() when break out of the iteration
fwnode_for_each_parent_node() as it will automatically
increase and decrease the refcounter.
Fixes: de06fba62af6 ("powerpc/mpc5xxx: Switch mpc5xxx_get_bus_frequency() to use fwnode")
Signed-off-by: Liang He <windhl@126.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230322030423.1855440-1-windhl@126.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/sysdev/mpc5xxx_clocks.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/sysdev/mpc5xxx_clocks.c b/arch/powerpc/sysdev/mpc5xxx_clocks.c
index c5bf7e1b37804..58cee28e23992 100644
--- a/arch/powerpc/sysdev/mpc5xxx_clocks.c
+++ b/arch/powerpc/sysdev/mpc5xxx_clocks.c
@@ -25,8 +25,10 @@ unsigned long mpc5xxx_fwnode_get_bus_frequency(struct fwnode_handle *fwnode)
fwnode_for_each_parent_node(fwnode, parent) {
ret = fwnode_property_read_u32(parent, "bus-frequency", &bus_freq);
- if (!ret)
+ if (!ret) {
+ fwnode_handle_put(parent);
return bus_freq;
+ }
}
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 381/600] powerpc/iommu: Fix notifiers being shared by PCI and VIO buses
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (379 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 380/600] powerpc/mpc5xxx: Add missing fwnode_handle_put() Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 382/600] ext4: fix unttached inode after power cut with orphan file feature enabled Greg Kroah-Hartman
` (229 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nageswara R Sastry, Russell Currey,
Andrew Donnellan, Michael Ellerman, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Russell Currey <ruscur@russell.cc>
[ Upstream commit c37b6908f7b2bd24dcaaf14a180e28c9132b9c58 ]
fail_iommu_setup() registers the fail_iommu_bus_notifier struct to both
PCI and VIO buses. struct notifier_block is a linked list node, so this
causes any notifiers later registered to either bus type to also be
registered to the other since they share the same node.
This causes issues in (at least) the vgaarb code, which registers a
notifier for PCI buses. pci_notify() ends up being called on a vio
device, converted with to_pci_dev() even though it's not a PCI device,
and finally makes a bad access in vga_arbiter_add_pci_device() as
discovered with KASAN:
BUG: KASAN: slab-out-of-bounds in vga_arbiter_add_pci_device+0x60/0xe00
Read of size 4 at addr c000000264c26fdc by task swapper/0/1
Call Trace:
dump_stack_lvl+0x1bc/0x2b8 (unreliable)
print_report+0x3f4/0xc60
kasan_report+0x244/0x698
__asan_load4+0xe8/0x250
vga_arbiter_add_pci_device+0x60/0xe00
pci_notify+0x88/0x444
notifier_call_chain+0x104/0x320
blocking_notifier_call_chain+0xa0/0x140
device_add+0xac8/0x1d30
device_register+0x58/0x80
vio_register_device_node+0x9ac/0xce0
vio_bus_scan_register_devices+0xc4/0x13c
__machine_initcall_pseries_vio_device_init+0x94/0xf0
do_one_initcall+0x12c/0xaa8
kernel_init_freeable+0xa48/0xba8
kernel_init+0x64/0x400
ret_from_kernel_thread+0x5c/0x64
Fix this by creating separate notifier_block structs for each bus type.
Fixes: d6b9a81b2a45 ("powerpc: IOMMU fault injection")
Reported-by: Nageswara R Sastry <rnsastry@linux.ibm.com>
Signed-off-by: Russell Currey <ruscur@russell.cc>
Tested-by: Nageswara R Sastry <rnsastry@linux.ibm.com>
Reviewed-by: Andrew Donnellan <ajd@linux.ibm.com>
[mpe: Add #ifdef to fix CONFIG_IBMVIO=n build]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230322035322.328709-1-ruscur@russell.cc
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/powerpc/kernel/iommu.c | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index b8b7a189cd3ce..a612abe4bfd57 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -171,17 +171,28 @@ static int fail_iommu_bus_notify(struct notifier_block *nb,
return 0;
}
-static struct notifier_block fail_iommu_bus_notifier = {
+/*
+ * PCI and VIO buses need separate notifier_block structs, since they're linked
+ * list nodes. Sharing a notifier_block would mean that any notifiers later
+ * registered for PCI buses would also get called by VIO buses and vice versa.
+ */
+static struct notifier_block fail_iommu_pci_bus_notifier = {
.notifier_call = fail_iommu_bus_notify
};
+#ifdef CONFIG_IBMVIO
+static struct notifier_block fail_iommu_vio_bus_notifier = {
+ .notifier_call = fail_iommu_bus_notify
+};
+#endif
+
static int __init fail_iommu_setup(void)
{
#ifdef CONFIG_PCI
- bus_register_notifier(&pci_bus_type, &fail_iommu_bus_notifier);
+ bus_register_notifier(&pci_bus_type, &fail_iommu_pci_bus_notifier);
#endif
#ifdef CONFIG_IBMVIO
- bus_register_notifier(&vio_bus_type, &fail_iommu_bus_notifier);
+ bus_register_notifier(&vio_bus_type, &fail_iommu_vio_bus_notifier);
#endif
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 382/600] ext4: fix unttached inode after power cut with orphan file feature enabled
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (380 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 381/600] powerpc/iommu: Fix notifiers being shared by PCI and VIO buses Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 383/600] jfs: validate max amount of blocks before allocation Greg Kroah-Hartman
` (228 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zhihao Cheng, Jan Kara, Theodore Tso,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zhihao Cheng <chengzhihao1@huawei.com>
[ Upstream commit 1524773425ae8113b0b782886366e68656b34e53 ]
Running generic/475(filesystem consistent tests after power cut) could
easily trigger unattached inode error while doing fsck:
Unattached zero-length inode 39405. Clear? no
Unattached inode 39405
Connect to /lost+found? no
Above inconsistence is caused by following process:
P1 P2
ext4_create
inode = ext4_new_inode_start_handle // itable records nlink=1
ext4_add_nondir
err = ext4_add_entry // ENOSPC
ext4_append
ext4_bread
ext4_getblk
ext4_map_blocks // returns ENOSPC
drop_nlink(inode) // won't be updated into disk inode
ext4_orphan_add(handle, inode)
ext4_orphan_file_add
ext4_journal_stop(handle)
jbd2_journal_commit_transaction // commit success
>> power cut <<
ext4_fill_super
ext4_load_and_init_journal // itable records nlink=1
ext4_orphan_cleanup
ext4_process_orphan
if (inode->i_nlink) // true, inode won't be deleted
Then, allocated inode will be reserved on disk and corresponds to no
dentries, so e2fsck reports 'unattached inode' problem.
The problem won't happen if orphan file feature is disabled, because
ext4_orphan_add() will update disk inode in orphan list mode. There
are several places not updating disk inode while putting inode into
orphan area, such as ext4_add_nondir(), ext4_symlink() and whiteout
in ext4_rename(). Fix it by updating inode into disk in all error
branches of these places.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217605
Fixes: 02f310fcf47f ("ext4: Speedup ext4 orphan inode handling")
Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20230628132011.650383-1-chengzhihao1@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/ext4/namei.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 0e1aeb9cb4a7c..6a08fc31a66de 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -2799,6 +2799,7 @@ static int ext4_add_nondir(handle_t *handle,
return err;
}
drop_nlink(inode);
+ ext4_mark_inode_dirty(handle, inode);
ext4_orphan_add(handle, inode);
unlock_new_inode(inode);
return err;
@@ -3436,6 +3437,7 @@ static int ext4_symlink(struct user_namespace *mnt_userns, struct inode *dir,
err_drop_inode:
clear_nlink(inode);
+ ext4_mark_inode_dirty(handle, inode);
ext4_orphan_add(handle, inode);
unlock_new_inode(inode);
if (handle)
@@ -4021,6 +4023,7 @@ static int ext4_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
ext4_resetent(handle, &old,
old.inode->i_ino, old_file_type);
drop_nlink(whiteout);
+ ext4_mark_inode_dirty(handle, whiteout);
ext4_orphan_add(handle, whiteout);
}
unlock_new_inode(whiteout);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 383/600] jfs: validate max amount of blocks before allocation.
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (381 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 382/600] ext4: fix unttached inode after power cut with orphan file feature enabled Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 384/600] fs: lockd: avoid possible wrong NULL parameter Greg Kroah-Hartman
` (227 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Aleksei Filippov, Dave Kleikamp,
Sasha Levin, syzbot+5f088f29593e6b4c8db8
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexei Filippov <halip0503@gmail.com>
[ Upstream commit 0225e10972fa809728b8d4c1bd2772b3ec3fdb57 ]
The lack of checking bmp->db_max_freebud in extBalloc() can lead to
shift out of bounds, so this patch prevents undefined behavior, because
bmp->db_max_freebud == -1 only if there is no free space.
Signed-off-by: Aleksei Filippov <halip0503@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Reported-and-tested-by: syzbot+5f088f29593e6b4c8db8@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?id=01abadbd6ae6a08b1f1987aa61554c6b3ac19ff2
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/jfs/jfs_extent.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/jfs/jfs_extent.c b/fs/jfs/jfs_extent.c
index ae99a7e232eeb..a82751e6c47f9 100644
--- a/fs/jfs/jfs_extent.c
+++ b/fs/jfs/jfs_extent.c
@@ -311,6 +311,11 @@ extBalloc(struct inode *ip, s64 hint, s64 * nblocks, s64 * blkno)
* blocks in the map. in that case, we'll start off with the
* maximum free.
*/
+
+ /* give up if no space left */
+ if (bmp->db_maxfreebud == -1)
+ return -ENOSPC;
+
max = (s64) 1 << bmp->db_maxfreebud;
if (*nblocks >= max && *nblocks > nbperpage)
nb = nblks = (max > nbperpage) ? max : nbperpage;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 384/600] fs: lockd: avoid possible wrong NULL parameter
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (382 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 383/600] jfs: validate max amount of blocks before allocation Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 385/600] NFSD: da_addr_body field missing in some GETDEVICEINFO replies Greg Kroah-Hartman
` (226 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Su Hui, Nick Desaulniers,
Jeff Layton, Chuck Lever, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Su Hui <suhui@nfschina.com>
[ Upstream commit de8d38cf44bac43e83bad28357ba84784c412752 ]
clang's static analysis warning: fs/lockd/mon.c: line 293, column 2:
Null pointer passed as 2nd argument to memory copy function.
Assuming 'hostname' is NULL and calling 'nsm_create_handle()', this will
pass NULL as 2nd argument to memory copy function 'memcpy()'. So return
NULL if 'hostname' is invalid.
Fixes: 77a3ef33e2de ("NSM: More clean up of nsm_get_handle()")
Signed-off-by: Su Hui <suhui@nfschina.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/lockd/mon.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index 1d9488cf05348..87a0f207df0b9 100644
--- a/fs/lockd/mon.c
+++ b/fs/lockd/mon.c
@@ -276,6 +276,9 @@ static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
{
struct nsm_handle *new;
+ if (!hostname)
+ return NULL;
+
new = kzalloc(sizeof(*new) + hostname_len + 1, GFP_KERNEL);
if (unlikely(new == NULL))
return NULL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 385/600] NFSD: da_addr_body field missing in some GETDEVICEINFO replies
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (383 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 384/600] fs: lockd: avoid possible wrong NULL parameter Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 386/600] NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN Greg Kroah-Hartman
` (225 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christoph Hellwig, Tom Haynes,
Chuck Lever, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chuck Lever <chuck.lever@oracle.com>
[ Upstream commit 6372e2ee629894433fe6107d7048536a3280a284 ]
The XDR specification in RFC 8881 looks like this:
struct device_addr4 {
layouttype4 da_layout_type;
opaque da_addr_body<>;
};
struct GETDEVICEINFO4resok {
device_addr4 gdir_device_addr;
bitmap4 gdir_notification;
};
union GETDEVICEINFO4res switch (nfsstat4 gdir_status) {
case NFS4_OK:
GETDEVICEINFO4resok gdir_resok4;
case NFS4ERR_TOOSMALL:
count4 gdir_mincount;
default:
void;
};
Looking at nfsd4_encode_getdeviceinfo() ....
When the client provides a zero gd_maxcount, then the Linux NFS
server implementation encodes the da_layout_type field and then
skips the da_addr_body field completely, proceeding directly to
encode gdir_notification field.
There does not appear to be an option in the specification to skip
encoding da_addr_body. Moreover, Section 18.40.3 says:
> If the client wants to just update or turn off notifications, it
> MAY send a GETDEVICEINFO operation with gdia_maxcount set to zero.
> In that event, if the device ID is valid, the reply's da_addr_body
> field of the gdir_device_addr field will be of zero length.
Since the layout drivers are responsible for encoding the
da_addr_body field, put this fix inside the ->encode_getdeviceinfo
methods.
Fixes: 9cf514ccfacb ("nfsd: implement pNFS operations")
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Tom Haynes <loghyr@gmail.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfsd/blocklayoutxdr.c | 9 +++++++++
fs/nfsd/flexfilelayoutxdr.c | 9 +++++++++
fs/nfsd/nfs4xdr.c | 25 +++++++++++--------------
3 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/fs/nfsd/blocklayoutxdr.c b/fs/nfsd/blocklayoutxdr.c
index 442543304930b..2455dc8be18a8 100644
--- a/fs/nfsd/blocklayoutxdr.c
+++ b/fs/nfsd/blocklayoutxdr.c
@@ -82,6 +82,15 @@ nfsd4_block_encode_getdeviceinfo(struct xdr_stream *xdr,
int len = sizeof(__be32), ret, i;
__be32 *p;
+ /*
+ * See paragraph 5 of RFC 8881 S18.40.3.
+ */
+ if (!gdp->gd_maxcount) {
+ if (xdr_stream_encode_u32(xdr, 0) != XDR_UNIT)
+ return nfserr_resource;
+ return nfs_ok;
+ }
+
p = xdr_reserve_space(xdr, len + sizeof(__be32));
if (!p)
return nfserr_resource;
diff --git a/fs/nfsd/flexfilelayoutxdr.c b/fs/nfsd/flexfilelayoutxdr.c
index e81d2a5cf381e..bb205328e043d 100644
--- a/fs/nfsd/flexfilelayoutxdr.c
+++ b/fs/nfsd/flexfilelayoutxdr.c
@@ -85,6 +85,15 @@ nfsd4_ff_encode_getdeviceinfo(struct xdr_stream *xdr,
int addr_len;
__be32 *p;
+ /*
+ * See paragraph 5 of RFC 8881 S18.40.3.
+ */
+ if (!gdp->gd_maxcount) {
+ if (xdr_stream_encode_u32(xdr, 0) != XDR_UNIT)
+ return nfserr_resource;
+ return nfs_ok;
+ }
+
/* len + padding for two strings */
addr_len = 16 + da->netaddr.netid_len + da->netaddr.addr_len;
ver_len = 20;
diff --git a/fs/nfsd/nfs4xdr.c b/fs/nfsd/nfs4xdr.c
index 8f90a87ee9ca0..89a579be042e5 100644
--- a/fs/nfsd/nfs4xdr.c
+++ b/fs/nfsd/nfs4xdr.c
@@ -4571,20 +4571,17 @@ nfsd4_encode_getdeviceinfo(struct nfsd4_compoundres *resp, __be32 nfserr,
*p++ = cpu_to_be32(gdev->gd_layout_type);
- /* If maxcount is 0 then just update notifications */
- if (gdev->gd_maxcount != 0) {
- ops = nfsd4_layout_ops[gdev->gd_layout_type];
- nfserr = ops->encode_getdeviceinfo(xdr, gdev);
- if (nfserr) {
- /*
- * We don't bother to burden the layout drivers with
- * enforcing gd_maxcount, just tell the client to
- * come back with a bigger buffer if it's not enough.
- */
- if (xdr->buf->len + 4 > gdev->gd_maxcount)
- goto toosmall;
- return nfserr;
- }
+ ops = nfsd4_layout_ops[gdev->gd_layout_type];
+ nfserr = ops->encode_getdeviceinfo(xdr, gdev);
+ if (nfserr) {
+ /*
+ * We don't bother to burden the layout drivers with
+ * enforcing gd_maxcount, just tell the client to
+ * come back with a bigger buffer if it's not enough.
+ */
+ if (xdr->buf->len + 4 > gdev->gd_maxcount)
+ goto toosmall;
+ return nfserr;
}
if (gdev->gd_notify_types) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 386/600] NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (384 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 385/600] NFSD: da_addr_body field missing in some GETDEVICEINFO replies Greg Kroah-Hartman
@ 2023-09-11 13:46 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 387/600] NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ Greg Kroah-Hartman
` (224 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:46 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Benjamin Coddington, Anna Schumaker,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Coddington <bcodding@redhat.com>
[ Upstream commit f67b55b6588bcf9316a1e6e8d529100a5aa3ebe6 ]
Commit 64cfca85bacd asserts the only valid return values for
nfs2/3_decode_dirent should not include -ENAMETOOLONG, but for a server
that sends a filename3 which exceeds MAXNAMELEN in a READDIR response the
client's behavior will be to endlessly retry the operation.
We could map -ENAMETOOLONG into -EBADCOOKIE, but that would produce
truncated listings without any error. The client should return an error
for this case to clearly assert that the server implementation must be
corrected.
Fixes: 64cfca85bacd ("NFS: Return valid errors from nfs2/3_decode_dirent()")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs2xdr.c | 2 +-
fs/nfs/nfs3xdr.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index 05c3b4b2b3dd8..c190938142960 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -949,7 +949,7 @@ int nfs2_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
error = decode_filename_inline(xdr, &entry->name, &entry->len);
if (unlikely(error))
- return -EAGAIN;
+ return error == -ENAMETOOLONG ? -ENAMETOOLONG : -EAGAIN;
/*
* The type (size and byte order) of nfscookie isn't defined in
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index 3b0b650c9c5ab..60f032be805ae 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -1991,7 +1991,7 @@ int nfs3_decode_dirent(struct xdr_stream *xdr, struct nfs_entry *entry,
error = decode_inline_filename3(xdr, &entry->name, &entry->len);
if (unlikely(error))
- return -EAGAIN;
+ return error == -ENAMETOOLONG ? -ENAMETOOLONG : -EAGAIN;
error = decode_cookie3(xdr, &new_cookie);
if (unlikely(error))
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 387/600] NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (385 preceding siblings ...)
2023-09-11 13:46 ` [PATCH 6.1 386/600] NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 388/600] pNFS: Fix assignment of xprtdata.cred Greg Kroah-Hartman
` (223 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Olga Kornievskaia, Anna Schumaker,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Olga Kornievskaia <kolga@netapp.com>
[ Upstream commit 5690eed941ab7e33c3c3d6b850100cabf740f075 ]
If the client sent a synchronous copy and the server replied with
ERR_OFFLOAD_NO_REQ indicating that it wants an asynchronous
copy instead, the client should retry with asynchronous copy.
Fixes: 539f57b3e0fd ("NFS handle COPY ERR_OFFLOAD_NO_REQS")
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/nfs42proc.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 7c33bba179d2f..d903ea10410c2 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -470,8 +470,9 @@ ssize_t nfs42_proc_copy(struct file *src, loff_t pos_src,
continue;
}
break;
- } else if (err == -NFS4ERR_OFFLOAD_NO_REQS && !args.sync) {
- args.sync = true;
+ } else if (err == -NFS4ERR_OFFLOAD_NO_REQS &&
+ args.sync != res.synchronous) {
+ args.sync = res.synchronous;
dst_exception.retry = 1;
continue;
} else if ((err == -ESTALE ||
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 388/600] pNFS: Fix assignment of xprtdata.cred
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (386 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 387/600] NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 389/600] cgroup/cpuset: Inherit parents load balance state in v2 Greg Kroah-Hartman
` (222 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Olga Kornievskaia, Anna Schumaker,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
[ Upstream commit c4a123d2e8c4dc91d581ee7d05c0cd51a0273fab ]
The comma at the end of the line was leftover from an earlier refactor
of the _nfs4_pnfs_v3_ds_connect() function. This is technically valid C,
so the compilers didn't catch it, but if I'm understanding how it works
correctly it assigns the return value of rpc_clnt_add_xprtr() to
xprtdata.cred.
Reported-by: Olga Kornievskaia <kolga@netapp.com>
Fixes: a12f996d3413 ("NFSv4/pNFS: Use connections to a DS that are all of the same protocol family")
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/nfs/pnfs_nfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
index 5d035dd2d7bf0..47a8da3f5c9ff 100644
--- a/fs/nfs/pnfs_nfs.c
+++ b/fs/nfs/pnfs_nfs.c
@@ -943,7 +943,7 @@ static int _nfs4_pnfs_v4_ds_connect(struct nfs_server *mds_srv,
* Test this address for session trunking and
* add as an alias
*/
- xprtdata.cred = nfs4_get_clid_cred(clp),
+ xprtdata.cred = nfs4_get_clid_cred(clp);
rpc_clnt_add_xprt(clp->cl_rpcclient, &xprt_args,
rpc_clnt_setup_test_and_add_xprt,
&rpcdata);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 389/600] cgroup/cpuset: Inherit parents load balance state in v2
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (387 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 388/600] pNFS: Fix assignment of xprtdata.cred Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 390/600] RDMA/qedr: Remove a duplicate assignment in irdma_query_ah() Greg Kroah-Hartman
` (221 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Waiman Long, Tejun Heo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Waiman Long <longman@redhat.com>
[ Upstream commit c8c926200c55454101f072a4b16c9ff5b8c9e56f ]
Since commit f28e22441f35 ("cgroup/cpuset: Add a new isolated
cpus.partition type"), the CS_SCHED_LOAD_BALANCE bit of a v2 cpuset
can be on or off. The child cpusets of a partition root must have the
same setting as its parent or it may screw up the rebuilding of sched
domains. Fix this problem by making sure the a child v2 cpuset will
follows its parent cpuset load balance state unless the child cpuset
is a new partition root itself.
Fixes: f28e22441f35 ("cgroup/cpuset: Add a new isolated cpus.partition type")
Signed-off-by: Waiman Long <longman@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/cgroup/cpuset.c | 33 ++++++++++++++++++++++++++++++---
1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index db3e05b6b4dd2..79e6a5d4c29a1 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -1606,11 +1606,16 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp,
}
/*
- * Skip the whole subtree if the cpumask remains the same
- * and has no partition root state and force flag not set.
+ * Skip the whole subtree if
+ * 1) the cpumask remains the same,
+ * 2) has no partition root state,
+ * 3) force flag not set, and
+ * 4) for v2 load balance state same as its parent.
*/
if (!cp->partition_root_state && !force &&
- cpumask_equal(tmp->new_cpus, cp->effective_cpus)) {
+ cpumask_equal(tmp->new_cpus, cp->effective_cpus) &&
+ (!cgroup_subsys_on_dfl(cpuset_cgrp_subsys) ||
+ (is_sched_load_balance(parent) == is_sched_load_balance(cp)))) {
pos_css = css_rightmost_descendant(pos_css);
continue;
}
@@ -1693,6 +1698,20 @@ static void update_cpumasks_hier(struct cpuset *cs, struct tmpmasks *tmp,
update_tasks_cpumask(cp, tmp->new_cpus);
+ /*
+ * On default hierarchy, inherit the CS_SCHED_LOAD_BALANCE
+ * from parent if current cpuset isn't a valid partition root
+ * and their load balance states differ.
+ */
+ if (cgroup_subsys_on_dfl(cpuset_cgrp_subsys) &&
+ !is_partition_valid(cp) &&
+ (is_sched_load_balance(parent) != is_sched_load_balance(cp))) {
+ if (is_sched_load_balance(parent))
+ set_bit(CS_SCHED_LOAD_BALANCE, &cp->flags);
+ else
+ clear_bit(CS_SCHED_LOAD_BALANCE, &cp->flags);
+ }
+
/*
* On legacy hierarchy, if the effective cpumask of any non-
* empty cpuset is changed, we need to rebuild sched domains.
@@ -3213,6 +3232,14 @@ static int cpuset_css_online(struct cgroup_subsys_state *css)
cs->use_parent_ecpus = true;
parent->child_ecpus_count++;
}
+
+ /*
+ * For v2, clear CS_SCHED_LOAD_BALANCE if parent is isolated
+ */
+ if (cgroup_subsys_on_dfl(cpuset_cgrp_subsys) &&
+ !is_sched_load_balance(parent))
+ clear_bit(CS_SCHED_LOAD_BALANCE, &cs->flags);
+
spin_unlock_irq(&callback_lock);
if (!test_bit(CGRP_CPUSET_CLONE_CHILDREN, &css->cgroup->flags))
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 390/600] RDMA/qedr: Remove a duplicate assignment in irdma_query_ah()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (388 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 389/600] cgroup/cpuset: Inherit parents load balance state in v2 Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 391/600] media: ov5640: fix low resolution image abnormal issue Greg Kroah-Hartman
` (220 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Minjie Du, Alok Prasad,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Minjie Du <duminjie@vivo.com>
[ Upstream commit 65e02e840847158c7ee48ca8e6e91062b0f78662 ]
Delete a duplicate statement from this function implementation.
Fixes: b48c24c2d710 ("RDMA/irdma: Implement device supported verb APIs")
Signed-off-by: Minjie Du <duminjie@vivo.com>
Acked-by: Alok Prasad <palok@marvell.com>
Link: https://lore.kernel.org/r/20230706022704.1260-1-duminjie@vivo.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/irdma/verbs.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 6a8bb6ed4bf43..5962261f1b156 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -4354,7 +4354,6 @@ static int irdma_query_ah(struct ib_ah *ibah, struct rdma_ah_attr *ah_attr)
ah_attr->grh.traffic_class = ah->sc_ah.ah_info.tc_tos;
ah_attr->grh.hop_limit = ah->sc_ah.ah_info.hop_ttl;
ah_attr->grh.sgid_index = ah->sgid_index;
- ah_attr->grh.sgid_index = ah->sgid_index;
memcpy(&ah_attr->grh.dgid, &ah->dgid,
sizeof(ah_attr->grh.dgid));
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 391/600] media: ov5640: fix low resolution image abnormal issue
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (389 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 390/600] RDMA/qedr: Remove a duplicate assignment in irdma_query_ah() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 392/600] media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables Greg Kroah-Hartman
` (219 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Guoniu.zhou, Jacopo Mondi,
Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guoniu.zhou <guoniu.zhou@nxp.com>
[ Upstream commit a828002f38c5ee49d3f0c0e64c0f0caa1aec8dc2 ]
OV5640 will output abnormal image data when work at low resolution
(320x240, 176x144 and 160x120) after switching from high resolution,
such as 1080P, the time interval between high and low switching must
be less than 1000ms in order to OV5640 don't enter suspend state during
the time.
The reason is by 0x3824 value don't restore to initialize value when
do resolution switching. In high resolution setting array, 0x3824 is
set to 0x04, but low resolution setting array remove 0x3824 in commit
db15c1957a2d ("media: ov5640: Remove duplicated mode settings"). So
when do resolution switching from high to low, such as 1080P to 320x240,
and the time interval is less than auto suspend delay time which means
global initialize setting array will not be loaded, the output image
data are abnormal. Hence move 0x3824 from ov5640_init_setting[] table
to ov5640_setting_low_res[] table and also move 0x4407 0x460b, 0x460c
to avoid same issue.
Fixes: db15c1957a2d ("media: ov5640: Remove duplicated mode settings")
Signed-off-by: Guoniu.zhou <guoniu.zhou@nxp.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov5640.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index 267f514023e72..cc23ff2067f6a 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -557,9 +557,7 @@ static const struct reg_value ov5640_init_setting[] = {
{0x4001, 0x02, 0, 0}, {0x4004, 0x02, 0, 0}, {0x3000, 0x00, 0, 0},
{0x3002, 0x1c, 0, 0}, {0x3004, 0xff, 0, 0}, {0x3006, 0xc3, 0, 0},
{0x302e, 0x08, 0, 0}, {0x4300, 0x3f, 0, 0},
- {0x501f, 0x00, 0, 0}, {0x4407, 0x04, 0, 0},
- {0x440e, 0x00, 0, 0}, {0x460b, 0x35, 0, 0}, {0x460c, 0x22, 0, 0},
- {0x4837, 0x0a, 0, 0}, {0x3824, 0x02, 0, 0},
+ {0x501f, 0x00, 0, 0}, {0x440e, 0x00, 0, 0}, {0x4837, 0x0a, 0, 0},
{0x5000, 0xa7, 0, 0}, {0x5001, 0xa3, 0, 0}, {0x5180, 0xff, 0, 0},
{0x5181, 0xf2, 0, 0}, {0x5182, 0x00, 0, 0}, {0x5183, 0x14, 0, 0},
{0x5184, 0x25, 0, 0}, {0x5185, 0x24, 0, 0}, {0x5186, 0x09, 0, 0},
@@ -623,7 +621,8 @@ static const struct reg_value ov5640_setting_low_res[] = {
{0x3a0a, 0x00, 0, 0}, {0x3a0b, 0xf6, 0, 0}, {0x3a0e, 0x03, 0, 0},
{0x3a0d, 0x04, 0, 0}, {0x3a14, 0x03, 0, 0}, {0x3a15, 0xd8, 0, 0},
{0x4001, 0x02, 0, 0}, {0x4004, 0x02, 0, 0},
- {0x4407, 0x04, 0, 0}, {0x5001, 0xa3, 0, 0},
+ {0x4407, 0x04, 0, 0}, {0x460b, 0x35, 0, 0}, {0x460c, 0x22, 0, 0},
+ {0x3824, 0x02, 0, 0}, {0x5001, 0xa3, 0, 0},
};
static const struct reg_value ov5640_setting_720P_1280_720[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 392/600] media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (390 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 391/600] media: ov5640: fix low resolution image abnormal issue Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 393/600] media: i2c: tvp5150: check return value of devm_kasprintf() Greg Kroah-Hartman
` (218 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Pavel Machek,
Ricardo Ribalda Delgado, Hans de Goede, Ricardo Ribalda,
Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit f126ff7e4024f6704e6ec0d4137037568708a3c7 ]
The supported ad5820 and ad5821 VCMs both use a single 16 bit register
which is written by sending 2 bytes with the data directly after sending
the i2c-client address.
The ad5823 OTOH has a more typical i2c / smbus device setup with multiple
8 bit registers where the first byte send after the i2c-client address is
the register address and the actual data only starts from the second byte
after the i2c-client address.
The ad5823 i2c_ and of_device_id-s was added at the same time as
the ad5821 ids with as rationale:
"""
Some camera modules also refer that AD5823 is a replacement of AD5820:
https://download.kamami.com/p564094-OV8865_DS.pdf
"""
The AD5823 may be an electrical and functional replacement of the AD5820,
but from a software pov it is not compatible at all and it is going to
need its own driver, drop its id from the ad5820 driver.
Fixes: b8bf73136bae ("media: ad5820: Add support for ad5821 and ad5823")
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Ricardo Ribalda Delgado <ribalda@kernel.org>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ad5820.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/media/i2c/ad5820.c b/drivers/media/i2c/ad5820.c
index a12fedcc3a1ce..088c29c4e2529 100644
--- a/drivers/media/i2c/ad5820.c
+++ b/drivers/media/i2c/ad5820.c
@@ -356,7 +356,6 @@ static void ad5820_remove(struct i2c_client *client)
static const struct i2c_device_id ad5820_id_table[] = {
{ "ad5820", 0 },
{ "ad5821", 0 },
- { "ad5823", 0 },
{ }
};
MODULE_DEVICE_TABLE(i2c, ad5820_id_table);
@@ -364,7 +363,6 @@ MODULE_DEVICE_TABLE(i2c, ad5820_id_table);
static const struct of_device_id ad5820_of_table[] = {
{ .compatible = "adi,ad5820" },
{ .compatible = "adi,ad5821" },
- { .compatible = "adi,ad5823" },
{ }
};
MODULE_DEVICE_TABLE(of, ad5820_of_table);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 393/600] media: i2c: tvp5150: check return value of devm_kasprintf()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (391 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 392/600] media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 394/600] media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link() Greg Kroah-Hartman
` (217 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Claudiu Beznea, Marco Felsch,
Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Claudiu Beznea <claudiu.beznea@microchip.com>
[ Upstream commit 26ce7054d804be73935b9268d6e0ecf2fbbc8aef ]
devm_kasprintf() returns a pointer to dynamically allocated memory.
Pointer could be NULL in case allocation fails. Check pointer validity.
Identified with coccinelle (kmerr.cocci script).
Fixes: 0556f1d580d4 ("media: tvp5150: add input source selection of_graph support")
Signed-off-by: Claudiu Beznea <claudiu.beznea@microchip.com>
Reviewed-by: Marco Felsch <m.felsch@pengutronix.de>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/tvp5150.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/media/i2c/tvp5150.c b/drivers/media/i2c/tvp5150.c
index 859f1cb2fa744..84f87c016f9b5 100644
--- a/drivers/media/i2c/tvp5150.c
+++ b/drivers/media/i2c/tvp5150.c
@@ -2068,6 +2068,10 @@ static int tvp5150_parse_dt(struct tvp5150 *decoder, struct device_node *np)
tvpc->ent.name = devm_kasprintf(dev, GFP_KERNEL, "%s %s",
v4l2c->name, v4l2c->label ?
v4l2c->label : "");
+ if (!tvpc->ent.name) {
+ ret = -ENOMEM;
+ goto err_free;
+ }
}
ep_np = of_graph_get_endpoint_by_regs(np, TVP5150_PAD_VID_OUT, 0);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 394/600] media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (392 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 393/600] media: i2c: tvp5150: check return value of devm_kasprintf() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 395/600] iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind Greg Kroah-Hartman
` (216 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe JAILLET, Sakari Ailus,
Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
[ Upstream commit d7b13edd4cb4bfa335b6008ab867ac28582d3e5c ]
If fwnode_graph_get_remote_endpoint() fails, 'fwnode' is known to be NULL,
so fwnode_handle_put() is a no-op.
Release the reference taken from a previous fwnode_graph_get_port_parent()
call instead.
Also handle fwnode_graph_get_port_parent() failures.
In order to fix these issues, add an error handling path to the function
and the needed gotos.
Fixes: ca50c197bd96 ("[media] v4l: fwnode: Support generic fwnode for parsing standardised properties")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/v4l2-core/v4l2-fwnode.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/drivers/media/v4l2-core/v4l2-fwnode.c b/drivers/media/v4l2-core/v4l2-fwnode.c
index 3d85a8600f576..69c8b3b656860 100644
--- a/drivers/media/v4l2-core/v4l2-fwnode.c
+++ b/drivers/media/v4l2-core/v4l2-fwnode.c
@@ -551,19 +551,29 @@ int v4l2_fwnode_parse_link(struct fwnode_handle *fwnode,
link->local_id = fwep.id;
link->local_port = fwep.port;
link->local_node = fwnode_graph_get_port_parent(fwnode);
+ if (!link->local_node)
+ return -ENOLINK;
fwnode = fwnode_graph_get_remote_endpoint(fwnode);
- if (!fwnode) {
- fwnode_handle_put(fwnode);
- return -ENOLINK;
- }
+ if (!fwnode)
+ goto err_put_local_node;
fwnode_graph_parse_endpoint(fwnode, &fwep);
link->remote_id = fwep.id;
link->remote_port = fwep.port;
link->remote_node = fwnode_graph_get_port_parent(fwnode);
+ if (!link->remote_node)
+ goto err_put_remote_endpoint;
return 0;
+
+err_put_remote_endpoint:
+ fwnode_handle_put(fwnode);
+
+err_put_local_node:
+ fwnode_handle_put(link->local_node);
+
+ return -ENOLINK;
}
EXPORT_SYMBOL_GPL(v4l2_fwnode_parse_link);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 395/600] iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (393 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 394/600] media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 396/600] iommu: rockchip: Fix directory table address encoding Greg Kroah-Hartman
` (215 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Marcovitch, Vasant Hegde,
Joerg Roedel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniel Marcovitch <dmarcovitch@nvidia.com>
[ Upstream commit 534103bcd52ca9c1fecbc70e717b4a538dc4ded8 ]
When unbinding pasid - a race condition exists vs outstanding page faults.
To prevent this, the pasid_state object contains a refcount.
* set to 1 on pasid bind
* incremented on each ppr notification start
* decremented on each ppr notification done
* decremented on pasid unbind
Since refcount_dec assumes that refcount will never reach 0:
the current implementation causes the following to be invoked on
pasid unbind:
REFCOUNT_WARN("decrement hit 0; leaking memory")
Fix this issue by changing refcount_dec to refcount_dec_and_test
to explicitly handle refcount=1.
Fixes: 8bc54824da4e ("iommu/amd: Convert from atomic_t to refcount_t on pasid_state->count")
Signed-off-by: Daniel Marcovitch <dmarcovitch@nvidia.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Link: https://lore.kernel.org/r/20230609105146.7773-2-vasant.hegde@amd.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/amd/iommu_v2.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/amd/iommu_v2.c b/drivers/iommu/amd/iommu_v2.c
index 75355ddca6575..4caa023048a08 100644
--- a/drivers/iommu/amd/iommu_v2.c
+++ b/drivers/iommu/amd/iommu_v2.c
@@ -262,8 +262,8 @@ static void put_pasid_state(struct pasid_state *pasid_state)
static void put_pasid_state_wait(struct pasid_state *pasid_state)
{
- refcount_dec(&pasid_state->count);
- wait_event(pasid_state->wq, !refcount_read(&pasid_state->count));
+ if (!refcount_dec_and_test(&pasid_state->count))
+ wait_event(pasid_state->wq, !refcount_read(&pasid_state->count));
free_pasid_state(pasid_state);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 396/600] iommu: rockchip: Fix directory table address encoding
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (394 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 395/600] iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 397/600] drivers: usb: smsusb: fix error handling code in smsusb_init_device Greg Kroah-Hartman
` (214 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jonas Karlman, Robin Murphy,
Joerg Roedel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonas Karlman <jonas@kwiboo.se>
[ Upstream commit 6df63b7ebdaf5fcd75dceedf6967d0761e56eca1 ]
The physical address to the directory table is currently encoded using
the following bit layout for IOMMU v2.
31:12 - Address bit 31:0
11: 4 - Address bit 39:32
This is also the bit layout used by the vendor kernel.
However, testing has shown that addresses to the directory/page tables
and memory pages are all encoded using the same bit layout.
IOMMU v1:
31:12 - Address bit 31:0
IOMMU v2:
31:12 - Address bit 31:0
11: 8 - Address bit 35:32
7: 4 - Address bit 39:36
Change to use the mk_dtentries ops to encode the directory table address
correctly. The value written to DTE_ADDR may include the valid bit set,
a bit that is ignored and DTE_ADDR reg read it back as 0.
This also update the bit layout comment for the page address and the
number of nybbles that are read back for DTE_ADDR comment.
These changes render the dte_addr_phys and dma_addr_dte ops unused and
is removed.
Fixes: 227014b33f62 ("iommu: rockchip: Add internal ops to handle variants")
Fixes: c55356c534aa ("iommu: rockchip: Add support for iommu v2")
Fixes: c987b65a574f ("iommu/rockchip: Fix physical address decoding")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Link: https://lore.kernel.org/r/20230617182540.3091374-2-jonas@kwiboo.se
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/rockchip-iommu.c | 43 ++++------------------------------
1 file changed, 5 insertions(+), 38 deletions(-)
diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c
index f7e9b56be174f..43bb577a26e59 100644
--- a/drivers/iommu/rockchip-iommu.c
+++ b/drivers/iommu/rockchip-iommu.c
@@ -98,8 +98,6 @@ struct rk_iommu_ops {
phys_addr_t (*pt_address)(u32 dte);
u32 (*mk_dtentries)(dma_addr_t pt_dma);
u32 (*mk_ptentries)(phys_addr_t page, int prot);
- phys_addr_t (*dte_addr_phys)(u32 addr);
- u32 (*dma_addr_dte)(dma_addr_t dt_dma);
u64 dma_bit_mask;
};
@@ -277,8 +275,8 @@ static u32 rk_mk_pte(phys_addr_t page, int prot)
/*
* In v2:
* 31:12 - Page address bit 31:0
- * 11:9 - Page address bit 34:32
- * 8:4 - Page address bit 39:35
+ * 11: 8 - Page address bit 35:32
+ * 7: 4 - Page address bit 39:36
* 3 - Security
* 2 - Writable
* 1 - Readable
@@ -505,7 +503,7 @@ static int rk_iommu_force_reset(struct rk_iommu *iommu)
/*
* Check if register DTE_ADDR is working by writing DTE_ADDR_DUMMY
- * and verifying that upper 5 nybbles are read back.
+ * and verifying that upper 5 (v1) or 7 (v2) nybbles are read back.
*/
for (i = 0; i < iommu->num_mmu; i++) {
dte_addr = rk_ops->pt_address(DTE_ADDR_DUMMY);
@@ -530,33 +528,6 @@ static int rk_iommu_force_reset(struct rk_iommu *iommu)
return 0;
}
-static inline phys_addr_t rk_dte_addr_phys(u32 addr)
-{
- return (phys_addr_t)addr;
-}
-
-static inline u32 rk_dma_addr_dte(dma_addr_t dt_dma)
-{
- return dt_dma;
-}
-
-#define DT_HI_MASK GENMASK_ULL(39, 32)
-#define DTE_BASE_HI_MASK GENMASK(11, 4)
-#define DT_SHIFT 28
-
-static inline phys_addr_t rk_dte_addr_phys_v2(u32 addr)
-{
- u64 addr64 = addr;
- return (phys_addr_t)(addr64 & RK_DTE_PT_ADDRESS_MASK) |
- ((addr64 & DTE_BASE_HI_MASK) << DT_SHIFT);
-}
-
-static inline u32 rk_dma_addr_dte_v2(dma_addr_t dt_dma)
-{
- return (dt_dma & RK_DTE_PT_ADDRESS_MASK) |
- ((dt_dma & DT_HI_MASK) >> DT_SHIFT);
-}
-
static void log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova)
{
void __iomem *base = iommu->bases[index];
@@ -576,7 +547,7 @@ static void log_iova(struct rk_iommu *iommu, int index, dma_addr_t iova)
page_offset = rk_iova_page_offset(iova);
mmu_dte_addr = rk_iommu_read(base, RK_MMU_DTE_ADDR);
- mmu_dte_addr_phys = rk_ops->dte_addr_phys(mmu_dte_addr);
+ mmu_dte_addr_phys = rk_ops->pt_address(mmu_dte_addr);
dte_addr_phys = mmu_dte_addr_phys + (4 * dte_index);
dte_addr = phys_to_virt(dte_addr_phys);
@@ -966,7 +937,7 @@ static int rk_iommu_enable(struct rk_iommu *iommu)
for (i = 0; i < iommu->num_mmu; i++) {
rk_iommu_write(iommu->bases[i], RK_MMU_DTE_ADDR,
- rk_ops->dma_addr_dte(rk_domain->dt_dma));
+ rk_ops->mk_dtentries(rk_domain->dt_dma));
rk_iommu_base_command(iommu->bases[i], RK_MMU_CMD_ZAP_CACHE);
rk_iommu_write(iommu->bases[i], RK_MMU_INT_MASK, RK_MMU_IRQ_MASK);
}
@@ -1373,8 +1344,6 @@ static struct rk_iommu_ops iommu_data_ops_v1 = {
.pt_address = &rk_dte_pt_address,
.mk_dtentries = &rk_mk_dte,
.mk_ptentries = &rk_mk_pte,
- .dte_addr_phys = &rk_dte_addr_phys,
- .dma_addr_dte = &rk_dma_addr_dte,
.dma_bit_mask = DMA_BIT_MASK(32),
};
@@ -1382,8 +1351,6 @@ static struct rk_iommu_ops iommu_data_ops_v2 = {
.pt_address = &rk_dte_pt_address_v2,
.mk_dtentries = &rk_mk_dte_v2,
.mk_ptentries = &rk_mk_pte_v2,
- .dte_addr_phys = &rk_dte_addr_phys_v2,
- .dma_addr_dte = &rk_dma_addr_dte_v2,
.dma_bit_mask = DMA_BIT_MASK(40),
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 397/600] drivers: usb: smsusb: fix error handling code in smsusb_init_device
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (395 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 396/600] iommu: rockchip: Fix directory table address encoding Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 398/600] media: dib7000p: Fix potential division by zero Greg Kroah-Hartman
` (213 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dongliang Mu, Hans Verkuil,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dongliang Mu <dzm91@hust.edu.cn>
[ Upstream commit b9c7141f384097fa4fa67d2f72e5731d628aef7c ]
The previous commit 4b208f8b561f ("[media] siano: register media controller
earlier")moves siano_media_device_register before smscore_register_device,
and adds corresponding error handling code if smscore_register_device
fails. However, it misses the following error handling code of
smsusb_init_device.
Fix this by moving error handling code at the end of smsusb_init_device
and adding a goto statement in the following error handling parts.
Fixes: 4b208f8b561f ("[media] siano: register media controller earlier")
Signed-off-by: Dongliang Mu <dzm91@hust.edu.cn>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/usb/siano/smsusb.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/drivers/media/usb/siano/smsusb.c b/drivers/media/usb/siano/smsusb.c
index 640737d3b8aeb..8a39cac76c585 100644
--- a/drivers/media/usb/siano/smsusb.c
+++ b/drivers/media/usb/siano/smsusb.c
@@ -455,12 +455,7 @@ static int smsusb_init_device(struct usb_interface *intf, int board_id)
rc = smscore_register_device(¶ms, &dev->coredev, 0, mdev);
if (rc < 0) {
pr_err("smscore_register_device(...) failed, rc %d\n", rc);
- smsusb_term_device(intf);
-#ifdef CONFIG_MEDIA_CONTROLLER_DVB
- media_device_unregister(mdev);
-#endif
- kfree(mdev);
- return rc;
+ goto err_unregister_device;
}
smscore_set_board_id(dev->coredev, board_id);
@@ -477,8 +472,7 @@ static int smsusb_init_device(struct usb_interface *intf, int board_id)
rc = smsusb_start_streaming(dev);
if (rc < 0) {
pr_err("smsusb_start_streaming(...) failed\n");
- smsusb_term_device(intf);
- return rc;
+ goto err_unregister_device;
}
dev->state = SMSUSB_ACTIVE;
@@ -486,13 +480,20 @@ static int smsusb_init_device(struct usb_interface *intf, int board_id)
rc = smscore_start_device(dev->coredev);
if (rc < 0) {
pr_err("smscore_start_device(...) failed\n");
- smsusb_term_device(intf);
- return rc;
+ goto err_unregister_device;
}
pr_debug("device 0x%p created\n", dev);
return rc;
+
+err_unregister_device:
+ smsusb_term_device(intf);
+#ifdef CONFIG_MEDIA_CONTROLLER_DVB
+ media_device_unregister(mdev);
+#endif
+ kfree(mdev);
+ return rc;
}
static int smsusb_probe(struct usb_interface *intf,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 398/600] media: dib7000p: Fix potential division by zero
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (396 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 397/600] drivers: usb: smsusb: fix error handling code in smsusb_init_device Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 399/600] media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() Greg Kroah-Hartman
` (212 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Daniil Dulov, Hans Verkuil,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniil Dulov <d.dulov@aladdin.ru>
[ Upstream commit a1db7b2c5533fc67e2681eb5efc921a67bc7d5b8 ]
Variable loopdiv can be assigned 0, then it is used as a denominator,
without checking it for 0.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: 713d54a8bd81 ("[media] DiB7090: add support for the dib7090 based")
Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[hverkuil: (bw != NULL) -> bw]
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/dvb-frontends/dib7000p.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/dvb-frontends/dib7000p.c b/drivers/media/dvb-frontends/dib7000p.c
index a90d2f51868ff..632534eff0ffa 100644
--- a/drivers/media/dvb-frontends/dib7000p.c
+++ b/drivers/media/dvb-frontends/dib7000p.c
@@ -497,7 +497,7 @@ static int dib7000p_update_pll(struct dvb_frontend *fe, struct dibx000_bandwidth
prediv = reg_1856 & 0x3f;
loopdiv = (reg_1856 >> 6) & 0x3f;
- if ((bw != NULL) && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) {
+ if (loopdiv && bw && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) {
dprintk("Updating pll (prediv: old = %d new = %d ; loopdiv : old = %d new = %d)\n", prediv, bw->pll_prediv, loopdiv, bw->pll_ratio);
reg_1856 &= 0xf000;
reg_1857 = dib7000p_read_word(state, 1857);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 399/600] media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (397 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 398/600] media: dib7000p: Fix potential division by zero Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 400/600] media: cx24120: Add retval check for cx24120_message_send() Greg Kroah-Hartman
` (211 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christophe JAILLET, Hans Verkuil,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
[ Upstream commit ea9ef6c2e001c5dc94bee35ebd1c8a98621cf7b8 ]
'read' is freed when it is known to be NULL, but not when a read error
occurs.
Revert the logic to avoid a small leak, should a m920x_read() call fail.
Fixes: a2ab06d7c4d6 ("media: m920x: don't use stack on USB reads")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/usb/dvb-usb/m920x.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/media/usb/dvb-usb/m920x.c b/drivers/media/usb/dvb-usb/m920x.c
index 548199cd86f60..11f4f0455f155 100644
--- a/drivers/media/usb/dvb-usb/m920x.c
+++ b/drivers/media/usb/dvb-usb/m920x.c
@@ -277,7 +277,6 @@ static int m920x_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int nu
char *read = kmalloc(1, GFP_KERNEL);
if (!read) {
ret = -ENOMEM;
- kfree(read);
goto unlock;
}
@@ -288,8 +287,10 @@ static int m920x_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[], int nu
if ((ret = m920x_read(d->udev, M9206_I2C, 0x0,
0x20 | stop,
- read, 1)) != 0)
+ read, 1)) != 0) {
+ kfree(read);
goto unlock;
+ }
msg[i].buf[j] = read[0];
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 400/600] media: cx24120: Add retval check for cx24120_message_send()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (398 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 399/600] media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 401/600] RDMA/siw: Fabricate a GID on tun and loopback devices Greg Kroah-Hartman
` (210 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Daniil Dulov, Hans Verkuil,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Daniil Dulov <d.dulov@aladdin.ru>
[ Upstream commit 96002c0ac824e1773d3f706b1f92e2a9f2988047 ]
If cx24120_message_send() returns error, we should keep local struct
unchanged.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: 5afc9a25be8d ("[media] Add support for TechniSat Skystar S2")
Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/dvb-frontends/cx24120.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/media/dvb-frontends/cx24120.c b/drivers/media/dvb-frontends/cx24120.c
index d8acd582c7111..0f778660c72b8 100644
--- a/drivers/media/dvb-frontends/cx24120.c
+++ b/drivers/media/dvb-frontends/cx24120.c
@@ -973,7 +973,9 @@ static void cx24120_set_clock_ratios(struct dvb_frontend *fe)
cmd.arg[8] = (clock_ratios_table[idx].rate >> 8) & 0xff;
cmd.arg[9] = (clock_ratios_table[idx].rate >> 0) & 0xff;
- cx24120_message_send(state, &cmd);
+ ret = cx24120_message_send(state, &cmd);
+ if (ret != 0)
+ return;
/* Calculate ber window rates for stat work */
cx24120_calculate_ber_window(state, clock_ratios_table[idx].rate);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 401/600] RDMA/siw: Fabricate a GID on tun and loopback devices
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (399 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 400/600] media: cx24120: Add retval check for cx24120_message_send() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 402/600] scsi: hisi_sas: Fix warnings detected by sparse Greg Kroah-Hartman
` (209 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Tom Talpey, Bernard Metzler,
Chuck Lever, Jason Gunthorpe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chuck Lever <chuck.lever@oracle.com>
[ Upstream commit bad5b6e34ffbaacc77ad28a0f482e33b3929e635 ]
LOOPBACK and NONE (tunnel) devices have all-zero MAC addresses.
Currently, siw_device_create() falls back to copying the IB device's
name in those cases, because an all-zero MAC address breaks the RDMA
core address resolution mechanism.
However, at the point when siw_device_create() constructs a GID, the
ib_device::name field is uninitialized, leaving the MAC address to
remain in an all-zero state.
Fabricate a random artificial GID for such devices, and ensure this
artificial GID is returned for all device query operations.
Link: https://lore.kernel.org/r/168960673260.3007.12378736853793339110.stgit@manet.1015granger.net
Reported-by: Tom Talpey <tom@talpey.com>
Fixes: a2d36b02c15d ("RDMA/siw: Enable siw on tunnel devices")
Reviewed-by: Bernard Metzler <bmt@zurich.ibm.com>
Reviewed-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/sw/siw/siw.h | 1 +
drivers/infiniband/sw/siw/siw_main.c | 22 ++++++++--------------
drivers/infiniband/sw/siw/siw_verbs.c | 4 ++--
3 files changed, 11 insertions(+), 16 deletions(-)
diff --git a/drivers/infiniband/sw/siw/siw.h b/drivers/infiniband/sw/siw/siw.h
index 2f3a9cda3850f..8b4a710b82bc1 100644
--- a/drivers/infiniband/sw/siw/siw.h
+++ b/drivers/infiniband/sw/siw/siw.h
@@ -74,6 +74,7 @@ struct siw_device {
u32 vendor_part_id;
int numa_node;
+ char raw_gid[ETH_ALEN];
/* physical port state (only one port per device) */
enum ib_port_state state;
diff --git a/drivers/infiniband/sw/siw/siw_main.c b/drivers/infiniband/sw/siw/siw_main.c
index 65b5cda5457ba..f45600d169ae7 100644
--- a/drivers/infiniband/sw/siw/siw_main.c
+++ b/drivers/infiniband/sw/siw/siw_main.c
@@ -75,8 +75,7 @@ static int siw_device_register(struct siw_device *sdev, const char *name)
return rv;
}
- siw_dbg(base_dev, "HWaddr=%pM\n", sdev->netdev->dev_addr);
-
+ siw_dbg(base_dev, "HWaddr=%pM\n", sdev->raw_gid);
return 0;
}
@@ -313,24 +312,19 @@ static struct siw_device *siw_device_create(struct net_device *netdev)
return NULL;
base_dev = &sdev->base_dev;
-
sdev->netdev = netdev;
- if (netdev->type != ARPHRD_LOOPBACK && netdev->type != ARPHRD_NONE) {
- addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
- netdev->dev_addr);
+ if (netdev->addr_len) {
+ memcpy(sdev->raw_gid, netdev->dev_addr,
+ min_t(unsigned int, netdev->addr_len, ETH_ALEN));
} else {
/*
- * This device does not have a HW address,
- * but connection mangagement lib expects gid != 0
+ * This device does not have a HW address, but
+ * connection mangagement requires a unique gid.
*/
- size_t len = min_t(size_t, strlen(base_dev->name), 6);
- char addr[6] = { };
-
- memcpy(addr, base_dev->name, len);
- addrconf_addr_eui48((unsigned char *)&base_dev->node_guid,
- addr);
+ eth_random_addr(sdev->raw_gid);
}
+ addrconf_addr_eui48((u8 *)&base_dev->node_guid, sdev->raw_gid);
base_dev->uverbs_cmd_mask |= BIT_ULL(IB_USER_VERBS_CMD_POST_SEND);
diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index 906fde1a2a0de..2e4cdcd26fe01 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -157,7 +157,7 @@ int siw_query_device(struct ib_device *base_dev, struct ib_device_attr *attr,
attr->vendor_part_id = sdev->vendor_part_id;
addrconf_addr_eui48((u8 *)&attr->sys_image_guid,
- sdev->netdev->dev_addr);
+ sdev->raw_gid);
return 0;
}
@@ -218,7 +218,7 @@ int siw_query_gid(struct ib_device *base_dev, u32 port, int idx,
/* subnet_prefix == interface_id == 0; */
memset(gid, 0, sizeof(*gid));
- memcpy(&gid->raw[0], sdev->netdev->dev_addr, 6);
+ memcpy(gid->raw, sdev->raw_gid, ETH_ALEN);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 402/600] scsi: hisi_sas: Fix warnings detected by sparse
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (400 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 401/600] RDMA/siw: Fabricate a GID on tun and loopback devices Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 403/600] scsi: hisi_sas: Fix normally completed I/O analysed as failed Greg Kroah-Hartman
` (208 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot, Xingui Yang,
Xiang Chen, Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xingui Yang <yangxingui@huawei.com>
[ Upstream commit c0328cc595124579328462fc45d7a29a084cf357 ]
This patch fixes the following warning:
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c:2168:43: sparse: sparse: restricted __le32 degrades to integer
Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/oe-kbuild-all/202304161254.NztCVZIO-lkp@intel.com/
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Link: https://lore.kernel.org/r/1684118481-95908-4-git-send-email-chenxiang66@hisilicon.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Stable-dep-of: f5393a5602ca ("scsi: hisi_sas: Fix normally completed I/O analysed as failed")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index e8a3511040af2..8544c1554f5ff 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -2163,6 +2163,7 @@ slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
u32 trans_tx_fail_type = le32_to_cpu(record->trans_tx_fail_type);
u16 sipc_rx_err_type = le16_to_cpu(record->sipc_rx_err_type);
u32 dw3 = le32_to_cpu(complete_hdr->dw3);
+ u32 dw0 = le32_to_cpu(complete_hdr->dw0);
switch (task->task_proto) {
case SAS_PROTOCOL_SSP:
@@ -2172,8 +2173,8 @@ slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
* but I/O information has been written to the host memory, we examine
* response IU.
*/
- if (!(complete_hdr->dw0 & CMPLT_HDR_RSPNS_GOOD_MSK) &&
- (complete_hdr->dw0 & CMPLT_HDR_RSPNS_XFRD_MSK))
+ if (!(dw0 & CMPLT_HDR_RSPNS_GOOD_MSK) &&
+ (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK))
return false;
ts->residual = trans_tx_fail_type;
@@ -2189,7 +2190,7 @@ slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
case SAS_PROTOCOL_SATA:
case SAS_PROTOCOL_STP:
case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
- if ((complete_hdr->dw0 & CMPLT_HDR_RSPNS_XFRD_MSK) &&
+ if ((dw0 & CMPLT_HDR_RSPNS_XFRD_MSK) &&
(sipc_rx_err_type & RX_FIS_STATUS_ERR_MSK)) {
ts->stat = SAS_PROTO_RESPONSE;
} else if (dma_rx_err_type & RX_DATA_LEN_UNDERFLOW_MSK) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 403/600] scsi: hisi_sas: Fix normally completed I/O analysed as failed
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (401 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 402/600] scsi: hisi_sas: Fix warnings detected by sparse Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 404/600] dt-bindings: extcon: maxim,max77843: restrict connector properties Greg Kroah-Hartman
` (207 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xingui Yang, Xiang Chen,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xingui Yang <yangxingui@huawei.com>
[ Upstream commit f5393a5602cacfda2014e0ff8220e5a7564e7cd1 ]
The PIO read command has no response frame and the struct iu[1024] won't be
filled. I/Os which are normally completed will be treated as failed in
sas_ata_task_done() when iu contains abnormal dirty data.
Consequently ending_fis should not be filled by iu when the response frame
hasn't been written to memory.
Fixes: d380f55503ed ("scsi: hisi_sas: Don't bother clearing status buffer IU in task prep")
Signed-off-by: Xingui Yang <yangxingui@huawei.com>
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Link: https://lore.kernel.org/r/1689045300-44318-2-git-send-email-chenxiang66@hisilicon.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 11 +++++++++--
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 6 ++++--
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
index 02575d81afca2..50697672146ad 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
@@ -2026,6 +2026,11 @@ static void slot_err_v2_hw(struct hisi_hba *hisi_hba,
u16 dma_tx_err_type = le16_to_cpu(err_record->dma_tx_err_type);
u16 sipc_rx_err_type = le16_to_cpu(err_record->sipc_rx_err_type);
u32 dma_rx_err_type = le32_to_cpu(err_record->dma_rx_err_type);
+ struct hisi_sas_complete_v2_hdr *complete_queue =
+ hisi_hba->complete_hdr[slot->cmplt_queue];
+ struct hisi_sas_complete_v2_hdr *complete_hdr =
+ &complete_queue[slot->cmplt_queue_slot];
+ u32 dw0 = le32_to_cpu(complete_hdr->dw0);
int error = -1;
if (err_phase == 1) {
@@ -2310,7 +2315,8 @@ static void slot_err_v2_hw(struct hisi_hba *hisi_hba,
break;
}
}
- hisi_sas_sata_done(task, slot);
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
+ hisi_sas_sata_done(task, slot);
}
break;
default:
@@ -2443,7 +2449,8 @@ static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,
case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
{
ts->stat = SAS_SAM_STAT_GOOD;
- hisi_sas_sata_done(task, slot);
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
+ hisi_sas_sata_done(task, slot);
break;
}
default:
diff --git a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
index 8544c1554f5ff..c0e74d768716d 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_v3_hw.c
@@ -2203,7 +2203,8 @@ slot_err_v3_hw(struct hisi_hba *hisi_hba, struct sas_task *task,
ts->stat = SAS_OPEN_REJECT;
ts->open_rej_reason = SAS_OREJ_RSVD_RETRY;
}
- hisi_sas_sata_done(task, slot);
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
+ hisi_sas_sata_done(task, slot);
break;
case SAS_PROTOCOL_SMP:
ts->stat = SAS_SAM_STAT_CHECK_CONDITION;
@@ -2330,7 +2331,8 @@ static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,
case SAS_PROTOCOL_STP:
case SAS_PROTOCOL_SATA | SAS_PROTOCOL_STP:
ts->stat = SAS_SAM_STAT_GOOD;
- hisi_sas_sata_done(task, slot);
+ if (dw0 & CMPLT_HDR_RSPNS_XFRD_MSK)
+ hisi_sas_sata_done(task, slot);
break;
default:
ts->stat = SAS_SAM_STAT_CHECK_CONDITION;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 404/600] dt-bindings: extcon: maxim,max77843: restrict connector properties
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (402 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 403/600] scsi: hisi_sas: Fix normally completed I/O analysed as failed Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 405/600] media: amphion: reinit vpu if reqbufs output 0 Greg Kroah-Hartman
` (206 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Krzysztof Kozlowski, Chanwoo Choi,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
[ Upstream commit fb2c3f72e819254d8c76de95917e5f9ff232586c ]
Do not allow any other properties in connector child, except what
usb-connector.yaml evaluates.
Fixes: 9729cad0278b ("dt-bindings: extcon: maxim,max77843: Add MAX77843 bindings")
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
Documentation/devicetree/bindings/extcon/maxim,max77843.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/extcon/maxim,max77843.yaml b/Documentation/devicetree/bindings/extcon/maxim,max77843.yaml
index 1289605456408..55800fb0221d0 100644
--- a/Documentation/devicetree/bindings/extcon/maxim,max77843.yaml
+++ b/Documentation/devicetree/bindings/extcon/maxim,max77843.yaml
@@ -23,6 +23,7 @@ properties:
connector:
$ref: /schemas/connector/usb-connector.yaml#
+ unevaluatedProperties: false
ports:
$ref: /schemas/graph.yaml#/properties/ports
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 405/600] media: amphion: reinit vpu if reqbufs output 0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (403 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 404/600] dt-bindings: extcon: maxim,max77843: restrict connector properties Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 406/600] media: amphion: add helper function to get id name Greg Kroah-Hartman
` (205 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ming Qian, Nicolas Dufresne,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit 73e3f09292a0492a3fe0f87a8170a74f12624c5e ]
according to v4l2 stateful decoder document 4.5.1.3. State Machine,
the state should change from seek to initialization
if call VIDIOC_REQBUFS(OUTPUT, 0).
so reinit the vpu decoder if reqbufs output 0
Fixes: 6de8d628df6e ("media: amphion: add v4l2 m2m vpu decoder stateful driver")
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Tested-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vdec.c | 2 --
drivers/media/platform/amphion/vpu_v4l2.c | 7 ++++++-
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/media/platform/amphion/vdec.c b/drivers/media/platform/amphion/vdec.c
index c08b5a2bfc1df..8edb313cd6358 100644
--- a/drivers/media/platform/amphion/vdec.c
+++ b/drivers/media/platform/amphion/vdec.c
@@ -1407,9 +1407,7 @@ static void vdec_release(struct vpu_inst *inst)
{
if (inst->id != VPU_INST_NULL_ID)
vpu_trace(inst->dev, "[%d]\n", inst->id);
- vpu_inst_lock(inst);
vdec_stop(inst, true);
- vpu_inst_unlock(inst);
}
static void vdec_cleanup(struct vpu_inst *inst)
diff --git a/drivers/media/platform/amphion/vpu_v4l2.c b/drivers/media/platform/amphion/vpu_v4l2.c
index a74953191c221..e5c8e1a753ccd 100644
--- a/drivers/media/platform/amphion/vpu_v4l2.c
+++ b/drivers/media/platform/amphion/vpu_v4l2.c
@@ -404,6 +404,11 @@ static int vpu_vb2_queue_setup(struct vb2_queue *vq,
for (i = 0; i < cur_fmt->num_planes; i++)
psize[i] = cur_fmt->sizeimage[i];
+ if (V4L2_TYPE_IS_OUTPUT(vq->type) && inst->state == VPU_CODEC_STATE_SEEK) {
+ vpu_trace(inst->dev, "reinit when VIDIOC_REQBUFS(OUTPUT, 0)\n");
+ call_void_vop(inst, release);
+ }
+
return 0;
}
@@ -688,9 +693,9 @@ int vpu_v4l2_close(struct file *file)
v4l2_m2m_ctx_release(inst->fh.m2m_ctx);
inst->fh.m2m_ctx = NULL;
}
+ call_void_vop(inst, release);
vpu_inst_unlock(inst);
- call_void_vop(inst, release);
vpu_inst_unregister(inst);
vpu_inst_put(inst);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 406/600] media: amphion: add helper function to get id name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (404 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 405/600] media: amphion: reinit vpu if reqbufs output 0 Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work Greg Kroah-Hartman
` (204 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ming Qian, Nicolas Dufresne,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit 12cd8b8ac02525977b2e860a877add10e8ce7468 ]
convert numbers into meaningful names,
then it can improve the log readability
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vdec.c | 9 +--
drivers/media/platform/amphion/vpu.h | 3 +
drivers/media/platform/amphion/vpu_cmds.c | 11 ++--
drivers/media/platform/amphion/vpu_dbg.c | 6 +-
drivers/media/platform/amphion/vpu_helpers.c | 61 ++++++++++++++++++++
drivers/media/platform/amphion/vpu_msgs.c | 2 +-
6 files changed, 79 insertions(+), 13 deletions(-)
diff --git a/drivers/media/platform/amphion/vdec.c b/drivers/media/platform/amphion/vdec.c
index 8edb313cd6358..b4cdd23c38af2 100644
--- a/drivers/media/platform/amphion/vdec.c
+++ b/drivers/media/platform/amphion/vdec.c
@@ -249,7 +249,8 @@ static int vdec_update_state(struct vpu_inst *inst, enum vpu_codec_state state,
vdec->state = VPU_CODEC_STATE_DYAMIC_RESOLUTION_CHANGE;
if (inst->state != pre_state)
- vpu_trace(inst->dev, "[%d] %d -> %d\n", inst->id, pre_state, inst->state);
+ vpu_trace(inst->dev, "[%d] %s -> %s\n", inst->id,
+ vpu_codec_state_name(pre_state), vpu_codec_state_name(inst->state));
if (inst->state == VPU_CODEC_STATE_DYAMIC_RESOLUTION_CHANGE)
vdec_handle_resolution_change(inst);
@@ -994,8 +995,8 @@ static int vdec_response_frame(struct vpu_inst *inst, struct vb2_v4l2_buffer *vb
return -EINVAL;
}
- dev_dbg(inst->dev, "[%d] state = %d, alloc fs %d, tag = 0x%x\n",
- inst->id, inst->state, vbuf->vb2_buf.index, vdec->seq_tag);
+ dev_dbg(inst->dev, "[%d] state = %s, alloc fs %d, tag = 0x%x\n",
+ inst->id, vpu_codec_state_name(inst->state), vbuf->vb2_buf.index, vdec->seq_tag);
vpu_buf = to_vpu_vb2_buffer(vbuf);
memset(&info, 0, sizeof(info));
@@ -1354,7 +1355,7 @@ static void vdec_abort(struct vpu_inst *inst)
struct vpu_rpc_buffer_desc desc;
int ret;
- vpu_trace(inst->dev, "[%d] state = %d\n", inst->id, inst->state);
+ vpu_trace(inst->dev, "[%d] state = %s\n", inst->id, vpu_codec_state_name(inst->state));
vdec->aborting = true;
vpu_iface_add_scode(inst, SCODE_PADDING_ABORT);
diff --git a/drivers/media/platform/amphion/vpu.h b/drivers/media/platform/amphion/vpu.h
index 048c23c2bf4db..deb2288d42904 100644
--- a/drivers/media/platform/amphion/vpu.h
+++ b/drivers/media/platform/amphion/vpu.h
@@ -353,6 +353,9 @@ void vpu_inst_record_flow(struct vpu_inst *inst, u32 flow);
int vpu_core_driver_init(void);
void vpu_core_driver_exit(void);
+const char *vpu_id_name(u32 id);
+const char *vpu_codec_state_name(enum vpu_codec_state state);
+
extern bool debug;
#define vpu_trace(dev, fmt, arg...) \
do { \
diff --git a/drivers/media/platform/amphion/vpu_cmds.c b/drivers/media/platform/amphion/vpu_cmds.c
index fa581ba6bab2d..647d94554fb5d 100644
--- a/drivers/media/platform/amphion/vpu_cmds.c
+++ b/drivers/media/platform/amphion/vpu_cmds.c
@@ -98,7 +98,7 @@ static struct vpu_cmd_t *vpu_alloc_cmd(struct vpu_inst *inst, u32 id, void *data
cmd->id = id;
ret = vpu_iface_pack_cmd(inst->core, cmd->pkt, inst->id, id, data);
if (ret) {
- dev_err(inst->dev, "iface pack cmd(%d) fail\n", id);
+ dev_err(inst->dev, "iface pack cmd %s fail\n", vpu_id_name(id));
vfree(cmd->pkt);
vfree(cmd);
return NULL;
@@ -125,14 +125,14 @@ static int vpu_session_process_cmd(struct vpu_inst *inst, struct vpu_cmd_t *cmd)
{
int ret;
- dev_dbg(inst->dev, "[%d]send cmd(0x%x)\n", inst->id, cmd->id);
+ dev_dbg(inst->dev, "[%d]send cmd %s\n", inst->id, vpu_id_name(cmd->id));
vpu_iface_pre_send_cmd(inst);
ret = vpu_cmd_send(inst->core, cmd->pkt);
if (!ret) {
vpu_iface_post_send_cmd(inst);
vpu_inst_record_flow(inst, cmd->id);
} else {
- dev_err(inst->dev, "[%d] iface send cmd(0x%x) fail\n", inst->id, cmd->id);
+ dev_err(inst->dev, "[%d] iface send cmd %s fail\n", inst->id, vpu_id_name(cmd->id));
}
return ret;
@@ -149,7 +149,8 @@ static void vpu_process_cmd_request(struct vpu_inst *inst)
list_for_each_entry_safe(cmd, tmp, &inst->cmd_q, list) {
list_del_init(&cmd->list);
if (vpu_session_process_cmd(inst, cmd))
- dev_err(inst->dev, "[%d] process cmd(%d) fail\n", inst->id, cmd->id);
+ dev_err(inst->dev, "[%d] process cmd %s fail\n",
+ inst->id, vpu_id_name(cmd->id));
if (cmd->request) {
inst->pending = (void *)cmd;
break;
@@ -339,7 +340,7 @@ static int vpu_session_send_cmd(struct vpu_inst *inst, u32 id, void *data)
exit:
if (ret)
- dev_err(inst->dev, "[%d] send cmd(0x%x) fail\n", inst->id, id);
+ dev_err(inst->dev, "[%d] send cmd %s fail\n", inst->id, vpu_id_name(id));
return ret;
}
diff --git a/drivers/media/platform/amphion/vpu_dbg.c b/drivers/media/platform/amphion/vpu_dbg.c
index 260f1c4b8f8dc..bf8aded76e141 100644
--- a/drivers/media/platform/amphion/vpu_dbg.c
+++ b/drivers/media/platform/amphion/vpu_dbg.c
@@ -67,7 +67,7 @@ static int vpu_dbg_instance(struct seq_file *s, void *data)
num = scnprintf(str, sizeof(str), "tgig = %d,pid = %d\n", inst->tgid, inst->pid);
if (seq_write(s, str, num))
return 0;
- num = scnprintf(str, sizeof(str), "state = %d\n", inst->state);
+ num = scnprintf(str, sizeof(str), "state = %s\n", vpu_codec_state_name(inst->state));
if (seq_write(s, str, num))
return 0;
num = scnprintf(str, sizeof(str),
@@ -188,9 +188,9 @@ static int vpu_dbg_instance(struct seq_file *s, void *data)
if (!inst->flows[idx])
continue;
- num = scnprintf(str, sizeof(str), "\t[%s]0x%x\n",
+ num = scnprintf(str, sizeof(str), "\t[%s] %s\n",
inst->flows[idx] >= VPU_MSG_ID_NOOP ? "M" : "C",
- inst->flows[idx]);
+ vpu_id_name(inst->flows[idx]));
if (seq_write(s, str, num)) {
mutex_unlock(&inst->core->cmd_lock);
return 0;
diff --git a/drivers/media/platform/amphion/vpu_helpers.c b/drivers/media/platform/amphion/vpu_helpers.c
index e9aeb3453dfcb..2e78666322f02 100644
--- a/drivers/media/platform/amphion/vpu_helpers.c
+++ b/drivers/media/platform/amphion/vpu_helpers.c
@@ -11,6 +11,7 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include "vpu.h"
+#include "vpu_defs.h"
#include "vpu_core.h"
#include "vpu_rpc.h"
#include "vpu_helpers.h"
@@ -412,3 +413,63 @@ int vpu_find_src_by_dst(struct vpu_pair *pairs, u32 cnt, u32 dst)
return -EINVAL;
}
+
+const char *vpu_id_name(u32 id)
+{
+ switch (id) {
+ case VPU_CMD_ID_NOOP: return "noop";
+ case VPU_CMD_ID_CONFIGURE_CODEC: return "configure codec";
+ case VPU_CMD_ID_START: return "start";
+ case VPU_CMD_ID_STOP: return "stop";
+ case VPU_CMD_ID_ABORT: return "abort";
+ case VPU_CMD_ID_RST_BUF: return "reset buf";
+ case VPU_CMD_ID_SNAPSHOT: return "snapshot";
+ case VPU_CMD_ID_FIRM_RESET: return "reset firmware";
+ case VPU_CMD_ID_UPDATE_PARAMETER: return "update parameter";
+ case VPU_CMD_ID_FRAME_ENCODE: return "encode frame";
+ case VPU_CMD_ID_SKIP: return "skip";
+ case VPU_CMD_ID_FS_ALLOC: return "alloc fb";
+ case VPU_CMD_ID_FS_RELEASE: return "release fb";
+ case VPU_CMD_ID_TIMESTAMP: return "timestamp";
+ case VPU_CMD_ID_DEBUG: return "debug";
+ case VPU_MSG_ID_RESET_DONE: return "reset done";
+ case VPU_MSG_ID_START_DONE: return "start done";
+ case VPU_MSG_ID_STOP_DONE: return "stop done";
+ case VPU_MSG_ID_ABORT_DONE: return "abort done";
+ case VPU_MSG_ID_BUF_RST: return "buf reset done";
+ case VPU_MSG_ID_MEM_REQUEST: return "mem request";
+ case VPU_MSG_ID_PARAM_UPD_DONE: return "param upd done";
+ case VPU_MSG_ID_FRAME_INPUT_DONE: return "frame input done";
+ case VPU_MSG_ID_ENC_DONE: return "encode done";
+ case VPU_MSG_ID_DEC_DONE: return "frame display";
+ case VPU_MSG_ID_FRAME_REQ: return "fb request";
+ case VPU_MSG_ID_FRAME_RELEASE: return "fb release";
+ case VPU_MSG_ID_SEQ_HDR_FOUND: return "seq hdr found";
+ case VPU_MSG_ID_RES_CHANGE: return "resolution change";
+ case VPU_MSG_ID_PIC_HDR_FOUND: return "pic hdr found";
+ case VPU_MSG_ID_PIC_DECODED: return "picture decoded";
+ case VPU_MSG_ID_PIC_EOS: return "eos";
+ case VPU_MSG_ID_FIFO_LOW: return "fifo low";
+ case VPU_MSG_ID_BS_ERROR: return "bs error";
+ case VPU_MSG_ID_UNSUPPORTED: return "unsupported";
+ case VPU_MSG_ID_FIRMWARE_XCPT: return "exception";
+ case VPU_MSG_ID_PIC_SKIPPED: return "skipped";
+ }
+ return "<unknown>";
+}
+
+const char *vpu_codec_state_name(enum vpu_codec_state state)
+{
+ switch (state) {
+ case VPU_CODEC_STATE_DEINIT: return "initialization";
+ case VPU_CODEC_STATE_CONFIGURED: return "configured";
+ case VPU_CODEC_STATE_START: return "start";
+ case VPU_CODEC_STATE_STARTED: return "started";
+ case VPU_CODEC_STATE_ACTIVE: return "active";
+ case VPU_CODEC_STATE_SEEK: return "seek";
+ case VPU_CODEC_STATE_STOP: return "stop";
+ case VPU_CODEC_STATE_DRAIN: return "drain";
+ case VPU_CODEC_STATE_DYAMIC_RESOLUTION_CHANGE: return "resolution change";
+ }
+ return "<unknown>";
+}
diff --git a/drivers/media/platform/amphion/vpu_msgs.c b/drivers/media/platform/amphion/vpu_msgs.c
index 92672a802b492..f9eb488d1b5e2 100644
--- a/drivers/media/platform/amphion/vpu_msgs.c
+++ b/drivers/media/platform/amphion/vpu_msgs.c
@@ -210,7 +210,7 @@ static int vpu_session_handle_msg(struct vpu_inst *inst, struct vpu_rpc_event *m
return -EINVAL;
msg_id = ret;
- dev_dbg(inst->dev, "[%d] receive event(0x%x)\n", inst->id, msg_id);
+ dev_dbg(inst->dev, "[%d] receive event(%s)\n", inst->id, vpu_id_name(msg_id));
for (i = 0; i < ARRAY_SIZE(handlers); i++) {
if (handlers[i].id == msg_id) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (405 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 406/600] media: amphion: add helper function to get id name Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-10-10 14:16 ` 王征
2023-09-11 13:47 ` [PATCH 6.1 408/600] media: rkvdec: increase max supported height for H.264 Greg Kroah-Hartman
` (203 subsequent siblings)
610 siblings, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zheng Wang, Alexandre Mergnat,
Chen-Yu Tsai, AngeloGioacchino Del Regno, Hans Verkuil,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zheng Wang <zyytlz.wz@163.com>
[ Upstream commit c677d7ae83141d390d1253abebafa49c962afb52 ]
In mtk_jpeg_probe, &jpeg->job_timeout_work is bound with
mtk_jpeg_job_timeout_work. Then mtk_jpeg_dec_device_run
and mtk_jpeg_enc_device_run may be called to start the
work.
If we remove the module which will call mtk_jpeg_remove
to make cleanup, there may be a unfinished work. The
possible sequence is as follows, which will cause a
typical UAF bug.
Fix it by canceling the work before cleanup in the mtk_jpeg_remove
CPU0 CPU1
|mtk_jpeg_job_timeout_work
mtk_jpeg_remove |
v4l2_m2m_release |
kfree(m2m_dev); |
|
| v4l2_m2m_get_curr_priv
| m2m_dev->curr_ctx //use
Fixes: b2f0d2724ba4 ("[media] vcodec: mediatek: Add Mediatek JPEG Decoder Driver")
Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
index 3071b61946c3b..e9a4f8abd21c5 100644
--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
@@ -1412,6 +1412,7 @@ static int mtk_jpeg_remove(struct platform_device *pdev)
{
struct mtk_jpeg_dev *jpeg = platform_get_drvdata(pdev);
+ cancel_delayed_work_sync(&jpeg->job_timeout_work);
pm_runtime_disable(&pdev->dev);
video_unregister_device(jpeg->vdev);
v4l2_m2m_release(jpeg->m2m_dev);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 408/600] media: rkvdec: increase max supported height for H.264
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (406 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 409/600] media: amphion: fix CHECKED_RETURN issues reported by coverity Greg Kroah-Hartman
` (202 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Benjamin Gaignard, Nicolas Dufresne,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Gaignard <benjamin.gaignard@collabora.com>
[ Upstream commit f000e6ca2d60fefd02a180a57df2c4162fa0c1b7 ]
After testing it is possible for the hardware to decode H264
bistream with a height up to 2560.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Fixes: cd33c830448ba ("media: rkvdec: Add the rkvdec driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/staging/media/rkvdec/rkvdec.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/media/rkvdec/rkvdec.c b/drivers/staging/media/rkvdec/rkvdec.c
index 82806f198074a..a9bd1e71ea487 100644
--- a/drivers/staging/media/rkvdec/rkvdec.c
+++ b/drivers/staging/media/rkvdec/rkvdec.c
@@ -120,7 +120,7 @@ static const struct rkvdec_coded_fmt_desc rkvdec_coded_fmts[] = {
.max_width = 4096,
.step_width = 16,
.min_height = 48,
- .max_height = 2304,
+ .max_height = 2560,
.step_height = 16,
},
.ctrls = &rkvdec_h264_ctrls,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 409/600] media: amphion: fix CHECKED_RETURN issues reported by coverity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (407 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 408/600] media: rkvdec: increase max supported height for H.264 Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 410/600] media: amphion: fix REVERSE_INULL " Greg Kroah-Hartman
` (201 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dufresne, Ming Qian,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit b237b058adbc7825da9c8f358f1ff3f0467d623a ]
calling "vpu_cmd_send/vpu_get_buffer_state/vpu_session_alloc_fs"
without checking return value
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vdec.c | 5 ++++-
drivers/media/platform/amphion/vpu_cmds.c | 3 ++-
drivers/media/platform/amphion/vpu_dbg.c | 11 +++++++++--
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/drivers/media/platform/amphion/vdec.c b/drivers/media/platform/amphion/vdec.c
index b4cdd23c38af2..dc35a87e628ec 100644
--- a/drivers/media/platform/amphion/vdec.c
+++ b/drivers/media/platform/amphion/vdec.c
@@ -957,6 +957,7 @@ static int vdec_response_frame_abnormal(struct vpu_inst *inst)
{
struct vdec_t *vdec = inst->priv;
struct vpu_fs_info info;
+ int ret;
if (!vdec->req_frame_count)
return 0;
@@ -964,7 +965,9 @@ static int vdec_response_frame_abnormal(struct vpu_inst *inst)
memset(&info, 0, sizeof(info));
info.type = MEM_RES_FRAME;
info.tag = vdec->seq_tag + 0xf0;
- vpu_session_alloc_fs(inst, &info);
+ ret = vpu_session_alloc_fs(inst, &info);
+ if (ret)
+ return ret;
vdec->req_frame_count--;
return 0;
diff --git a/drivers/media/platform/amphion/vpu_cmds.c b/drivers/media/platform/amphion/vpu_cmds.c
index 647d94554fb5d..7e137f276c3b1 100644
--- a/drivers/media/platform/amphion/vpu_cmds.c
+++ b/drivers/media/platform/amphion/vpu_cmds.c
@@ -306,7 +306,8 @@ static void vpu_core_keep_active(struct vpu_core *core)
dev_dbg(core->dev, "try to wake up\n");
mutex_lock(&core->cmd_lock);
- vpu_cmd_send(core, &pkt);
+ if (vpu_cmd_send(core, &pkt))
+ dev_err(core->dev, "fail to keep active\n");
mutex_unlock(&core->cmd_lock);
}
diff --git a/drivers/media/platform/amphion/vpu_dbg.c b/drivers/media/platform/amphion/vpu_dbg.c
index bf8aded76e141..f105da82d92f9 100644
--- a/drivers/media/platform/amphion/vpu_dbg.c
+++ b/drivers/media/platform/amphion/vpu_dbg.c
@@ -50,6 +50,13 @@ static char *vpu_stat_name[] = {
[VPU_BUF_STATE_ERROR] = "error",
};
+static inline const char *to_vpu_stat_name(int state)
+{
+ if (state <= VPU_BUF_STATE_ERROR)
+ return vpu_stat_name[state];
+ return "unknown";
+}
+
static int vpu_dbg_instance(struct seq_file *s, void *data)
{
struct vpu_inst *inst = s->private;
@@ -141,7 +148,7 @@ static int vpu_dbg_instance(struct seq_file *s, void *data)
num = scnprintf(str, sizeof(str),
"output [%2d] state = %10s, %8s\n",
i, vb2_stat_name[vb->state],
- vpu_stat_name[vpu_get_buffer_state(vbuf)]);
+ to_vpu_stat_name(vpu_get_buffer_state(vbuf)));
if (seq_write(s, str, num))
return 0;
}
@@ -156,7 +163,7 @@ static int vpu_dbg_instance(struct seq_file *s, void *data)
num = scnprintf(str, sizeof(str),
"capture[%2d] state = %10s, %8s\n",
i, vb2_stat_name[vb->state],
- vpu_stat_name[vpu_get_buffer_state(vbuf)]);
+ to_vpu_stat_name(vpu_get_buffer_state(vbuf)));
if (seq_write(s, str, num))
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 410/600] media: amphion: fix REVERSE_INULL issues reported by coverity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (408 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 409/600] media: amphion: fix CHECKED_RETURN issues reported by coverity Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 411/600] media: amphion: fix UNINIT " Greg Kroah-Hartman
` (200 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dufresne, Ming Qian,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit 79d3bafaecc13bccab1ebbd28a15e669c5a4cdaf ]
null-checking of a pointor is suggested before dereferencing it
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/venc.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/amphion/venc.c b/drivers/media/platform/amphion/venc.c
index e8cb22da938e6..1df2b35c1a240 100644
--- a/drivers/media/platform/amphion/venc.c
+++ b/drivers/media/platform/amphion/venc.c
@@ -278,7 +278,7 @@ static int venc_g_parm(struct file *file, void *fh, struct v4l2_streamparm *parm
{
struct vpu_inst *inst = to_inst(file);
struct venc_t *venc = inst->priv;
- struct v4l2_fract *timeperframe = &parm->parm.capture.timeperframe;
+ struct v4l2_fract *timeperframe;
if (!parm)
return -EINVAL;
@@ -289,6 +289,7 @@ static int venc_g_parm(struct file *file, void *fh, struct v4l2_streamparm *parm
if (!vpu_helper_check_type(inst, parm->type))
return -EINVAL;
+ timeperframe = &parm->parm.capture.timeperframe;
parm->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
parm->parm.capture.readbuffers = 0;
timeperframe->numerator = venc->params.frame_rate.numerator;
@@ -301,7 +302,7 @@ static int venc_s_parm(struct file *file, void *fh, struct v4l2_streamparm *parm
{
struct vpu_inst *inst = to_inst(file);
struct venc_t *venc = inst->priv;
- struct v4l2_fract *timeperframe = &parm->parm.capture.timeperframe;
+ struct v4l2_fract *timeperframe;
unsigned long n, d;
if (!parm)
@@ -313,6 +314,7 @@ static int venc_s_parm(struct file *file, void *fh, struct v4l2_streamparm *parm
if (!vpu_helper_check_type(inst, parm->type))
return -EINVAL;
+ timeperframe = &parm->parm.capture.timeperframe;
if (!timeperframe->numerator)
timeperframe->numerator = venc->params.frame_rate.numerator;
if (!timeperframe->denominator)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 411/600] media: amphion: fix UNINIT issues reported by coverity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (409 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 410/600] media: amphion: fix REVERSE_INULL " Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 412/600] media: amphion: fix UNUSED_VALUE issue " Greg Kroah-Hartman
` (199 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dufresne, Ming Qian,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit c224d0497a31ea2d173e1ea16af308945bff9037 ]
using uninitialized value may introduce risk
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vpu_msgs.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/media/platform/amphion/vpu_msgs.c b/drivers/media/platform/amphion/vpu_msgs.c
index f9eb488d1b5e2..d0ead051f7d18 100644
--- a/drivers/media/platform/amphion/vpu_msgs.c
+++ b/drivers/media/platform/amphion/vpu_msgs.c
@@ -32,7 +32,7 @@ static void vpu_session_handle_start_done(struct vpu_inst *inst, struct vpu_rpc_
static void vpu_session_handle_mem_request(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
{
- struct vpu_pkt_mem_req_data req_data;
+ struct vpu_pkt_mem_req_data req_data = { 0 };
vpu_iface_unpack_msg_data(inst->core, pkt, (void *)&req_data);
vpu_trace(inst->dev, "[%d] %d:%d %d:%d %d:%d\n",
@@ -80,7 +80,7 @@ static void vpu_session_handle_resolution_change(struct vpu_inst *inst, struct v
static void vpu_session_handle_enc_frame_done(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
{
- struct vpu_enc_pic_info info;
+ struct vpu_enc_pic_info info = { 0 };
vpu_iface_unpack_msg_data(inst->core, pkt, (void *)&info);
dev_dbg(inst->dev, "[%d] frame id = %d, wptr = 0x%x, size = %d\n",
@@ -90,7 +90,7 @@ static void vpu_session_handle_enc_frame_done(struct vpu_inst *inst, struct vpu_
static void vpu_session_handle_frame_request(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
{
- struct vpu_fs_info fs;
+ struct vpu_fs_info fs = { 0 };
vpu_iface_unpack_msg_data(inst->core, pkt, &fs);
call_void_vop(inst, event_notify, VPU_MSG_ID_FRAME_REQ, &fs);
@@ -107,7 +107,7 @@ static void vpu_session_handle_frame_release(struct vpu_inst *inst, struct vpu_r
info.type = inst->out_format.type;
call_void_vop(inst, buf_done, &info);
} else if (inst->core->type == VPU_CORE_TYPE_DEC) {
- struct vpu_fs_info fs;
+ struct vpu_fs_info fs = { 0 };
vpu_iface_unpack_msg_data(inst->core, pkt, &fs);
call_void_vop(inst, event_notify, VPU_MSG_ID_FRAME_RELEASE, &fs);
@@ -122,7 +122,7 @@ static void vpu_session_handle_input_done(struct vpu_inst *inst, struct vpu_rpc_
static void vpu_session_handle_pic_decoded(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
{
- struct vpu_dec_pic_info info;
+ struct vpu_dec_pic_info info = { 0 };
vpu_iface_unpack_msg_data(inst->core, pkt, (void *)&info);
call_void_vop(inst, get_one_frame, &info);
@@ -130,7 +130,7 @@ static void vpu_session_handle_pic_decoded(struct vpu_inst *inst, struct vpu_rpc
static void vpu_session_handle_pic_done(struct vpu_inst *inst, struct vpu_rpc_event *pkt)
{
- struct vpu_dec_pic_info info;
+ struct vpu_dec_pic_info info = { 0 };
struct vpu_frame_info frame;
memset(&frame, 0, sizeof(frame));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 412/600] media: amphion: fix UNUSED_VALUE issue reported by coverity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (410 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 411/600] media: amphion: fix UNINIT " Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 413/600] media: amphion: ensure the bitops dont cross boundaries Greg Kroah-Hartman
` (198 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dufresne, Ming Qian,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit cf6a06354989c41b536be8e094561ee16223cf1f ]
assign value '-EINVAL' to ret, but the stored value is overwritten
before it can be used
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vpu_cmds.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/platform/amphion/vpu_cmds.c b/drivers/media/platform/amphion/vpu_cmds.c
index 7e137f276c3b1..235b71398d403 100644
--- a/drivers/media/platform/amphion/vpu_cmds.c
+++ b/drivers/media/platform/amphion/vpu_cmds.c
@@ -315,7 +315,7 @@ static int vpu_session_send_cmd(struct vpu_inst *inst, u32 id, void *data)
{
unsigned long key;
int sync = false;
- int ret = -EINVAL;
+ int ret;
if (inst->id < 0)
return -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 413/600] media: amphion: ensure the bitops dont cross boundaries
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (411 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 412/600] media: amphion: fix UNUSED_VALUE issue " Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 414/600] media: mediatek: vcodec: Return NULL if no vdec_fb is found Greg Kroah-Hartman
` (197 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dufresne, Ming Qian,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ming Qian <ming.qian@nxp.com>
[ Upstream commit 5bd28eae48589694ff4e5badb03bf75dae695b3f ]
the supported_instance_count determine the instance index range,
it shouldn't exceed the bits number of instance_mask,
otherwise the bitops of instance_mask may cross boundaries
Fixes: 9f599f351e86 ("media: amphion: add vpu core driver")
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Ming Qian <ming.qian@nxp.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/amphion/vpu_core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/platform/amphion/vpu_core.c b/drivers/media/platform/amphion/vpu_core.c
index be80410682681..9add73b9b45f9 100644
--- a/drivers/media/platform/amphion/vpu_core.c
+++ b/drivers/media/platform/amphion/vpu_core.c
@@ -88,6 +88,8 @@ static int vpu_core_boot_done(struct vpu_core *core)
core->supported_instance_count = min(core->supported_instance_count, count);
}
+ if (core->supported_instance_count >= BITS_PER_TYPE(core->instance_mask))
+ core->supported_instance_count = BITS_PER_TYPE(core->instance_mask);
core->fw_version = fw_version;
vpu_core_set_state(core, VPU_CORE_ACTIVE);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 414/600] media: mediatek: vcodec: Return NULL if no vdec_fb is found
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (412 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 413/600] media: amphion: ensure the bitops dont cross boundaries Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 415/600] media: mediatek: vcodec: fix potential double free Greg Kroah-Hartman
` (196 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Irui Wang,
AngeloGioacchino Del Regno, Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Irui Wang <irui.wang@mediatek.com>
[ Upstream commit dfa2d6e07432270330ae191f50a0e70636a4cd2b ]
"fb_use_list" is used to store used or referenced frame buffers for
vp9 stateful decoder. "NULL" should be returned when getting target
frame buffer failed from "fb_use_list", not a random unexpected one.
Fixes: f77e89854b3e ("[media] vcodec: mediatek: Add Mediatek VP9 Video Decoder Driver")
Signed-off-by: Irui Wang <irui.wang@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c
index 70b8383f7c8ec..a27a109d8d144 100644
--- a/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c
+++ b/drivers/media/platform/mediatek/vcodec/vdec/vdec_vp9_if.c
@@ -226,10 +226,11 @@ static struct vdec_fb *vp9_rm_from_fb_use_list(struct vdec_vp9_inst
if (fb->base_y.va == addr) {
list_move_tail(&node->list,
&inst->available_fb_node_list);
- break;
+ return fb;
}
}
- return fb;
+
+ return NULL;
}
static void vp9_add_to_fb_free_list(struct vdec_vp9_inst *inst,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 415/600] media: mediatek: vcodec: fix potential double free
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (413 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 414/600] media: mediatek: vcodec: Return NULL if no vdec_fb is found Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 416/600] media: mediatek: vcodec: fix resource leaks in vdec_msg_queue_init() Greg Kroah-Hartman
` (195 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Nicolas Dufresne,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit be40f524b6edac4fb9a98ef79620fd9b9497a998 ]
The "lat_buf->private_data" needs to be set to NULL to prevent a
double free. How this would happen is if vdec_msg_queue_init() failed
twice in a row and on the second time it failed earlier than on the
first time.
The vdec_msg_queue_init() function has a loop which does:
for (i = 0; i < NUM_BUFFER_COUNT; i++) {
Each iteration initializes one element in the msg_queue->lat_buf[] array
and then the clean up function vdec_msg_queue_deinit() frees each
element of the msg_queue->lat_buf[] array. This clean up code relies
on the assumption that every element is either initialized or zeroed.
Leaving a freed pointer which is non-zero breaks the assumption.
Fixes: b199fe46f35c ("media: mtk-vcodec: Add msg queue feature for lat and core architecture")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
index 03f8d7cd8eddc..675f62814f94e 100644
--- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
+++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
@@ -246,6 +246,7 @@ void vdec_msg_queue_deinit(struct vdec_msg_queue *msg_queue,
mtk_vcodec_mem_free(ctx, mem);
kfree(lat_buf->private_data);
+ lat_buf->private_data = NULL;
}
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 416/600] media: mediatek: vcodec: fix resource leaks in vdec_msg_queue_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (414 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 415/600] media: mediatek: vcodec: fix potential double free Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 417/600] usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() Greg Kroah-Hartman
` (194 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Nicolas Dufresne,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit cf10b0bb503c974ba049d6f888b21178be20a962 ]
If we encounter any error in the vdec_msg_queue_init() then we need
to set "msg_queue->wdma_addr.size = 0;". Normally, this is done
inside the vdec_msg_queue_deinit() function. However, if the
first call to allocate &msg_queue->wdma_addr fails, then the
vdec_msg_queue_deinit() function is a no-op. For that situation, just
set the size to zero explicitly and return.
There were two other error paths which did not clean up before returning.
Change those error paths to goto mem_alloc_err.
Fixes: b199fe46f35c ("media: mtk-vcodec: Add msg queue feature for lat and core architecture")
Fixes: 2f5d0aef37c6 ("media: mediatek: vcodec: support stateless AV1 decoder")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
index 675f62814f94e..a81212c0ade9d 100644
--- a/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
+++ b/drivers/media/platform/mediatek/vcodec/vdec_msg_queue.c
@@ -313,6 +313,7 @@ int vdec_msg_queue_init(struct vdec_msg_queue *msg_queue,
err = mtk_vcodec_mem_alloc(ctx, &msg_queue->wdma_addr);
if (err) {
mtk_v4l2_err("failed to allocate wdma_addr buf");
+ msg_queue->wdma_addr.size = 0;
return -ENOMEM;
}
msg_queue->wdma_rptr_addr = msg_queue->wdma_addr.dma_addr;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 417/600] usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (415 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 416/600] media: mediatek: vcodec: fix resource leaks in vdec_msg_queue_init() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 418/600] scsi: RDMA/srp: Fix residual handling Greg Kroah-Hartman
` (193 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Xu Yang, Peter Chen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xu Yang <xu.yang_2@nxp.com>
[ Upstream commit 5eda42aebb7668b4dcff025cd3ccb0d3d7c53da6 ]
The function mxs_phy_is_otg_host() will return true if OTG_ID_VALUE is
0 at USBPHY_CTRL register. However, OTG_ID_VALUE will not reflect the real
state if the ID pin is float, such as Host-only or Type-C cases. The value
of OTG_ID_VALUE is always 1 which means device mode.
This patch will fix the issue by judging the current mode based on
last_event. The controller will update last_event in time.
Fixes: 7b09e67639d6 ("usb: phy: mxs: refine mxs_phy_disconnect_line")
Signed-off-by: Xu Yang <xu.yang_2@nxp.com>
Acked-by: Peter Chen <peter.chen@kernel.org>
Link: https://lore.kernel.org/r/20230627110353.1879477-2-xu.yang_2@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/usb/phy/phy-mxs-usb.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/drivers/usb/phy/phy-mxs-usb.c b/drivers/usb/phy/phy-mxs-usb.c
index d2836ef5d15c7..9299df53eb9df 100644
--- a/drivers/usb/phy/phy-mxs-usb.c
+++ b/drivers/usb/phy/phy-mxs-usb.c
@@ -388,14 +388,8 @@ static void __mxs_phy_disconnect_line(struct mxs_phy *mxs_phy, bool disconnect)
static bool mxs_phy_is_otg_host(struct mxs_phy *mxs_phy)
{
- void __iomem *base = mxs_phy->phy.io_priv;
- u32 phyctrl = readl(base + HW_USBPHY_CTRL);
-
- if (IS_ENABLED(CONFIG_USB_OTG) &&
- !(phyctrl & BM_USBPHY_CTRL_OTG_ID_VALUE))
- return true;
-
- return false;
+ return IS_ENABLED(CONFIG_USB_OTG) &&
+ mxs_phy->phy.last_event == USB_EVENT_ID;
}
static void mxs_phy_disconnect_line(struct mxs_phy *mxs_phy, bool on)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 418/600] scsi: RDMA/srp: Fix residual handling
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (416 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 417/600] usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 419/600] scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param() Greg Kroah-Hartman
` (192 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Leon Romanovsky, Jason Gunthorpe,
Bart Van Assche, Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bart Van Assche <bvanassche@acm.org>
[ Upstream commit 89e637c19b2441aabc8dbf22a8745b932fd6996e ]
Although the code for residual handling in the SRP initiator follows the
SCSI documentation, that documentation has never been correct. Because
scsi_finish_command() starts from the data buffer length and subtracts the
residual, scsi_set_resid() must not be called if a residual overflow
occurs. Hence remove the scsi_set_resid() calls from the SRP initiator if a
residual overflow occurrs.
Cc: Leon Romanovsky <leon@kernel.org>
Cc: Jason Gunthorpe <jgg@nvidia.com>
Fixes: 9237f04e12cc ("scsi: core: Fix scsi_get/set_resid() interface")
Fixes: e714531a349f ("IB/srp: Fix residual handling")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230724200843.3376570-3-bvanassche@acm.org
Acked-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/ulp/srp/ib_srp.c | 4 ----
1 file changed, 4 deletions(-)
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c
index b4d6a4a5ae81e..a7580c4855fec 100644
--- a/drivers/infiniband/ulp/srp/ib_srp.c
+++ b/drivers/infiniband/ulp/srp/ib_srp.c
@@ -1984,12 +1984,8 @@ static void srp_process_rsp(struct srp_rdma_ch *ch, struct srp_rsp *rsp)
if (unlikely(rsp->flags & SRP_RSP_FLAG_DIUNDER))
scsi_set_resid(scmnd, be32_to_cpu(rsp->data_in_res_cnt));
- else if (unlikely(rsp->flags & SRP_RSP_FLAG_DIOVER))
- scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_in_res_cnt));
else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOUNDER))
scsi_set_resid(scmnd, be32_to_cpu(rsp->data_out_res_cnt));
- else if (unlikely(rsp->flags & SRP_RSP_FLAG_DOOVER))
- scsi_set_resid(scmnd, -be32_to_cpu(rsp->data_out_res_cnt));
srp_free_req(ch, req, scmnd,
be32_to_cpu(rsp->req_lim_delta));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 419/600] scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (417 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 418/600] scsi: RDMA/srp: Fix residual handling Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 420/600] scsi: iscsi: Add length check for nlattr payload Greg Kroah-Hartman
` (191 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Wenchao Hao, Mike Christie,
Lee Duncan, Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wenchao Hao <haowenchao@huawei.com>
[ Upstream commit 0c26a2d7c98039e913e63f9250fde738a3f88a60 ]
There are two iscsi_set_param() functions defined in libiscsi.c and
scsi_transport_iscsi.c respectively which is confusing.
Rename the one in scsi_transport_iscsi.c to iscsi_if_set_param().
Signed-off-by: Wenchao Hao <haowenchao@huawei.com>
Link: https://lore.kernel.org/r/20221122181105.4123935-1-haowenchao@huawei.com
Reviewed-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Stable-dep-of: 971dfcb74a80 ("scsi: iscsi: Add length check for nlattr payload")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/scsi_transport_iscsi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index bf834e72595a3..b9b97300e3b3c 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -3013,7 +3013,7 @@ iscsi_if_destroy_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev
}
static int
-iscsi_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
+iscsi_if_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
{
char *data = (char*)ev + sizeof(*ev);
struct iscsi_cls_conn *conn;
@@ -3966,7 +3966,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
err = -EINVAL;
break;
case ISCSI_UEVENT_SET_PARAM:
- err = iscsi_set_param(transport, ev);
+ err = iscsi_if_set_param(transport, ev);
break;
case ISCSI_UEVENT_CREATE_CONN:
case ISCSI_UEVENT_DESTROY_CONN:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 420/600] scsi: iscsi: Add length check for nlattr payload
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (418 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 419/600] scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 421/600] scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() Greg Kroah-Hartman
` (190 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lin Ma, Chris Leech,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit 971dfcb74a800047952f5288512b9c7ddedb050a ]
The current NETLINK_ISCSI netlink parsing loop checks every nlmsg to make
sure the length is bigger than sizeof(struct iscsi_uevent) and then calls
iscsi_if_recv_msg().
nlh = nlmsg_hdr(skb);
if (nlh->nlmsg_len < sizeof(*nlh) + sizeof(*ev) ||
skb->len < nlh->nlmsg_len) {
break;
}
...
err = iscsi_if_recv_msg(skb, nlh, &group);
Hence, in iscsi_if_recv_msg() the nlmsg_data can be safely converted to
iscsi_uevent as the length is already checked.
However, in other cases the length of nlattr payload is not checked before
the payload is converted to other data structures. One example is
iscsi_set_path() which converts the payload to type iscsi_path without any
checks:
params = (struct iscsi_path *)((char *)ev + sizeof(*ev));
Whereas iscsi_if_transport_conn() correctly checks the pdu_len:
pdu_len = nlh->nlmsg_len - sizeof(*nlh) - sizeof(*ev);
if ((ev->u.send_pdu.hdr_size > pdu_len) ..
err = -EINVAL;
To sum up, some code paths called in iscsi_if_recv_msg() do not check the
length of the data (see below picture) and directly convert the data to
another data structure. This could result in an out-of-bound reads and heap
dirty data leakage.
_________ nlmsg_len(nlh) _______________
/ \
+----------+--------------+---------------------------+
| nlmsghdr | iscsi_uevent | data |
+----------+--------------+---------------------------+
\ /
iscsi_uevent->u.set_param.len
Fix the issue by adding the length check before accessing it. To clean up
the code, an additional parameter named rlen is added. The rlen is
calculated at the beginning of iscsi_if_recv_msg() which avoids duplicated
calculation.
Fixes: ac20c7bf070d ("[SCSI] iscsi_transport: Added Ping support")
Fixes: 43514774ff40 ("[SCSI] iscsi class: Add new NETLINK_ISCSI messages for cnic/bnx2i driver.")
Fixes: 1d9bf13a9cf9 ("[SCSI] iscsi class: add iscsi host set param event")
Fixes: 01cb225dad8d ("[SCSI] iscsi: add target discvery event to transport class")
Fixes: 264faaaa1254 ("[SCSI] iscsi: add transport end point callbacks")
Fixes: fd7255f51a13 ("[SCSI] iscsi: add sysfs attrs for uspace sync up")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20230725024529.428311-1-linma@zju.edu.cn
Reviewed-by: Chris Leech <cleech@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/scsi_transport_iscsi.c | 72 +++++++++++++++++------------
1 file changed, 43 insertions(+), 29 deletions(-)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index b9b97300e3b3c..2680de88f5bbc 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -3013,14 +3013,15 @@ iscsi_if_destroy_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev
}
static int
-iscsi_if_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev)
+iscsi_if_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev, u32 rlen)
{
char *data = (char*)ev + sizeof(*ev);
struct iscsi_cls_conn *conn;
struct iscsi_cls_session *session;
int err = 0, value = 0, state;
- if (ev->u.set_param.len > PAGE_SIZE)
+ if (ev->u.set_param.len > rlen ||
+ ev->u.set_param.len > PAGE_SIZE)
return -EINVAL;
session = iscsi_session_lookup(ev->u.set_param.sid);
@@ -3117,7 +3118,7 @@ static int iscsi_if_ep_disconnect(struct iscsi_transport *transport,
static int
iscsi_if_transport_ep(struct iscsi_transport *transport,
- struct iscsi_uevent *ev, int msg_type)
+ struct iscsi_uevent *ev, int msg_type, u32 rlen)
{
struct iscsi_endpoint *ep;
int rc = 0;
@@ -3125,7 +3126,10 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
switch (msg_type) {
case ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST:
case ISCSI_UEVENT_TRANSPORT_EP_CONNECT:
- rc = iscsi_if_ep_connect(transport, ev, msg_type);
+ if (rlen < sizeof(struct sockaddr))
+ rc = -EINVAL;
+ else
+ rc = iscsi_if_ep_connect(transport, ev, msg_type);
break;
case ISCSI_UEVENT_TRANSPORT_EP_POLL:
if (!transport->ep_poll)
@@ -3149,12 +3153,15 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
static int
iscsi_tgt_dscvr(struct iscsi_transport *transport,
- struct iscsi_uevent *ev)
+ struct iscsi_uevent *ev, u32 rlen)
{
struct Scsi_Host *shost;
struct sockaddr *dst_addr;
int err;
+ if (rlen < sizeof(*dst_addr))
+ return -EINVAL;
+
if (!transport->tgt_dscvr)
return -EINVAL;
@@ -3175,7 +3182,7 @@ iscsi_tgt_dscvr(struct iscsi_transport *transport,
static int
iscsi_set_host_param(struct iscsi_transport *transport,
- struct iscsi_uevent *ev)
+ struct iscsi_uevent *ev, u32 rlen)
{
char *data = (char*)ev + sizeof(*ev);
struct Scsi_Host *shost;
@@ -3184,7 +3191,8 @@ iscsi_set_host_param(struct iscsi_transport *transport,
if (!transport->set_host_param)
return -ENOSYS;
- if (ev->u.set_host_param.len > PAGE_SIZE)
+ if (ev->u.set_host_param.len > rlen ||
+ ev->u.set_host_param.len > PAGE_SIZE)
return -EINVAL;
shost = scsi_host_lookup(ev->u.set_host_param.host_no);
@@ -3201,12 +3209,15 @@ iscsi_set_host_param(struct iscsi_transport *transport,
}
static int
-iscsi_set_path(struct iscsi_transport *transport, struct iscsi_uevent *ev)
+iscsi_set_path(struct iscsi_transport *transport, struct iscsi_uevent *ev, u32 rlen)
{
struct Scsi_Host *shost;
struct iscsi_path *params;
int err;
+ if (rlen < sizeof(*params))
+ return -EINVAL;
+
if (!transport->set_path)
return -ENOSYS;
@@ -3266,12 +3277,15 @@ iscsi_set_iface_params(struct iscsi_transport *transport,
}
static int
-iscsi_send_ping(struct iscsi_transport *transport, struct iscsi_uevent *ev)
+iscsi_send_ping(struct iscsi_transport *transport, struct iscsi_uevent *ev, u32 rlen)
{
struct Scsi_Host *shost;
struct sockaddr *dst_addr;
int err;
+ if (rlen < sizeof(*dst_addr))
+ return -EINVAL;
+
if (!transport->send_ping)
return -ENOSYS;
@@ -3769,13 +3783,12 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
}
static int iscsi_if_transport_conn(struct iscsi_transport *transport,
- struct nlmsghdr *nlh)
+ struct nlmsghdr *nlh, u32 pdu_len)
{
struct iscsi_uevent *ev = nlmsg_data(nlh);
struct iscsi_cls_session *session;
struct iscsi_cls_conn *conn = NULL;
struct iscsi_endpoint *ep;
- uint32_t pdu_len;
int err = 0;
switch (nlh->nlmsg_type) {
@@ -3860,8 +3873,6 @@ static int iscsi_if_transport_conn(struct iscsi_transport *transport,
break;
case ISCSI_UEVENT_SEND_PDU:
- pdu_len = nlh->nlmsg_len - sizeof(*nlh) - sizeof(*ev);
-
if ((ev->u.send_pdu.hdr_size > pdu_len) ||
(ev->u.send_pdu.data_size > (pdu_len - ev->u.send_pdu.hdr_size))) {
err = -EINVAL;
@@ -3891,6 +3902,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
struct iscsi_internal *priv;
struct iscsi_cls_session *session;
struct iscsi_endpoint *ep = NULL;
+ u32 rlen;
if (!netlink_capable(skb, CAP_SYS_ADMIN))
return -EPERM;
@@ -3910,6 +3922,13 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
portid = NETLINK_CB(skb).portid;
+ /*
+ * Even though the remaining payload may not be regarded as nlattr,
+ * (like address or something else), calculate the remaining length
+ * here to ease following length checks.
+ */
+ rlen = nlmsg_attrlen(nlh, sizeof(*ev));
+
switch (nlh->nlmsg_type) {
case ISCSI_UEVENT_CREATE_SESSION:
err = iscsi_if_create_session(priv, ep, ev,
@@ -3966,7 +3985,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
err = -EINVAL;
break;
case ISCSI_UEVENT_SET_PARAM:
- err = iscsi_if_set_param(transport, ev);
+ err = iscsi_if_set_param(transport, ev, rlen);
break;
case ISCSI_UEVENT_CREATE_CONN:
case ISCSI_UEVENT_DESTROY_CONN:
@@ -3974,7 +3993,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
case ISCSI_UEVENT_START_CONN:
case ISCSI_UEVENT_BIND_CONN:
case ISCSI_UEVENT_SEND_PDU:
- err = iscsi_if_transport_conn(transport, nlh);
+ err = iscsi_if_transport_conn(transport, nlh, rlen);
break;
case ISCSI_UEVENT_GET_STATS:
err = iscsi_if_get_stats(transport, nlh);
@@ -3983,23 +4002,22 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
case ISCSI_UEVENT_TRANSPORT_EP_POLL:
case ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT:
case ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST:
- err = iscsi_if_transport_ep(transport, ev, nlh->nlmsg_type);
+ err = iscsi_if_transport_ep(transport, ev, nlh->nlmsg_type, rlen);
break;
case ISCSI_UEVENT_TGT_DSCVR:
- err = iscsi_tgt_dscvr(transport, ev);
+ err = iscsi_tgt_dscvr(transport, ev, rlen);
break;
case ISCSI_UEVENT_SET_HOST_PARAM:
- err = iscsi_set_host_param(transport, ev);
+ err = iscsi_set_host_param(transport, ev, rlen);
break;
case ISCSI_UEVENT_PATH_UPDATE:
- err = iscsi_set_path(transport, ev);
+ err = iscsi_set_path(transport, ev, rlen);
break;
case ISCSI_UEVENT_SET_IFACE_PARAMS:
- err = iscsi_set_iface_params(transport, ev,
- nlmsg_attrlen(nlh, sizeof(*ev)));
+ err = iscsi_set_iface_params(transport, ev, rlen);
break;
case ISCSI_UEVENT_PING:
- err = iscsi_send_ping(transport, ev);
+ err = iscsi_send_ping(transport, ev, rlen);
break;
case ISCSI_UEVENT_GET_CHAP:
err = iscsi_get_chap(transport, nlh);
@@ -4008,13 +4026,10 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
err = iscsi_delete_chap(transport, ev);
break;
case ISCSI_UEVENT_SET_FLASHNODE_PARAMS:
- err = iscsi_set_flashnode_param(transport, ev,
- nlmsg_attrlen(nlh,
- sizeof(*ev)));
+ err = iscsi_set_flashnode_param(transport, ev, rlen);
break;
case ISCSI_UEVENT_NEW_FLASHNODE:
- err = iscsi_new_flashnode(transport, ev,
- nlmsg_attrlen(nlh, sizeof(*ev)));
+ err = iscsi_new_flashnode(transport, ev, rlen);
break;
case ISCSI_UEVENT_DEL_FLASHNODE:
err = iscsi_del_flashnode(transport, ev);
@@ -4029,8 +4044,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, uint32_t *group)
err = iscsi_logout_flashnode_sid(transport, ev);
break;
case ISCSI_UEVENT_SET_CHAP:
- err = iscsi_set_chap(transport, ev,
- nlmsg_attrlen(nlh, sizeof(*ev)));
+ err = iscsi_set_chap(transport, ev, rlen);
break;
case ISCSI_UEVENT_GET_HOST_STATS:
err = iscsi_get_host_stats(transport, nlh);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 421/600] scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (419 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 420/600] scsi: iscsi: Add length check for nlattr payload Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 422/600] scsi: be2iscsi: Add length check when parsing nlattrs Greg Kroah-Hartman
` (189 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lin Ma, Chris Leech,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit ce51c817008450ef4188471db31639d42d37a5e1 ]
The functions iscsi_if_set_param() and iscsi_if_set_host_param() convert an
nlattr payload to type char* and then call C string handling functions like
sscanf and kstrdup:
char *data = (char*)ev + sizeof(*ev);
...
sscanf(data, "%d", &value);
However, since the nlattr is provided by the user-space program and the
nlmsg skb is allocated with GFP_KERNEL instead of GFP_ZERO flag (see
netlink_alloc_large_skb() in netlink_sendmsg()), dirty data on the heap can
lead to an OOB access for those string handling functions.
By investigating how the bug is introduced, we find it is really
interesting as the old version parsing code starting from commit
fd7255f51a13 ("[SCSI] iscsi: add sysfs attrs for uspace sync up") treated
the nlattr as integer bytes instead of string and had length check in
iscsi_copy_param():
if (ev->u.set_param.len != sizeof(uint32_t))
BUG();
But, since the commit a54a52caad4b ("[SCSI] iscsi: fixup set/get param
functions"), the code treated the nlattr as C string while forgetting to
add any strlen checks(), opening the possibility of an OOB access.
Fix the potential OOB by adding the strlen() check before accessing the
buf. If the data passes this check, all low-level set_param handlers can
safely treat this buf as legal C string.
Fixes: fd7255f51a13 ("[SCSI] iscsi: add sysfs attrs for uspace sync up")
Fixes: 1d9bf13a9cf9 ("[SCSI] iscsi class: add iscsi host set param event")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20230723075820.3713119-1-linma@zju.edu.cn
Reviewed-by: Chris Leech <cleech@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/scsi_transport_iscsi.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
index 2680de88f5bbc..49dbcd67579aa 100644
--- a/drivers/scsi/scsi_transport_iscsi.c
+++ b/drivers/scsi/scsi_transport_iscsi.c
@@ -3029,6 +3029,10 @@ iscsi_if_set_param(struct iscsi_transport *transport, struct iscsi_uevent *ev, u
if (!conn || !session)
return -EINVAL;
+ /* data will be regarded as NULL-ended string, do length check */
+ if (strlen(data) > ev->u.set_param.len)
+ return -EINVAL;
+
switch (ev->u.set_param.param) {
case ISCSI_PARAM_SESS_RECOVERY_TMO:
sscanf(data, "%d", &value);
@@ -3202,6 +3206,10 @@ iscsi_set_host_param(struct iscsi_transport *transport,
return -ENODEV;
}
+ /* see similar check in iscsi_if_set_param() */
+ if (strlen(data) > ev->u.set_host_param.len)
+ return -EINVAL;
+
err = transport->set_host_param(shost, ev->u.set_host_param.param,
data, ev->u.set_host_param.len);
scsi_host_put(shost);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 422/600] scsi: be2iscsi: Add length check when parsing nlattrs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (420 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 421/600] scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 423/600] scsi: qla4xxx: " Greg Kroah-Hartman
` (188 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lin Ma, Chris Leech,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit ee0268f230f66cb472df3424f380ea668da2749a ]
beiscsi_iface_set_param() parses nlattr with nla_for_each_attr and assumes
every attributes can be viewed as struct iscsi_iface_param_info.
This is not true because there is no any nla_policy to validate the
attributes passed from the upper function iscsi_set_iface_params().
Add the nla_len check before accessing the nlattr data and return EINVAL if
the length check fails.
Fixes: 0e43895ec1f4 ("[SCSI] be2iscsi: adding functionality to change network settings using iscsiadm")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20230723075938.3713864-1-linma@zju.edu.cn
Reviewed-by: Chris Leech <cleech@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/be2iscsi/be_iscsi.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/scsi/be2iscsi/be_iscsi.c b/drivers/scsi/be2iscsi/be_iscsi.c
index 8aeaddc93b167..8d374ae863ba2 100644
--- a/drivers/scsi/be2iscsi/be_iscsi.c
+++ b/drivers/scsi/be2iscsi/be_iscsi.c
@@ -450,6 +450,10 @@ int beiscsi_iface_set_param(struct Scsi_Host *shost,
}
nla_for_each_attr(attrib, data, dt_len, rm_len) {
+ /* ignore nla_type as it is never used */
+ if (nla_len(attrib) < sizeof(*iface_param))
+ return -EINVAL;
+
iface_param = nla_data(attrib);
if (iface_param->param_type != ISCSI_NET_PARAM)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 423/600] scsi: qla4xxx: Add length check when parsing nlattrs
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (421 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 422/600] scsi: be2iscsi: Add length check when parsing nlattrs Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 424/600] iio: accel: adxl313: Fix adxl313_i2c_id[] table Greg Kroah-Hartman
` (187 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lin Ma, Chris Leech,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lin Ma <linma@zju.edu.cn>
[ Upstream commit 47cd3770e31df942e2bb925a9a855c79ed0662eb ]
There are three places that qla4xxx parses nlattrs:
- qla4xxx_set_chap_entry()
- qla4xxx_iface_set_param()
- qla4xxx_sysfs_ddb_set_param()
and each of them directly converts the nlattr to specific pointer of
structure without length checking. This could be dangerous as those
attributes are not validated and a malformed nlattr (e.g., length 0) could
result in an OOB read that leaks heap dirty data.
Add the nla_len check before accessing the nlattr data and return EINVAL if
the length check fails.
Fixes: 26ffd7b45fe9 ("[SCSI] qla4xxx: Add support to set CHAP entries")
Fixes: 1e9e2be3ee03 ("[SCSI] qla4xxx: Add flash node mgmt support")
Fixes: 00c31889f751 ("[SCSI] qla4xxx: fix data alignment and use nl helpers")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Link: https://lore.kernel.org/r/20230723080053.3714534-1-linma@zju.edu.cn
Reviewed-by: Chris Leech <cleech@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/qla4xxx/ql4_os.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/scsi/qla4xxx/ql4_os.c b/drivers/scsi/qla4xxx/ql4_os.c
index 9e849f6b0d0f7..3f2f9734ee42e 100644
--- a/drivers/scsi/qla4xxx/ql4_os.c
+++ b/drivers/scsi/qla4xxx/ql4_os.c
@@ -968,6 +968,11 @@ static int qla4xxx_set_chap_entry(struct Scsi_Host *shost, void *data, int len)
memset(&chap_rec, 0, sizeof(chap_rec));
nla_for_each_attr(attr, data, len, rem) {
+ if (nla_len(attr) < sizeof(*param_info)) {
+ rc = -EINVAL;
+ goto exit_set_chap;
+ }
+
param_info = nla_data(attr);
switch (param_info->param) {
@@ -2750,6 +2755,11 @@ qla4xxx_iface_set_param(struct Scsi_Host *shost, void *data, uint32_t len)
}
nla_for_each_attr(attr, data, len, rem) {
+ if (nla_len(attr) < sizeof(*iface_param)) {
+ rval = -EINVAL;
+ goto exit_init_fw_cb;
+ }
+
iface_param = nla_data(attr);
if (iface_param->param_type == ISCSI_NET_PARAM) {
@@ -8104,6 +8114,11 @@ qla4xxx_sysfs_ddb_set_param(struct iscsi_bus_flash_session *fnode_sess,
memset((void *)&chap_tbl, 0, sizeof(chap_tbl));
nla_for_each_attr(attr, data, len, rem) {
+ if (nla_len(attr) < sizeof(*fnode_param)) {
+ rc = -EINVAL;
+ goto exit_set_param;
+ }
+
fnode_param = nla_data(attr);
switch (fnode_param->param) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 424/600] iio: accel: adxl313: Fix adxl313_i2c_id[] table
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (422 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 423/600] scsi: qla4xxx: " Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 425/600] serial: sprd: Assign sprd_port after initialized to avoid wrong access Greg Kroah-Hartman
` (186 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jonathan Cameron, Biju Das,
Geert Uytterhoeven, Jonathan Cameron, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Biju Das <biju.das.jz@bp.renesas.com>
[ Upstream commit f636554c4cd1c644109cc525900a056495b86cc9 ]
The .driver_data in adxl313_i2c_id[] for adxl312 and adxl314 is
wrong. Fix this issue by adding corresponding adxl31x_chip_info
data.
Reported-by: Jonathan Cameron <jic23@kernel.org>
Closes: https://lore.kernel.org/all/20230722172832.04ad7738@jic23-huawei
Fixes: a7a1c60bc4c9 ("drivers: iio: accel: adxl312 and adxl314 support")
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20230725171624.331283-2-biju.das.jz@bp.renesas.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iio/accel/adxl313_i2c.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/adxl313_i2c.c b/drivers/iio/accel/adxl313_i2c.c
index 99cc7fc294882..68785bd3ef2f0 100644
--- a/drivers/iio/accel/adxl313_i2c.c
+++ b/drivers/iio/accel/adxl313_i2c.c
@@ -40,8 +40,8 @@ static const struct regmap_config adxl31x_i2c_regmap_config[] = {
static const struct i2c_device_id adxl313_i2c_id[] = {
{ .name = "adxl312", .driver_data = (kernel_ulong_t)&adxl31x_chip_info[ADXL312] },
- { .name = "adxl313", .driver_data = (kernel_ulong_t)&adxl31x_chip_info[ADXL312] },
- { .name = "adxl314", .driver_data = (kernel_ulong_t)&adxl31x_chip_info[ADXL312] },
+ { .name = "adxl313", .driver_data = (kernel_ulong_t)&adxl31x_chip_info[ADXL313] },
+ { .name = "adxl314", .driver_data = (kernel_ulong_t)&adxl31x_chip_info[ADXL314] },
{ }
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 425/600] serial: sprd: Assign sprd_port after initialized to avoid wrong access
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (423 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 424/600] iio: accel: adxl313: Fix adxl313_i2c_id[] table Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 426/600] serial: sprd: Fix DMA buffer leak issue Greg Kroah-Hartman
` (185 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Chunyan Zhang, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chunyan Zhang <chunyan.zhang@unisoc.com>
[ Upstream commit f9608f1887568b728839d006024585ab02ef29e5 ]
The global pointer 'sprd_port' may not zero when sprd_probe returns
failure, that is a risk for sprd_port to be accessed afterward, and
may lead to unexpected errors.
For example:
There are two UART ports, UART1 is used for console and configured in
kernel command line, i.e. "console=";
The UART1 probe failed and the memory allocated to sprd_port[1] was
released, but sprd_port[1] was not set to NULL;
In UART2 probe, the same virtual address was allocated to sprd_port[2],
and UART2 probe process finally will go into sprd_console_setup() to
register UART1 as console since it is configured as preferred console
(filled to console_cmdline[]), but the console parameters (sprd_port[1])
belong to UART2.
So move the sprd_port[] assignment to where the port already initialized
can avoid the above issue.
Fixes: b7396a38fb28 ("tty/serial: Add Spreadtrum sc9836-uart driver support")
Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Link: https://lore.kernel.org/r/20230725064053.235448-1-chunyan.zhang@unisoc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/sprd_serial.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 342a879676315..58825443529f3 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -1132,7 +1132,7 @@ static bool sprd_uart_is_console(struct uart_port *uport)
static int sprd_clk_init(struct uart_port *uport)
{
struct clk *clk_uart, *clk_parent;
- struct sprd_uart_port *u = sprd_port[uport->line];
+ struct sprd_uart_port *u = container_of(uport, struct sprd_uart_port, port);
clk_uart = devm_clk_get(uport->dev, "uart");
if (IS_ERR(clk_uart)) {
@@ -1175,22 +1175,22 @@ static int sprd_probe(struct platform_device *pdev)
{
struct resource *res;
struct uart_port *up;
+ struct sprd_uart_port *sport;
int irq;
int index;
int ret;
index = of_alias_get_id(pdev->dev.of_node, "serial");
- if (index < 0 || index >= ARRAY_SIZE(sprd_port)) {
+ if (index < 0 || index >= UART_NR_MAX) {
dev_err(&pdev->dev, "got a wrong serial alias id %d\n", index);
return -EINVAL;
}
- sprd_port[index] = devm_kzalloc(&pdev->dev, sizeof(*sprd_port[index]),
- GFP_KERNEL);
- if (!sprd_port[index])
+ sport = devm_kzalloc(&pdev->dev, sizeof(*sport), GFP_KERNEL);
+ if (!sport)
return -ENOMEM;
- up = &sprd_port[index]->port;
+ up = &sport->port;
up->dev = &pdev->dev;
up->line = index;
up->type = PORT_SPRD;
@@ -1221,7 +1221,7 @@ static int sprd_probe(struct platform_device *pdev)
* Allocate one dma buffer to prepare for receive transfer, in case
* memory allocation failure at runtime.
*/
- ret = sprd_rx_alloc_buf(sprd_port[index]);
+ ret = sprd_rx_alloc_buf(sport);
if (ret)
return ret;
@@ -1232,14 +1232,23 @@ static int sprd_probe(struct platform_device *pdev)
return ret;
}
}
+
sprd_ports_num++;
+ sprd_port[index] = sport;
ret = uart_add_one_port(&sprd_uart_driver, up);
if (ret)
- sprd_remove(pdev);
+ goto clean_port;
platform_set_drvdata(pdev, up);
+ return 0;
+
+clean_port:
+ sprd_port[index] = NULL;
+ if (--sprd_ports_num == 0)
+ uart_unregister_driver(&sprd_uart_driver);
+ sprd_rx_free_buf(sport);
return ret;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 426/600] serial: sprd: Fix DMA buffer leak issue
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (424 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 425/600] serial: sprd: Assign sprd_port after initialized to avoid wrong access Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 427/600] x86/APM: drop the duplicate APM_MINOR_DEV macro Greg Kroah-Hartman
` (184 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Chunyan Zhang, Baolin Wang,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chunyan Zhang <chunyan.zhang@unisoc.com>
[ Upstream commit cd119fdc3ee1450fbf7f78862b5de44c42b6e47f ]
Release DMA buffer when _probe() returns failure to avoid memory leak.
Fixes: f4487db58eb7 ("serial: sprd: Add DMA mode support")
Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230725064053.235448-2-chunyan.zhang@unisoc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/sprd_serial.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/serial/sprd_serial.c b/drivers/tty/serial/sprd_serial.c
index 58825443529f3..9c7f71993e945 100644
--- a/drivers/tty/serial/sprd_serial.c
+++ b/drivers/tty/serial/sprd_serial.c
@@ -367,7 +367,7 @@ static void sprd_rx_free_buf(struct sprd_uart_port *sp)
if (sp->rx_dma.virt)
dma_free_coherent(sp->port.dev, SPRD_UART_RX_SIZE,
sp->rx_dma.virt, sp->rx_dma.phys_addr);
-
+ sp->rx_dma.virt = NULL;
}
static int sprd_rx_dma_config(struct uart_port *port, u32 burst)
@@ -1229,7 +1229,7 @@ static int sprd_probe(struct platform_device *pdev)
ret = uart_register_driver(&sprd_uart_driver);
if (ret < 0) {
pr_err("Failed to register SPRD-UART driver\n");
- return ret;
+ goto free_rx_buf;
}
}
@@ -1248,6 +1248,7 @@ static int sprd_probe(struct platform_device *pdev)
sprd_port[index] = NULL;
if (--sprd_ports_num == 0)
uart_unregister_driver(&sprd_uart_driver);
+free_rx_buf:
sprd_rx_free_buf(sport);
return ret;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 427/600] x86/APM: drop the duplicate APM_MINOR_DEV macro
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (425 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 426/600] serial: sprd: Fix DMA buffer leak issue Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 428/600] RDMA/rxe: Split rxe_run_task() into two subroutines Greg Kroah-Hartman
` (183 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Randy Dunlap, Jiri Kosina, x86,
Sohil Mehta, Corentin Labbe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Randy Dunlap <rdunlap@infradead.org>
[ Upstream commit 4ba2909638a29630a346d6c4907a3105409bee7d ]
This source file already includes <linux/miscdevice.h>, which contains
the same macro. It doesn't need to be defined here again.
Fixes: 874bcd00f520 ("apm-emulation: move APM_MINOR_DEV to include/linux/miscdevice.h")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Jiri Kosina <jikos@kernel.org>
Cc: x86@kernel.org
Cc: Sohil Mehta <sohil.mehta@intel.com>
Cc: Corentin Labbe <clabbe.montjoie@gmail.com>
Reviewed-by: Sohil Mehta <sohil.mehta@intel.com>
Link: https://lore.kernel.org/r/20230728011120.759-1-rdunlap@infradead.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/kernel/apm_32.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c
index 60e330cdbd175..6e38188633a4d 100644
--- a/arch/x86/kernel/apm_32.c
+++ b/arch/x86/kernel/apm_32.c
@@ -238,12 +238,6 @@
extern int (*console_blank_hook)(int);
#endif
-/*
- * The apm_bios device is one of the misc char devices.
- * This is its minor number.
- */
-#define APM_MINOR_DEV 134
-
/*
* Various options can be changed at boot time as follows:
* (We allow underscores for compatibility with the modules code)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 428/600] RDMA/rxe: Split rxe_run_task() into two subroutines
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (426 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 427/600] x86/APM: drop the duplicate APM_MINOR_DEV macro Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 429/600] RDMA/rxe: Fix incomplete state save in rxe_requester Greg Kroah-Hartman
` (182 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ian Ziemba, Bob Pearson,
Jason Gunthorpe, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bob Pearson <rpearsonhpe@gmail.com>
[ Upstream commit dccb23f6c312e4480fe32ccbc2afac1a5cac7e5e ]
Split rxe_run_task(task, sched) into rxe_run_task(task) and
rxe_sched_task(task).
Link: https://lore.kernel.org/r/20221021200118.2163-5-rpearsonhpe@gmail.com
Signed-off-by: Ian Ziemba <ian.ziemba@hpe.com>
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Stable-dep-of: 5d122db2ff80 ("RDMA/rxe: Fix incomplete state save in rxe_requester")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/sw/rxe/rxe_comp.c | 19 +++++++++++--------
drivers/infiniband/sw/rxe/rxe_net.c | 4 ++--
drivers/infiniband/sw/rxe/rxe_qp.c | 10 +++++-----
drivers/infiniband/sw/rxe/rxe_req.c | 10 +++++-----
drivers/infiniband/sw/rxe/rxe_resp.c | 5 ++++-
drivers/infiniband/sw/rxe/rxe_task.c | 15 ++++++++++-----
drivers/infiniband/sw/rxe/rxe_task.h | 7 +++----
drivers/infiniband/sw/rxe/rxe_verbs.c | 8 ++++----
8 files changed, 44 insertions(+), 34 deletions(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_comp.c b/drivers/infiniband/sw/rxe/rxe_comp.c
index fb0c008af78cc..d2a2501236174 100644
--- a/drivers/infiniband/sw/rxe/rxe_comp.c
+++ b/drivers/infiniband/sw/rxe/rxe_comp.c
@@ -118,7 +118,7 @@ void retransmit_timer(struct timer_list *t)
if (qp->valid) {
qp->comp.timeout = 1;
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
}
}
@@ -132,7 +132,10 @@ void rxe_comp_queue_pkt(struct rxe_qp *qp, struct sk_buff *skb)
if (must_sched != 0)
rxe_counter_inc(SKB_TO_PKT(skb)->rxe, RXE_CNT_COMPLETER_SCHED);
- rxe_run_task(&qp->comp.task, must_sched);
+ if (must_sched)
+ rxe_sched_task(&qp->comp.task);
+ else
+ rxe_run_task(&qp->comp.task);
}
static inline enum comp_state get_wqe(struct rxe_qp *qp,
@@ -305,7 +308,7 @@ static inline enum comp_state check_ack(struct rxe_qp *qp,
qp->comp.psn = pkt->psn;
if (qp->req.wait_psn) {
qp->req.wait_psn = 0;
- rxe_run_task(&qp->req.task, 0);
+ rxe_run_task(&qp->req.task);
}
}
return COMPST_ERROR_RETRY;
@@ -452,7 +455,7 @@ static void do_complete(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
*/
if (qp->req.wait_fence) {
qp->req.wait_fence = 0;
- rxe_run_task(&qp->req.task, 0);
+ rxe_run_task(&qp->req.task);
}
}
@@ -466,7 +469,7 @@ static inline enum comp_state complete_ack(struct rxe_qp *qp,
if (qp->req.need_rd_atomic) {
qp->comp.timeout_retry = 0;
qp->req.need_rd_atomic = 0;
- rxe_run_task(&qp->req.task, 0);
+ rxe_run_task(&qp->req.task);
}
}
@@ -512,7 +515,7 @@ static inline enum comp_state complete_wqe(struct rxe_qp *qp,
if (qp->req.wait_psn) {
qp->req.wait_psn = 0;
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
}
}
@@ -646,7 +649,7 @@ int rxe_completer(void *arg)
if (qp->req.wait_psn) {
qp->req.wait_psn = 0;
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
}
state = COMPST_DONE;
@@ -714,7 +717,7 @@ int rxe_completer(void *arg)
RXE_CNT_COMP_RETRY);
qp->req.need_retry = 1;
qp->comp.started_retry = 1;
- rxe_run_task(&qp->req.task, 0);
+ rxe_run_task(&qp->req.task);
}
goto done;
diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
index 65d16024b3bf6..719432808a063 100644
--- a/drivers/infiniband/sw/rxe/rxe_net.c
+++ b/drivers/infiniband/sw/rxe/rxe_net.c
@@ -348,7 +348,7 @@ static void rxe_skb_tx_dtor(struct sk_buff *skb)
if (unlikely(qp->need_req_skb &&
skb_out < RXE_INFLIGHT_SKBS_PER_QP_LOW))
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
rxe_put(qp);
}
@@ -435,7 +435,7 @@ int rxe_xmit_packet(struct rxe_qp *qp, struct rxe_pkt_info *pkt,
if ((qp_type(qp) != IB_QPT_RC) &&
(pkt->mask & RXE_END_MASK)) {
pkt->wqe->state = wqe_state_done;
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
}
rxe_counter_inc(rxe, RXE_CNT_SENT_PKTS);
diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c
index 59b2024b34ef4..709c63e9773c5 100644
--- a/drivers/infiniband/sw/rxe/rxe_qp.c
+++ b/drivers/infiniband/sw/rxe/rxe_qp.c
@@ -539,10 +539,10 @@ static void rxe_qp_drain(struct rxe_qp *qp)
if (qp->req.state != QP_STATE_DRAINED) {
qp->req.state = QP_STATE_DRAIN;
if (qp_type(qp) == IB_QPT_RC)
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
else
__rxe_do_task(&qp->comp.task);
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
}
}
}
@@ -556,13 +556,13 @@ void rxe_qp_error(struct rxe_qp *qp)
qp->attr.qp_state = IB_QPS_ERR;
/* drain work and packet queues */
- rxe_run_task(&qp->resp.task, 1);
+ rxe_sched_task(&qp->resp.task);
if (qp_type(qp) == IB_QPT_RC)
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
else
__rxe_do_task(&qp->comp.task);
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
}
/* called by the modify qp verb */
diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c
index f637712079705..41f1d84f0acbf 100644
--- a/drivers/infiniband/sw/rxe/rxe_req.c
+++ b/drivers/infiniband/sw/rxe/rxe_req.c
@@ -105,7 +105,7 @@ void rnr_nak_timer(struct timer_list *t)
/* request a send queue retry */
qp->req.need_retry = 1;
qp->req.wait_for_rnr_timer = 0;
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
}
static struct rxe_send_wqe *req_next_wqe(struct rxe_qp *qp)
@@ -608,7 +608,7 @@ static int rxe_do_local_ops(struct rxe_qp *qp, struct rxe_send_wqe *wqe)
* which can lead to a deadlock. So go ahead and complete
* it now.
*/
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
return 0;
}
@@ -733,7 +733,7 @@ int rxe_requester(void *arg)
qp->req.wqe_index);
wqe->state = wqe_state_done;
wqe->status = IB_WC_SUCCESS;
- rxe_run_task(&qp->comp.task, 0);
+ rxe_run_task(&qp->comp.task);
goto done;
}
payload = mtu;
@@ -795,7 +795,7 @@ int rxe_requester(void *arg)
rollback_state(wqe, qp, &rollback_wqe, rollback_psn);
if (err == -EAGAIN) {
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
goto exit;
}
@@ -817,7 +817,7 @@ int rxe_requester(void *arg)
qp->req.wqe_index = queue_next_index(qp->sq.queue, qp->req.wqe_index);
wqe->state = wqe_state_error;
qp->req.state = QP_STATE_ERROR;
- rxe_run_task(&qp->comp.task, 0);
+ rxe_run_task(&qp->comp.task);
exit:
ret = -EAGAIN;
out:
diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
index 9f65c346d8432..a45202cecf2d7 100644
--- a/drivers/infiniband/sw/rxe/rxe_resp.c
+++ b/drivers/infiniband/sw/rxe/rxe_resp.c
@@ -91,7 +91,10 @@ void rxe_resp_queue_pkt(struct rxe_qp *qp, struct sk_buff *skb)
must_sched = (pkt->opcode == IB_OPCODE_RC_RDMA_READ_REQUEST) ||
(skb_queue_len(&qp->req_pkts) > 1);
- rxe_run_task(&qp->resp.task, must_sched);
+ if (must_sched)
+ rxe_sched_task(&qp->resp.task);
+ else
+ rxe_run_task(&qp->resp.task);
}
static inline enum resp_states get_req(struct rxe_qp *qp,
diff --git a/drivers/infiniband/sw/rxe/rxe_task.c b/drivers/infiniband/sw/rxe/rxe_task.c
index 182d0532a8ab9..446ee2c3d3813 100644
--- a/drivers/infiniband/sw/rxe/rxe_task.c
+++ b/drivers/infiniband/sw/rxe/rxe_task.c
@@ -127,15 +127,20 @@ void rxe_cleanup_task(struct rxe_task *task)
tasklet_kill(&task->tasklet);
}
-void rxe_run_task(struct rxe_task *task, int sched)
+void rxe_run_task(struct rxe_task *task)
{
if (task->destroyed)
return;
- if (sched)
- tasklet_schedule(&task->tasklet);
- else
- rxe_do_task(&task->tasklet);
+ rxe_do_task(&task->tasklet);
+}
+
+void rxe_sched_task(struct rxe_task *task)
+{
+ if (task->destroyed)
+ return;
+
+ tasklet_schedule(&task->tasklet);
}
void rxe_disable_task(struct rxe_task *task)
diff --git a/drivers/infiniband/sw/rxe/rxe_task.h b/drivers/infiniband/sw/rxe/rxe_task.h
index b3dfd970d1dc6..590b1c1d7e7ca 100644
--- a/drivers/infiniband/sw/rxe/rxe_task.h
+++ b/drivers/infiniband/sw/rxe/rxe_task.h
@@ -52,10 +52,9 @@ int __rxe_do_task(struct rxe_task *task);
*/
void rxe_do_task(struct tasklet_struct *t);
-/* run a task, else schedule it to run as a tasklet, The decision
- * to run or schedule tasklet is based on the parameter sched.
- */
-void rxe_run_task(struct rxe_task *task, int sched);
+void rxe_run_task(struct rxe_task *task);
+
+void rxe_sched_task(struct rxe_task *task);
/* keep a task from scheduling */
void rxe_disable_task(struct rxe_task *task);
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index be13bcb4cc406..065717c11cba5 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -678,9 +678,9 @@ static int rxe_post_send_kernel(struct rxe_qp *qp, const struct ib_send_wr *wr,
wr = next;
}
- rxe_run_task(&qp->req.task, 1);
+ rxe_sched_task(&qp->req.task);
if (unlikely(qp->req.state == QP_STATE_ERROR))
- rxe_run_task(&qp->comp.task, 1);
+ rxe_sched_task(&qp->comp.task);
return err;
}
@@ -702,7 +702,7 @@ static int rxe_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
if (qp->is_user) {
/* Utilize process context to do protocol processing */
- rxe_run_task(&qp->req.task, 0);
+ rxe_run_task(&qp->req.task);
return 0;
} else
return rxe_post_send_kernel(qp, wr, bad_wr);
@@ -740,7 +740,7 @@ static int rxe_post_recv(struct ib_qp *ibqp, const struct ib_recv_wr *wr,
spin_unlock_irqrestore(&rq->producer_lock, flags);
if (qp->resp.state == QP_STATE_ERROR)
- rxe_run_task(&qp->resp.task, 1);
+ rxe_sched_task(&qp->resp.task);
return err;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 429/600] RDMA/rxe: Fix incomplete state save in rxe_requester
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (427 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 428/600] RDMA/rxe: Split rxe_run_task() into two subroutines Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 430/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly Greg Kroah-Hartman
` (181 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bob Pearson, Jason Gunthorpe,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bob Pearson <rpearsonhpe@gmail.com>
[ Upstream commit 5d122db2ff80cd2aed4dcd630befb56b51ddf947 ]
If a send packet is dropped by the IP layer in rxe_requester()
the call to rxe_xmit_packet() can fail with err == -EAGAIN.
To recover, the state of the wqe is restored to the state before
the packet was sent so it can be resent. However, the routines
that save and restore the state miss a significnt part of the
variable state in the wqe, the dma struct which is used to process
through the sge table. And, the state is not saved before the packet
is built which modifies the dma struct.
Under heavy stress testing with many QPs on a fast node sending
large messages to a slow node dropped packets are observed and
the resent packets are corrupted because the dma struct was not
restored. This patch fixes this behavior and allows the test cases
to succeed.
Fixes: 3050b9985024 ("IB/rxe: Fix race condition between requester and completer")
Link: https://lore.kernel.org/r/20230721200748.4604-1-rpearsonhpe@gmail.com
Signed-off-by: Bob Pearson <rpearsonhpe@gmail.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/sw/rxe/rxe_req.c | 45 ++++++++++++++++-------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c
index 41f1d84f0acbf..2ace1007a4195 100644
--- a/drivers/infiniband/sw/rxe/rxe_req.c
+++ b/drivers/infiniband/sw/rxe/rxe_req.c
@@ -529,10 +529,11 @@ static void save_state(struct rxe_send_wqe *wqe,
struct rxe_send_wqe *rollback_wqe,
u32 *rollback_psn)
{
- rollback_wqe->state = wqe->state;
+ rollback_wqe->state = wqe->state;
rollback_wqe->first_psn = wqe->first_psn;
- rollback_wqe->last_psn = wqe->last_psn;
- *rollback_psn = qp->req.psn;
+ rollback_wqe->last_psn = wqe->last_psn;
+ rollback_wqe->dma = wqe->dma;
+ *rollback_psn = qp->req.psn;
}
static void rollback_state(struct rxe_send_wqe *wqe,
@@ -540,10 +541,11 @@ static void rollback_state(struct rxe_send_wqe *wqe,
struct rxe_send_wqe *rollback_wqe,
u32 rollback_psn)
{
- wqe->state = rollback_wqe->state;
+ wqe->state = rollback_wqe->state;
wqe->first_psn = rollback_wqe->first_psn;
- wqe->last_psn = rollback_wqe->last_psn;
- qp->req.psn = rollback_psn;
+ wqe->last_psn = rollback_wqe->last_psn;
+ wqe->dma = rollback_wqe->dma;
+ qp->req.psn = rollback_psn;
}
static void update_state(struct rxe_qp *qp, struct rxe_pkt_info *pkt)
@@ -746,6 +748,9 @@ int rxe_requester(void *arg)
pkt.mask = rxe_opcode[opcode].mask;
pkt.wqe = wqe;
+ /* save wqe state before we build and send packet */
+ save_state(wqe, qp, &rollback_wqe, &rollback_psn);
+
av = rxe_get_av(&pkt, &ah);
if (unlikely(!av)) {
pr_err("qp#%d Failed no address vector\n", qp_num(qp));
@@ -778,29 +783,29 @@ int rxe_requester(void *arg)
if (ah)
rxe_put(ah);
- /*
- * To prevent a race on wqe access between requester and completer,
- * wqe members state and psn need to be set before calling
- * rxe_xmit_packet().
- * Otherwise, completer might initiate an unjustified retry flow.
- */
- save_state(wqe, qp, &rollback_wqe, &rollback_psn);
+ /* update wqe state as though we had sent it */
update_wqe_state(qp, wqe, &pkt);
update_wqe_psn(qp, wqe, &pkt, payload);
err = rxe_xmit_packet(qp, &pkt, skb);
if (err) {
- qp->need_req_skb = 1;
+ if (err != -EAGAIN) {
+ wqe->status = IB_WC_LOC_QP_OP_ERR;
+ goto err;
+ }
+ /* the packet was dropped so reset wqe to the state
+ * before we sent it so we can try to resend
+ */
rollback_state(wqe, qp, &rollback_wqe, rollback_psn);
- if (err == -EAGAIN) {
- rxe_sched_task(&qp->req.task);
- goto exit;
- }
+ /* force a delay until the dropped packet is freed and
+ * the send queue is drained below the low water mark
+ */
+ qp->need_req_skb = 1;
- wqe->status = IB_WC_LOC_QP_OP_ERR;
- goto err;
+ rxe_sched_task(&qp->req.task);
+ goto exit;
}
update_state(qp, &pkt);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 430/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (428 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 429/600] RDMA/rxe: Fix incomplete state save in rxe_requester Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 431/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() directly Greg Kroah-Hartman
` (180 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Saurav Kashyap, Rob Evers,
Johannes Thumshirn, David Laight, Jozef Bacik, Laurence Oberman,
James E.J. Bottomley, Martin K. Petersen,
GR-QLogic-Storage-Upstream, linux-scsi, Johannes Thumshirn,
Oleksandr Natalenko, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Oleksandr Natalenko <oleksandr@redhat.com>
[ Upstream commit 7d3d20dee4f648ec44e9717d5f647d594d184433 ]
The qedf_dbg_stop_io_on_error_cmd_read() function invokes sprintf()
directly on a __user pointer, which may crash the kernel.
Avoid doing that by using a small on-stack buffer for scnprintf() and then
calling simple_read_from_buffer() which does a proper copy_to_user() call.
Fixes: 61d8658b4a43 ("scsi: qedf: Add QLogic FastLinQ offload FCoE driver framework.")
Link: https://lore.kernel.org/lkml/20230724120241.40495-1-oleksandr@redhat.com/
Link: https://lore.kernel.org/linux-scsi/20230726101236.11922-1-skashyap@marvell.com/
Cc: Saurav Kashyap <skashyap@marvell.com>
Cc: Rob Evers <revers@redhat.com>
Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
Cc: David Laight <David.Laight@ACULAB.COM>
Cc: Jozef Bacik <jobacik@redhat.com>
Cc: Laurence Oberman <loberman@redhat.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: GR-QLogic-Storage-Upstream@marvell.com
Cc: linux-scsi@vger.kernel.org
Reviewed-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Acked-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Oleksandr Natalenko <oleksandr@redhat.com>
Link: https://lore.kernel.org/r/20230731084034.37021-2-oleksandr@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/qedf/qedf_debugfs.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/qedf/qedf_debugfs.c b/drivers/scsi/qedf/qedf_debugfs.c
index a3ed681c8ce3f..3eb4334ac6a32 100644
--- a/drivers/scsi/qedf/qedf_debugfs.c
+++ b/drivers/scsi/qedf/qedf_debugfs.c
@@ -185,18 +185,17 @@ qedf_dbg_stop_io_on_error_cmd_read(struct file *filp, char __user *buffer,
size_t count, loff_t *ppos)
{
int cnt;
+ char cbuf[7];
struct qedf_dbg_ctx *qedf_dbg =
(struct qedf_dbg_ctx *)filp->private_data;
struct qedf_ctx *qedf = container_of(qedf_dbg,
struct qedf_ctx, dbg_ctx);
QEDF_INFO(qedf_dbg, QEDF_LOG_DEBUGFS, "entered\n");
- cnt = sprintf(buffer, "%s\n",
+ cnt = scnprintf(cbuf, sizeof(cbuf), "%s\n",
qedf->stop_io_on_error ? "true" : "false");
- cnt = min_t(int, count, cnt - *ppos);
- *ppos += cnt;
- return cnt;
+ return simple_read_from_buffer(buffer, count, ppos, cbuf, cnt);
}
static ssize_t
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 431/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() directly
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (429 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 430/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 432/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly Greg Kroah-Hartman
` (179 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Saurav Kashyap, Rob Evers,
Johannes Thumshirn, David Laight, Jozef Bacik, Laurence Oberman,
James E.J. Bottomley, Martin K. Petersen,
GR-QLogic-Storage-Upstream, linux-scsi, Johannes Thumshirn,
Oleksandr Natalenko, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Oleksandr Natalenko <oleksandr@redhat.com>
[ Upstream commit 31b5991a9a91ba97237ac9da509d78eec453ff72 ]
The qedf_dbg_debug_cmd_read() function invokes sprintf() directly on a
__user pointer, which may crash the kernel.
Avoid doing that by using a small on-stack buffer for scnprintf() and then
calling simple_read_from_buffer() which does a proper copy_to_user() call.
Fixes: 61d8658b4a43 ("scsi: qedf: Add QLogic FastLinQ offload FCoE driver framework.")
Link: https://lore.kernel.org/lkml/20230724120241.40495-1-oleksandr@redhat.com/
Link: https://lore.kernel.org/linux-scsi/20230726101236.11922-1-skashyap@marvell.com/
Cc: Saurav Kashyap <skashyap@marvell.com>
Cc: Rob Evers <revers@redhat.com>
Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
Cc: David Laight <David.Laight@ACULAB.COM>
Cc: Jozef Bacik <jobacik@redhat.com>
Cc: Laurence Oberman <loberman@redhat.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: GR-QLogic-Storage-Upstream@marvell.com
Cc: linux-scsi@vger.kernel.org
Reviewed-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Acked-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Oleksandr Natalenko <oleksandr@redhat.com>
Link: https://lore.kernel.org/r/20230731084034.37021-3-oleksandr@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/qedf/qedf_debugfs.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/qedf/qedf_debugfs.c b/drivers/scsi/qedf/qedf_debugfs.c
index 3eb4334ac6a32..1c5716540e465 100644
--- a/drivers/scsi/qedf/qedf_debugfs.c
+++ b/drivers/scsi/qedf/qedf_debugfs.c
@@ -138,15 +138,14 @@ qedf_dbg_debug_cmd_read(struct file *filp, char __user *buffer, size_t count,
loff_t *ppos)
{
int cnt;
+ char cbuf[32];
struct qedf_dbg_ctx *qedf_dbg =
(struct qedf_dbg_ctx *)filp->private_data;
QEDF_INFO(qedf_dbg, QEDF_LOG_DEBUGFS, "debug mask=0x%x\n", qedf_debug);
- cnt = sprintf(buffer, "debug mask = 0x%x\n", qedf_debug);
+ cnt = scnprintf(cbuf, sizeof(cbuf), "debug mask = 0x%x\n", qedf_debug);
- cnt = min_t(int, count, cnt - *ppos);
- *ppos += cnt;
- return cnt;
+ return simple_read_from_buffer(buffer, count, ppos, cbuf, cnt);
}
static ssize_t
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 432/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (430 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 431/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() directly Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 433/600] RDMA/irdma: Replace one-element array with flexible-array member Greg Kroah-Hartman
` (178 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Saurav Kashyap, Rob Evers,
Johannes Thumshirn, David Laight, Jozef Bacik, Laurence Oberman,
James E.J. Bottomley, Martin K. Petersen,
GR-QLogic-Storage-Upstream, linux-scsi, Johannes Thumshirn,
Oleksandr Natalenko, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Oleksandr Natalenko <oleksandr@redhat.com>
[ Upstream commit 25dbc20deab5165f847b4eb42f376f725a986ee8 ]
The qedf_dbg_fp_int_cmd_read() function invokes sprintf() directly on a
__user pointer, which may crash the kernel.
Avoid doing that by vmalloc()'ating a buffer for scnprintf() and then
calling simple_read_from_buffer() which does a proper copy_to_user() call.
Fixes: 61d8658b4a43 ("scsi: qedf: Add QLogic FastLinQ offload FCoE driver framework.")
Link: https://lore.kernel.org/lkml/20230724120241.40495-1-oleksandr@redhat.com/
Link: https://lore.kernel.org/linux-scsi/20230726101236.11922-1-skashyap@marvell.com/
Cc: Saurav Kashyap <skashyap@marvell.com>
Cc: Rob Evers <revers@redhat.com>
Cc: Johannes Thumshirn <Johannes.Thumshirn@wdc.com>
Cc: David Laight <David.Laight@ACULAB.COM>
Cc: Jozef Bacik <jobacik@redhat.com>
Cc: Laurence Oberman <loberman@redhat.com>
Cc: "James E.J. Bottomley" <jejb@linux.ibm.com>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: GR-QLogic-Storage-Upstream@marvell.com
Cc: linux-scsi@vger.kernel.org
Reviewed-by: Laurence Oberman <loberman@redhat.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: Laurence Oberman <loberman@redhat.com>
Acked-by: Saurav Kashyap <skashyap@marvell.com>
Signed-off-by: Oleksandr Natalenko <oleksandr@redhat.com>
Link: https://lore.kernel.org/r/20230731084034.37021-4-oleksandr@redhat.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/qedf/qedf_dbg.h | 2 ++
drivers/scsi/qedf/qedf_debugfs.c | 21 +++++++++++++++------
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/qedf/qedf_dbg.h b/drivers/scsi/qedf/qedf_dbg.h
index f4d81127239eb..5ec2b817c694a 100644
--- a/drivers/scsi/qedf/qedf_dbg.h
+++ b/drivers/scsi/qedf/qedf_dbg.h
@@ -59,6 +59,8 @@ extern uint qedf_debug;
#define QEDF_LOG_NOTICE 0x40000000 /* Notice logs */
#define QEDF_LOG_WARN 0x80000000 /* Warning logs */
+#define QEDF_DEBUGFS_LOG_LEN (2 * PAGE_SIZE)
+
/* Debug context structure */
struct qedf_dbg_ctx {
unsigned int host_no;
diff --git a/drivers/scsi/qedf/qedf_debugfs.c b/drivers/scsi/qedf/qedf_debugfs.c
index 1c5716540e465..451fd236bfd05 100644
--- a/drivers/scsi/qedf/qedf_debugfs.c
+++ b/drivers/scsi/qedf/qedf_debugfs.c
@@ -8,6 +8,7 @@
#include <linux/uaccess.h>
#include <linux/debugfs.h>
#include <linux/module.h>
+#include <linux/vmalloc.h>
#include "qedf.h"
#include "qedf_dbg.h"
@@ -98,7 +99,9 @@ static ssize_t
qedf_dbg_fp_int_cmd_read(struct file *filp, char __user *buffer, size_t count,
loff_t *ppos)
{
+ ssize_t ret;
size_t cnt = 0;
+ char *cbuf;
int id;
struct qedf_fastpath *fp = NULL;
struct qedf_dbg_ctx *qedf_dbg =
@@ -108,19 +111,25 @@ qedf_dbg_fp_int_cmd_read(struct file *filp, char __user *buffer, size_t count,
QEDF_INFO(qedf_dbg, QEDF_LOG_DEBUGFS, "entered\n");
- cnt = sprintf(buffer, "\nFastpath I/O completions\n\n");
+ cbuf = vmalloc(QEDF_DEBUGFS_LOG_LEN);
+ if (!cbuf)
+ return 0;
+
+ cnt += scnprintf(cbuf + cnt, QEDF_DEBUGFS_LOG_LEN - cnt, "\nFastpath I/O completions\n\n");
for (id = 0; id < qedf->num_queues; id++) {
fp = &(qedf->fp_array[id]);
if (fp->sb_id == QEDF_SB_ID_NULL)
continue;
- cnt += sprintf((buffer + cnt), "#%d: %lu\n", id,
- fp->completions);
+ cnt += scnprintf(cbuf + cnt, QEDF_DEBUGFS_LOG_LEN - cnt,
+ "#%d: %lu\n", id, fp->completions);
}
- cnt = min_t(int, count, cnt - *ppos);
- *ppos += cnt;
- return cnt;
+ ret = simple_read_from_buffer(buffer, count, ppos, cbuf, cnt);
+
+ vfree(cbuf);
+
+ return ret;
}
static ssize_t
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 433/600] RDMA/irdma: Replace one-element array with flexible-array member
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (431 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 432/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 434/600] coresight: tmc: Explicit type conversions to prevent integer overflow Greg Kroah-Hartman
` (177 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gustavo A. R. Silva, Leon Romanovsky,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gustavo A. R. Silva <gustavoars@kernel.org>
[ Upstream commit 38313c6d2a02c28162e06753b01bd885caf9386d ]
One-element and zero-length arrays are deprecated. So, replace
one-element array in struct irdma_qvlist_info with flexible-array
member.
A patch for this was sent a while ago[1]. However, it seems that, at
the time, the changes were partially folded[2][3], and the actual
flexible-array transformation was omitted. This patch fixes that.
The only binary difference seen before/after changes is shown below:
| drivers/infiniband/hw/irdma/hw.o
| @@ -868,7 +868,7 @@
| drivers/infiniband/hw/irdma/hw.c:484 (discriminator 2)
| size += struct_size(iw_qvlist, qv_info, rf->msix_count);
| 55b: imul $0x45c,%rdi,%rdi
|- 562: add $0x10,%rdi
|+ 562: add $0x4,%rdi
which is, of course, expected as it reflects the mistake made
while folding the patch I've mentioned above.
Worth mentioning is the fact that with this change we save 12 bytes
of memory, as can be inferred from the diff snapshot above. Notice
that:
$ pahole -C rdma_qv_info idrivers/infiniband/hw/irdma/hw.o
struct irdma_qv_info {
u32 v_idx; /* 0 4 */
u16 ceq_idx; /* 4 2 */
u16 aeq_idx; /* 6 2 */
u8 itr_idx; /* 8 1 */
/* size: 12, cachelines: 1, members: 4 */
/* padding: 3 */
/* last cacheline: 12 bytes */
};
Link: https://lore.kernel.org/linux-hardening/20210525230038.GA175516@embeddedor/ [1]
Link: https://lore.kernel.org/linux-hardening/bf46b428deef4e9e89b0ea1704b1f0e5@intel.com/ [2]
Link: https://lore.kernel.org/linux-rdma/20210520143809.819-1-shiraz.saleem@intel.com/T/#u [3]
Fixes: 44d9e52977a1 ("RDMA/irdma: Implement device initialization definitions")
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/ZMpsQrZadBaJGkt4@work
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/irdma/main.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/irdma/main.h b/drivers/infiniband/hw/irdma/main.h
index e64205839d039..9cbe64311f985 100644
--- a/drivers/infiniband/hw/irdma/main.h
+++ b/drivers/infiniband/hw/irdma/main.h
@@ -236,7 +236,7 @@ struct irdma_qv_info {
struct irdma_qvlist_info {
u32 num_vectors;
- struct irdma_qv_info qv_info[1];
+ struct irdma_qv_info qv_info[];
};
struct irdma_gen_ops {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 434/600] coresight: tmc: Explicit type conversions to prevent integer overflow
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (432 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 433/600] RDMA/irdma: Replace one-element array with flexible-array member Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 435/600] interconnect: qcom: qcm2290: Enable sync state Greg Kroah-Hartman
` (176 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ruidong Tian, James Clark,
Suzuki K Poulose, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ruidong Tian <tianruidong@linux.alibaba.com>
[ Upstream commit fd380097cdb305582b7a1f9476391330299d2c59 ]
Perf cs_etm session executed unexpectedly when AUX buffer > 1G.
perf record -C 0 -m ,2G -e cs_etm// -- <workload>
[ perf record: Captured and wrote 2.615 MB perf.data ]
Perf only collect about 2M perf data rather than 2G. This is becasuse
the operation, "nr_pages << PAGE_SHIFT", in coresight tmc driver, will
overflow when nr_pages >= 0x80000(correspond to 1G AUX buffer). The
overflow cause buffer allocation to fail, and TMC driver will alloc
minimal buffer size(1M). You can just get about 2M perf data(1M AUX
buffer + perf data header) at least.
Explicit convert nr_pages to 64 bit to avoid overflow.
Fixes: 22f429f19c41 ("coresight: etm-perf: Add support for ETR backend")
Fixes: 99443ea19e8b ("coresight: Add generic TMC sg table framework")
Fixes: 2e499bbc1a92 ("coresight: tmc: implementing TMC-ETF AUX space API")
Signed-off-by: Ruidong Tian <tianruidong@linux.alibaba.com>
Reviewed-by: James Clark <james.clark@arm.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20230804081514.120171-2-tianruidong@linux.alibaba.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hwtracing/coresight/coresight-tmc-etf.c | 2 +-
drivers/hwtracing/coresight/coresight-tmc-etr.c | 5 +++--
drivers/hwtracing/coresight/coresight-tmc.h | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-tmc-etf.c b/drivers/hwtracing/coresight/coresight-tmc-etf.c
index 4c4cbd1f72584..3f207999377f0 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etf.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etf.c
@@ -428,7 +428,7 @@ static int tmc_set_etf_buffer(struct coresight_device *csdev,
return -EINVAL;
/* wrap head around to the amount of space we have */
- head = handle->head & ((buf->nr_pages << PAGE_SHIFT) - 1);
+ head = handle->head & (((unsigned long)buf->nr_pages << PAGE_SHIFT) - 1);
/* find the page to write to */
buf->cur = head / PAGE_SIZE;
diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
index 368f2e5a86278..1be0e5e0e80b2 100644
--- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
+++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
@@ -45,7 +45,8 @@ struct etr_perf_buffer {
};
/* Convert the perf index to an offset within the ETR buffer */
-#define PERF_IDX2OFF(idx, buf) ((idx) % ((buf)->nr_pages << PAGE_SHIFT))
+#define PERF_IDX2OFF(idx, buf) \
+ ((idx) % ((unsigned long)(buf)->nr_pages << PAGE_SHIFT))
/* Lower limit for ETR hardware buffer */
#define TMC_ETR_PERF_MIN_BUF_SIZE SZ_1M
@@ -1249,7 +1250,7 @@ alloc_etr_buf(struct tmc_drvdata *drvdata, struct perf_event *event,
* than the size requested via sysfs.
*/
if ((nr_pages << PAGE_SHIFT) > drvdata->size) {
- etr_buf = tmc_alloc_etr_buf(drvdata, (nr_pages << PAGE_SHIFT),
+ etr_buf = tmc_alloc_etr_buf(drvdata, ((ssize_t)nr_pages << PAGE_SHIFT),
0, node, NULL);
if (!IS_ERR(etr_buf))
goto done;
diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h
index 66959557cf398..946aab12f9807 100644
--- a/drivers/hwtracing/coresight/coresight-tmc.h
+++ b/drivers/hwtracing/coresight/coresight-tmc.h
@@ -325,7 +325,7 @@ ssize_t tmc_sg_table_get_data(struct tmc_sg_table *sg_table,
static inline unsigned long
tmc_sg_table_buf_size(struct tmc_sg_table *sg_table)
{
- return sg_table->data_pages.nr_pages << PAGE_SHIFT;
+ return (unsigned long)sg_table->data_pages.nr_pages << PAGE_SHIFT;
}
struct coresight_device *tmc_etr_get_catu_device(struct tmc_drvdata *drvdata);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 435/600] interconnect: qcom: qcm2290: Enable sync state
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (433 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 434/600] coresight: tmc: Explicit type conversions to prevent integer overflow Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 436/600] dma-buf/sync_file: Fix docs syntax Greg Kroah-Hartman
` (175 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Georgi Djakov,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 4e048e9b7a160f7112069c0ec2947be15f3e8154 ]
Enable the generic .sync_state callback to ensure there are no
outstanding votes that would waste power.
Generally one would need a bunch of interface clocks to access the QoS
registers when trying to go over all possible nodes during sync_state,
but QCM2290 surprisingly does not seem to require any such handling.
Fixes: 1a14b1ac3935 ("interconnect: qcom: Add QCM2290 driver support")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230720-topic-qcm2290_icc-v2-2-a2ceb9d3e713@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/interconnect/qcom/qcm2290.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/interconnect/qcom/qcm2290.c b/drivers/interconnect/qcom/qcm2290.c
index a29cdb4fac03f..82a2698ad66b1 100644
--- a/drivers/interconnect/qcom/qcm2290.c
+++ b/drivers/interconnect/qcom/qcm2290.c
@@ -1355,6 +1355,7 @@ static struct platform_driver qcm2290_noc_driver = {
.driver = {
.name = "qnoc-qcm2290",
.of_match_table = qcm2290_noc_of_match,
+ .sync_state = icc_sync_state,
},
};
module_platform_driver(qcm2290_noc_driver);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 436/600] dma-buf/sync_file: Fix docs syntax
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (434 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 435/600] interconnect: qcom: qcm2290: Enable sync state Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 437/600] driver core: test_async: fix an error code Greg Kroah-Hartman
` (174 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Rob Clark, Randy Dunlap, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rob Clark <robdclark@chromium.org>
[ Upstream commit 05d56d8079d510a2994039470f65bea85f0075ee ]
Fixes the warning:
include/uapi/linux/sync_file.h:77: warning: Function parameter or member 'num_fences' not described in 'sync_file_info'
Fixes: 2d75c88fefb2 ("staging/android: refactor SYNC IOCTLs")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Link: https://lore.kernel.org/r/20230724145000.125880-1-robdclark@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/uapi/linux/sync_file.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/uapi/linux/sync_file.h b/include/uapi/linux/sync_file.h
index ee2dcfb3d6602..d7f7c04a6e0c1 100644
--- a/include/uapi/linux/sync_file.h
+++ b/include/uapi/linux/sync_file.h
@@ -52,7 +52,7 @@ struct sync_fence_info {
* @name: name of fence
* @status: status of fence. 1: signaled 0:active <0:error
* @flags: sync_file_info flags
- * @num_fences number of fences in the sync_file
+ * @num_fences: number of fences in the sync_file
* @pad: padding for 64-bit alignment, should always be zero
* @sync_fence_info: pointer to array of structs sync_fence_info with all
* fences in the sync_file
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 437/600] driver core: test_async: fix an error code
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (435 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 436/600] dma-buf/sync_file: Fix docs syntax Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 438/600] driver core: Call dma_cleanup() on the test_remove path Greg Kroah-Hartman
` (173 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit 22d2381bbd70a5853c2ee77522f4965139672db9 ]
The test_platform_device_register_node() function should return error
pointers instead of NULL. That is what the callers are expecting.
Fixes: 57ea974fb871 ("driver core: Rewrite test_async_driver_probe to cover serialization and NUMA affinity")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Link: https://lore.kernel.org/r/1e11ed19-e1f6-43d8-b352-474134b7c008@moroto.mountain
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/base/test/test_async_driver_probe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/base/test/test_async_driver_probe.c b/drivers/base/test/test_async_driver_probe.c
index 929410d0dd6fe..3465800baa6c8 100644
--- a/drivers/base/test/test_async_driver_probe.c
+++ b/drivers/base/test/test_async_driver_probe.c
@@ -84,7 +84,7 @@ test_platform_device_register_node(char *name, int id, int nid)
pdev = platform_device_alloc(name, id);
if (!pdev)
- return NULL;
+ return ERR_PTR(-ENOMEM);
if (nid != NUMA_NO_NODE)
set_dev_node(&pdev->dev, nid);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 438/600] driver core: Call dma_cleanup() on the test_remove path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (436 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 437/600] driver core: test_async: fix an error code Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 439/600] kernfs: add stub helper for kernfs_generic_poll() Greg Kroah-Hartman
` (172 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zenghui Yu, Jason Gunthorpe,
Kevin Tian, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Gunthorpe <jgg@nvidia.com>
[ Upstream commit f429378a9bf84d79a7e2cae05d2e3384cf7d68ba ]
When test_remove is enabled really_probe() does not properly pair
dma_configure() with dma_remove(), it will end up calling dma_configure()
twice. This corrupts the owner_cnt and renders the group unusable with
VFIO/etc.
Add the missing cleanup before going back to re_probe.
Fixes: 25f3bcfc54bc ("driver core: Add dma_cleanup callback in bus_type")
Reported-by: Zenghui Yu <yuzenghui@huawei.com>
Tested-by: Zenghui Yu <yuzenghui@huawei.com>
Closes: https://lore.kernel.org/all/6472f254-c3c4-8610-4a37-8d9dfdd54ce8@huawei.com/
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Link: https://lore.kernel.org/r/0-v2-4deed94e283e+40948-really_probe_dma_cleanup_jgg@nvidia.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/base/dd.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 97ab1468a8760..380a53b6aee81 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -674,6 +674,8 @@ static int really_probe(struct device *dev, struct device_driver *drv)
device_remove(dev);
driver_sysfs_remove(dev);
+ if (dev->bus && dev->bus->dma_cleanup)
+ dev->bus->dma_cleanup(dev);
device_unbind_cleanup(dev);
goto re_probe;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 439/600] kernfs: add stub helper for kernfs_generic_poll()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (437 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 438/600] driver core: Call dma_cleanup() on the test_remove path Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 440/600] extcon: cht_wc: add POWER_SUPPLY dependency Greg Kroah-Hartman
` (171 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Arnd Bergmann, Chengming Zhou,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <arnd@arndb.de>
[ Upstream commit 79038a99445f69c5d28494dd4f8c6f0509f65b2e ]
In some randconfig builds, kernfs ends up being disabled, so there is no prototype
for kernfs_generic_poll()
In file included from kernel/sched/build_utility.c:97:
kernel/sched/psi.c:1479:3: error: implicit declaration of function 'kernfs_generic_poll' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
kernfs_generic_poll(t->of, wait);
^
Add a stub helper for it, as we have it for other kernfs functions.
Fixes: aff037078ecae ("sched/psi: use kernfs polling functions for PSI trigger polling")
Fixes: 147e1a97c4a0b ("fs: kernfs: add poll file operation")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Chengming Zhou <zhouchengming@bytedance.com>
Link: https://lore.kernel.org/r/20230724121823.1357562-1-arnd@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
include/linux/kernfs.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index 73f5c120def88..2a36f3218b510 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -550,6 +550,10 @@ static inline int kernfs_setattr(struct kernfs_node *kn,
const struct iattr *iattr)
{ return -ENOSYS; }
+static inline __poll_t kernfs_generic_poll(struct kernfs_open_file *of,
+ struct poll_table_struct *pt)
+{ return -ENOSYS; }
+
static inline void kernfs_notify(struct kernfs_node *kn) { }
static inline int kernfs_xattr_get(struct kernfs_node *kn, const char *name,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 440/600] extcon: cht_wc: add POWER_SUPPLY dependency
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (438 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 439/600] kernfs: add stub helper for kernfs_generic_poll() Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 441/600] iommu/mediatek: Remove unused "mapping" member from mtk_iommu_data Greg Kroah-Hartman
` (170 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Arnd Bergmann, Hans de Goede,
Chanwoo Choi, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnd Bergmann <arnd@arndb.de>
[ Upstream commit d20a3a8a32e3fa564ff25da860c5fc1a97642dfe ]
The driver fails to link when CONFIG_POWER_SUPPLY is disabled:
x86_64-linux-ld: vmlinux.o: in function `cht_wc_extcon_psy_get_prop':
extcon-intel-cht-wc.c:(.text+0x15ccda7): undefined reference to `power_supply_get_drvdata'
x86_64-linux-ld: vmlinux.o: in function `cht_wc_extcon_pwrsrc_event':
extcon-intel-cht-wc.c:(.text+0x15cd3e9): undefined reference to `power_supply_changed'
x86_64-linux-ld: vmlinux.o: in function `cht_wc_extcon_probe':
extcon-intel-cht-wc.c:(.text+0x15cd596): undefined reference to `devm_power_supply_register'
It should be possible to change the driver to not require this at
compile time and still provide other functions, but adding a hard
Kconfig dependency does not seem to have any practical downsides
and is simpler since the option is normally enabled anyway.
Fixes: 66e31186cd2aa ("extcon: intel-cht-wc: Add support for registering a power_supply class-device")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/extcon/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/extcon/Kconfig b/drivers/extcon/Kconfig
index 290186e44e6bd..4dd52a6a5b48d 100644
--- a/drivers/extcon/Kconfig
+++ b/drivers/extcon/Kconfig
@@ -62,6 +62,7 @@ config EXTCON_INTEL_CHT_WC
tristate "Intel Cherrytrail Whiskey Cove PMIC extcon driver"
depends on INTEL_SOC_PMIC_CHTWC
depends on USB_SUPPORT
+ depends on POWER_SUPPLY
select USB_ROLE_SWITCH
help
Say Y here to enable extcon support for charger detection / control
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 441/600] iommu/mediatek: Remove unused "mapping" member from mtk_iommu_data
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (439 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 440/600] extcon: cht_wc: add POWER_SUPPLY dependency Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 442/600] iommu/mediatek: Fix two IOMMU share pagetable issue Greg Kroah-Hartman
` (169 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yong Wu, AngeloGioacchino Del Regno,
Matthias Brugger, Joerg Roedel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yong Wu <yong.wu@mediatek.com>
[ Upstream commit 9ff894edd542618dad2fef538f8272c620a501db ]
Just remove a unused variable that only is for mtk_iommu_v1.
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
Link: https://lore.kernel.org/r/20221018024258.19073-7-yong.wu@mediatek.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Stable-dep-of: cf69ef46dbd9 ("iommu/mediatek: Fix two IOMMU share pagetable issue")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/mtk_iommu.c | 3 ---
1 file changed, 3 deletions(-)
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 2ae5a6058a34a..5ff8982712e0f 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -223,10 +223,7 @@ struct mtk_iommu_data {
struct device *smicomm_dev;
struct mtk_iommu_bank_data *bank;
-
- struct dma_iommu_mapping *mapping; /* For mtk_iommu_v1.c */
struct regmap *pericfg;
-
struct mutex mutex; /* Protect m4u_group/m4u_dom above */
/*
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 442/600] iommu/mediatek: Fix two IOMMU share pagetable issue
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (440 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 441/600] iommu/mediatek: Remove unused "mapping" member from mtk_iommu_data Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 443/600] iommu/sprd: Add missing force_aperture Greg Kroah-Hartman
` (168 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chengci.Xu, Yong Wu,
AngeloGioacchino Del Regno, Alexandre Mergnat, Joerg Roedel,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chengci.Xu <chengci.xu@mediatek.com>
[ Upstream commit cf69ef46dbd980a0b1c956d668e066a73e0acd0f ]
Prepare for mt8188 to fix a two IOMMU HWs share pagetable issue.
We have two MM IOMMU HWs in mt8188, one is VPP-IOMMU, the other is
VDO-IOMMU. The 2 MM IOMMU HWs share pagetable don't work in this case:
a) VPP-IOMMU probe firstly.
b) VDO-IOMMU probe.
c) The master for VDO-IOMMU probe (means frstdata is vpp-iommu).
d) The master in another domain probe. No matter it is vdo or vpp.
Then it still create a new pagetable in step d). The problem is
"frstdata->bank[0]->m4u_dom" was not initialized. Then when d) enter, it
still create a new one.
In this patch, we create a new variable "share_dom" for this share
pgtable case, it should be helpful for readable. and put all the share
pgtable logic in the mtk_iommu_domain_finalise.
In mt8195, the master of VPP-IOMMU probes before than VDO-IOMMU
from its dtsi node sequence, we don't see this issue in it. Prepare for
mt8188.
Fixes: 645b87c190c9 ("iommu/mediatek: Fix 2 HW sharing pgtable issue")
Signed-off-by: Chengci.Xu <chengci.xu@mediatek.com>
Signed-off-by: Yong Wu <yong.wu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
Link: https://lore.kernel.org/r/20230602090227.7264-3-yong.wu@mediatek.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/mtk_iommu.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 5ff8982712e0f..9673cd60c84fc 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -223,6 +223,8 @@ struct mtk_iommu_data {
struct device *smicomm_dev;
struct mtk_iommu_bank_data *bank;
+ struct mtk_iommu_domain *share_dom; /* For 2 HWs share pgtable */
+
struct regmap *pericfg;
struct mutex mutex; /* Protect m4u_group/m4u_dom above */
@@ -574,15 +576,14 @@ static int mtk_iommu_domain_finalise(struct mtk_iommu_domain *dom,
struct mtk_iommu_data *data,
unsigned int region_id)
{
+ struct mtk_iommu_domain *share_dom = data->share_dom;
const struct mtk_iommu_iova_region *region;
- struct mtk_iommu_domain *m4u_dom;
-
- /* Always use bank0 in sharing pgtable case */
- m4u_dom = data->bank[0].m4u_dom;
- if (m4u_dom) {
- dom->iop = m4u_dom->iop;
- dom->cfg = m4u_dom->cfg;
- dom->domain.pgsize_bitmap = m4u_dom->cfg.pgsize_bitmap;
+
+ /* Always use share domain in sharing pgtable case */
+ if (MTK_IOMMU_HAS_FLAG(data->plat_data, SHARE_PGTABLE) && share_dom) {
+ dom->iop = share_dom->iop;
+ dom->cfg = share_dom->cfg;
+ dom->domain.pgsize_bitmap = share_dom->cfg.pgsize_bitmap;
goto update_iova_region;
}
@@ -612,6 +613,9 @@ static int mtk_iommu_domain_finalise(struct mtk_iommu_domain *dom,
/* Update our support page sizes bitmap */
dom->domain.pgsize_bitmap = dom->cfg.pgsize_bitmap;
+ if (MTK_IOMMU_HAS_FLAG(data->plat_data, SHARE_PGTABLE))
+ data->share_dom = dom;
+
update_iova_region:
/* Update the iova region for this domain */
region = data->plat_data->iova_region + region_id;
@@ -662,7 +666,9 @@ static int mtk_iommu_attach_device(struct iommu_domain *domain,
/* Data is in the frstdata in sharing pgtable case. */
frstdata = mtk_iommu_get_frst_data(hw_list);
+ mutex_lock(&frstdata->mutex);
ret = mtk_iommu_domain_finalise(dom, frstdata, region_id);
+ mutex_unlock(&frstdata->mutex);
if (ret) {
mutex_unlock(&dom->mutex);
return -ENODEV;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 443/600] iommu/sprd: Add missing force_aperture
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (441 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 442/600] iommu/mediatek: Fix two IOMMU share pagetable issue Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 444/600] RDMA/hns: Fix port active speed Greg Kroah-Hartman
` (167 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jason Gunthorpe, Chunyan Zhang,
Joerg Roedel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jason Gunthorpe <jgg@nvidia.com>
[ Upstream commit d48a51286c698f7fe8efc688f23a532f4fe9a904 ]
force_aperture was intended to false only by GART drivers that have an
identity translation outside the aperture. This does not describe sprd, so
add the missing 'force_aperture = true'.
Fixes: b23e4fc4e3fa ("iommu: add Unisoc IOMMU basic driver")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Acked-by: Chunyan Zhang <zhang.lyra@gmail.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/sprd-iommu.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c
index fadd2c907222b..8261066de07d7 100644
--- a/drivers/iommu/sprd-iommu.c
+++ b/drivers/iommu/sprd-iommu.c
@@ -147,6 +147,7 @@ static struct iommu_domain *sprd_iommu_domain_alloc(unsigned int domain_type)
dom->domain.geometry.aperture_start = 0;
dom->domain.geometry.aperture_end = SZ_256M - 1;
+ dom->domain.geometry.force_aperture = true;
return &dom->domain;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 444/600] RDMA/hns: Fix port active speed
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (442 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 443/600] iommu/sprd: Add missing force_aperture Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 445/600] RDMA/hns: Fix incorrect post-send with direct wqe of wr-list Greg Kroah-Hartman
` (166 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chengchang Tang, Junxian Huang,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chengchang Tang <tangchengchang@huawei.com>
[ Upstream commit df1bcf90a66a10967a3a43510b42cb3566208011 ]
HW supports a variety of different speed, but the current speed
is fixed.
The real speed should be querried from ethernet.
Fixes: 9a4435375cd1 ("IB/hns: Add driver files for hns RoCE driver")
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20230804012711.808069-2-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/hns/hns_roce_main.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 946ba1109e878..da1b33d818d82 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -219,6 +219,7 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u32 port_num,
unsigned long flags;
enum ib_mtu mtu;
u32 port;
+ int ret;
port = port_num - 1;
@@ -231,8 +232,10 @@ static int hns_roce_query_port(struct ib_device *ib_dev, u32 port_num,
IB_PORT_BOOT_MGMT_SUP;
props->max_msg_sz = HNS_ROCE_MAX_MSG_LEN;
props->pkey_tbl_len = 1;
- props->active_width = IB_WIDTH_4X;
- props->active_speed = 1;
+ ret = ib_get_eth_speed(ib_dev, port_num, &props->active_speed,
+ &props->active_width);
+ if (ret)
+ ibdev_warn(ib_dev, "failed to get speed, ret = %d.\n", ret);
spin_lock_irqsave(&hr_dev->iboe.lock, flags);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 445/600] RDMA/hns: Fix incorrect post-send with direct wqe of wr-list
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (443 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 444/600] RDMA/hns: Fix port active speed Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 446/600] RDMA/hns: Fix inaccurate error label name in init instance Greg Kroah-Hartman
` (165 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Junxian Huang, Leon Romanovsky,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Junxian Huang <huangjunxian6@hisilicon.com>
[ Upstream commit 706efac4477cdb8be857f6322457de524acc02ff ]
Currently, direct wqe is not supported for wr-list. RoCE driver excludes
direct wqe for wr-list by judging whether the number of wr is 1.
For a wr-list where the second wr is a length-error atomic wr, the
post-send driver handles the first wr and adds 1 to the wr number counter
firstly. While handling the second wr, the driver finds out a length error
and terminates the wr handle process, remaining the counter at 1. This
causes the driver mistakenly judges there is only 1 wr and thus enters
the direct wqe process, carrying the current length-error atomic wqe.
This patch fixes the error by adding a judgement whether the current wr
is a bad wr. If so, use the normal doorbell process but not direct wqe
despite the wr number is 1.
Fixes: 01584a5edcc4 ("RDMA/hns: Add support of direct wqe")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20230804012711.808069-3-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index 34a270b6891a9..e9a1985f7f17c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -757,7 +757,8 @@ static int hns_roce_v2_post_send(struct ib_qp *ibqp,
qp->sq.head += nreq;
qp->next_sge = sge_idx;
- if (nreq == 1 && (qp->en_flags & HNS_ROCE_QP_CAP_DIRECT_WQE))
+ if (nreq == 1 && !ret &&
+ (qp->en_flags & HNS_ROCE_QP_CAP_DIRECT_WQE))
write_dwqe(hr_dev, qp, wqe);
else
update_sq_db(hr_dev, qp);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 446/600] RDMA/hns: Fix inaccurate error label name in init instance
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (444 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 445/600] RDMA/hns: Fix incorrect post-send with direct wqe of wr-list Greg Kroah-Hartman
@ 2023-09-11 13:47 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 447/600] RDMA/hns: Fix CQ and QP cache affinity Greg Kroah-Hartman
` (164 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:47 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Junxian Huang, Leon Romanovsky,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Junxian Huang <huangjunxian6@hisilicon.com>
[ Upstream commit c9c0bd3c177d93d80968f720304087ba83fe8f74 ]
This patch fixes inaccurate error label name in init instance.
Fixes: 70f92521584f ("RDMA/hns: Use the reserved loopback QPs to free MR before destroying MPT")
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20230804012711.808069-4-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index e9a1985f7f17c..33980485ef5ba 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -6865,14 +6865,14 @@ static int __hns_roce_hw_v2_init_instance(struct hnae3_handle *handle)
ret = hns_roce_init(hr_dev);
if (ret) {
dev_err(hr_dev->dev, "RoCE Engine init failed!\n");
- goto error_failed_cfg;
+ goto error_failed_roce_init;
}
if (hr_dev->pci_dev->revision == PCI_REVISION_ID_HIP08) {
ret = free_mr_init(hr_dev);
if (ret) {
dev_err(hr_dev->dev, "failed to init free mr!\n");
- goto error_failed_roce_init;
+ goto error_failed_free_mr_init;
}
}
@@ -6880,10 +6880,10 @@ static int __hns_roce_hw_v2_init_instance(struct hnae3_handle *handle)
return 0;
-error_failed_roce_init:
+error_failed_free_mr_init:
hns_roce_exit(hr_dev);
-error_failed_cfg:
+error_failed_roce_init:
kfree(hr_dev->priv);
error_failed_kzalloc:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 447/600] RDMA/hns: Fix CQ and QP cache affinity
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (445 preceding siblings ...)
2023-09-11 13:47 ` [PATCH 6.1 446/600] RDMA/hns: Fix inaccurate error label name in init instance Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 448/600] IB/uverbs: Fix an potential error pointer dereference Greg Kroah-Hartman
` (163 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chengchang Tang, Junxian Huang,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chengchang Tang <tangchengchang@huawei.com>
[ Upstream commit 9e03dbea2b0634b21a45946b4f8097e0dc86ebe1 ]
Currently, the affinity between QP cache and CQ cache is not
considered when assigning QPN, it will affect the message rate of HW.
Allocate QPN from QP cache with better CQ affinity to get better
performance.
Fixes: 71586dd20010 ("RDMA/hns: Create QP with selected QPN for bank load balance")
Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Junxian Huang <huangjunxian6@hisilicon.com>
Link: https://lore.kernel.org/r/20230804012711.808069-5-huangjunxian6@hisilicon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/hns/hns_roce_device.h | 1 +
drivers/infiniband/hw/hns/hns_roce_qp.c | 28 ++++++++++++++++-----
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index f701cc86896b3..1112afa0af552 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -97,6 +97,7 @@
#define HNS_ROCE_CQ_BANK_NUM 4
#define CQ_BANKID_SHIFT 2
+#define CQ_BANKID_MASK GENMASK(1, 0)
enum {
SERV_TYPE_RC,
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 0ae335fb205ca..7a95f8677a02c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -170,14 +170,29 @@ static void hns_roce_ib_qp_event(struct hns_roce_qp *hr_qp,
}
}
-static u8 get_least_load_bankid_for_qp(struct hns_roce_bank *bank)
+static u8 get_affinity_cq_bank(u8 qp_bank)
{
- u32 least_load = bank[0].inuse;
+ return (qp_bank >> 1) & CQ_BANKID_MASK;
+}
+
+static u8 get_least_load_bankid_for_qp(struct ib_qp_init_attr *init_attr,
+ struct hns_roce_bank *bank)
+{
+#define INVALID_LOAD_QPNUM 0xFFFFFFFF
+ struct ib_cq *scq = init_attr->send_cq;
+ u32 least_load = INVALID_LOAD_QPNUM;
+ unsigned long cqn = 0;
u8 bankid = 0;
u32 bankcnt;
u8 i;
- for (i = 1; i < HNS_ROCE_QP_BANK_NUM; i++) {
+ if (scq)
+ cqn = to_hr_cq(scq)->cqn;
+
+ for (i = 0; i < HNS_ROCE_QP_BANK_NUM; i++) {
+ if (scq && (get_affinity_cq_bank(i) != (cqn & CQ_BANKID_MASK)))
+ continue;
+
bankcnt = bank[i].inuse;
if (bankcnt < least_load) {
least_load = bankcnt;
@@ -209,7 +224,8 @@ static int alloc_qpn_with_bankid(struct hns_roce_bank *bank, u8 bankid,
return 0;
}
-static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp)
+static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp,
+ struct ib_qp_init_attr *init_attr)
{
struct hns_roce_qp_table *qp_table = &hr_dev->qp_table;
unsigned long num = 0;
@@ -220,7 +236,7 @@ static int alloc_qpn(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp)
num = 1;
} else {
mutex_lock(&qp_table->bank_mutex);
- bankid = get_least_load_bankid_for_qp(qp_table->bank);
+ bankid = get_least_load_bankid_for_qp(init_attr, qp_table->bank);
ret = alloc_qpn_with_bankid(&qp_table->bank[bankid], bankid,
&num);
@@ -1146,7 +1162,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev,
goto err_buf;
}
- ret = alloc_qpn(hr_dev, hr_qp);
+ ret = alloc_qpn(hr_dev, hr_qp, init_attr);
if (ret) {
ibdev_err(ibdev, "failed to alloc QPN, ret = %d.\n", ret);
goto err_qpn;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 448/600] IB/uverbs: Fix an potential error pointer dereference
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (446 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 447/600] RDMA/hns: Fix CQ and QP cache affinity Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 449/600] fsi: aspeed: Reset master errors after CFAM reset Greg Kroah-Hartman
` (162 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xiang Yang, Leon Romanovsky,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiang Yang <xiangyang3@huawei.com>
[ Upstream commit 26b7d1a27167e7adf75b150755e05d2bc123ce55 ]
smatch reports the warning below:
drivers/infiniband/core/uverbs_std_types_counters.c:110
ib_uverbs_handler_UVERBS_METHOD_COUNTERS_READ() error: 'uattr'
dereferencing possible ERR_PTR()
The return value of uattr maybe ERR_PTR(-ENOENT), fix this by checking
the value of uattr before using it.
Fixes: ebb6796bd397 ("IB/uverbs: Add read counters support")
Signed-off-by: Xiang Yang <xiangyang3@huawei.com>
Link: https://lore.kernel.org/r/20230804022525.1916766-1-xiangyang3@huawei.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/core/uverbs_std_types_counters.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/infiniband/core/uverbs_std_types_counters.c b/drivers/infiniband/core/uverbs_std_types_counters.c
index 999da9c798668..381aa57976417 100644
--- a/drivers/infiniband/core/uverbs_std_types_counters.c
+++ b/drivers/infiniband/core/uverbs_std_types_counters.c
@@ -107,6 +107,8 @@ static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_READ)(
return ret;
uattr = uverbs_attr_get(attrs, UVERBS_ATTR_READ_COUNTERS_BUFF);
+ if (IS_ERR(uattr))
+ return PTR_ERR(uattr);
read_attr.ncounters = uattr->ptr_attr.len / sizeof(u64);
read_attr.counters_buff = uverbs_zalloc(
attrs, array_size(read_attr.ncounters, sizeof(u64)));
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 449/600] fsi: aspeed: Reset master errors after CFAM reset
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (447 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 448/600] IB/uverbs: Fix an potential error pointer dereference Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 450/600] iommu/qcom: Disable and reset context bank before programming Greg Kroah-Hartman
` (161 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Eddie James, Joel Stanley,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eddie James <eajames@linux.ibm.com>
[ Upstream commit 52300909f4670ac552bfeb33c1355b896eac8c06 ]
It has been observed that sometimes the FSI master will return all 0xffs
after a CFAM has been taken out of reset, without presenting any error.
Resetting the FSI master errors resolves the issue.
Fixes: 4a851d714ead ("fsi: aspeed: Support CFAM reset GPIO")
Signed-off-by: Eddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/20230612195657.245125-8-eajames@linux.ibm.com
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/fsi/fsi-master-aspeed.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/fsi/fsi-master-aspeed.c b/drivers/fsi/fsi-master-aspeed.c
index 7cec1772820d3..5eccab175e86b 100644
--- a/drivers/fsi/fsi-master-aspeed.c
+++ b/drivers/fsi/fsi-master-aspeed.c
@@ -454,6 +454,8 @@ static ssize_t cfam_reset_store(struct device *dev, struct device_attribute *att
gpiod_set_value(aspeed->cfam_reset_gpio, 1);
usleep_range(900, 1000);
gpiod_set_value(aspeed->cfam_reset_gpio, 0);
+ usleep_range(900, 1000);
+ opb_writel(aspeed, ctrl_base + FSI_MRESP0, cpu_to_be32(FSI_MRESP_RST_ALL_MASTER));
mutex_unlock(&aspeed->lock);
trace_fsi_master_aspeed_cfam_reset(false);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 450/600] iommu/qcom: Disable and reset context bank before programming
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (448 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 449/600] fsi: aspeed: Reset master errors after CFAM reset Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 451/600] iommu/vt-d: Fix to flush cache of PASID directory table Greg Kroah-Hartman
` (160 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, AngeloGioacchino Del Regno,
Konrad Dybcio, Will Deacon, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
[ Upstream commit 9f3fef23d9b5a858a6e6d5f478bb1b6b76265e76 ]
Writing the new TTBRs, TCRs and MAIRs on a previously enabled
context bank may trigger a context fault, resulting in firmware
driven AP resets: change the domain initialization programming
sequence to disable the context bank(s) and to also clear the
related fault address (CB_FAR) and fault status (CB_FSR)
registers before writing new values to TTBR0/1, TCR/TCR2, MAIR0/1.
Fixes: 0ae349a0f33f ("iommu/qcom: Add qcom_iommu")
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230622092742.74819-4-angelogioacchino.delregno@collabora.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/arm/arm-smmu/qcom_iommu.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/iommu/arm/arm-smmu/qcom_iommu.c b/drivers/iommu/arm/arm-smmu/qcom_iommu.c
index 3869c3ecda8cd..5b9cb9fcc352b 100644
--- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c
+++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c
@@ -273,6 +273,13 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
ctx->secure_init = true;
}
+ /* Disable context bank before programming */
+ iommu_writel(ctx, ARM_SMMU_CB_SCTLR, 0);
+
+ /* Clear context bank fault address fault status registers */
+ iommu_writel(ctx, ARM_SMMU_CB_FAR, 0);
+ iommu_writel(ctx, ARM_SMMU_CB_FSR, ARM_SMMU_FSR_FAULT);
+
/* TTBRs */
iommu_writeq(ctx, ARM_SMMU_CB_TTBR0,
pgtbl_cfg.arm_lpae_s1_cfg.ttbr |
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 451/600] iommu/vt-d: Fix to flush cache of PASID directory table
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (449 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 450/600] iommu/qcom: Disable and reset context bank before programming Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 452/600] platform/x86: dell-sysman: Fix reference leak Greg Kroah-Hartman
` (159 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lu Baolu, Yanfei Xu, Joerg Roedel,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yanfei Xu <yanfei.xu@intel.com>
[ Upstream commit 8a3b8e63f8371c1247b7aa24ff9c5312f1a6948b ]
Even the PCI devices don't support pasid capability, PASID table is
mandatory for a PCI device in scalable mode. However flushing cache
of pasid directory table for these devices are not taken after pasid
table is allocated as the "size" of table is zero. Fix it by
calculating the size by page order.
Found this when reading the code, no real problem encountered for now.
Fixes: 194b3348bdbb ("iommu/vt-d: Fix PASID directory pointer coherency")
Suggested-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Yanfei Xu <yanfei.xu@intel.com>
Link: https://lore.kernel.org/r/20230616081045.721873-1-yanfei.xu@intel.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/iommu/intel/pasid.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c
index a39aab66a01b1..3f03039e5cce5 100644
--- a/drivers/iommu/intel/pasid.c
+++ b/drivers/iommu/intel/pasid.c
@@ -127,7 +127,7 @@ int intel_pasid_alloc_table(struct device *dev)
info->pasid_table = pasid_table;
if (!ecap_coherent(info->iommu->ecap))
- clflush_cache_range(pasid_table->table, size);
+ clflush_cache_range(pasid_table->table, (1 << order) * PAGE_SIZE);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 452/600] platform/x86: dell-sysman: Fix reference leak
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (450 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 451/600] iommu/vt-d: Fix to flush cache of PASID directory table Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 453/600] media: cec: core: add adap_nb_transmit_canceled() callback Greg Kroah-Hartman
` (158 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Armin Wolf, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Armin Wolf <W_Armin@gmx.de>
[ Upstream commit 7295a996fdab7bf83dc3d4078fa8b139b8e0a1bf ]
If a duplicate attribute is found using kset_find_obj(),
a reference to that attribute is returned. This means
that we need to dispose it accordingly. Use kobject_put()
to dispose the duplicate attribute in such a case.
Compile-tested only.
Fixes: e8a60aa7404b ("platform/x86: Introduce support for Systems Management Driver over WMI for Dell Systems")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
Link: https://lore.kernel.org/r/20230805053610.7106-1-W_Armin@gmx.de
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/dell/dell-wmi-sysman/sysman.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c
index 0a6411a8a104c..b2406a595be9a 100644
--- a/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c
+++ b/drivers/platform/x86/dell/dell-wmi-sysman/sysman.c
@@ -396,6 +396,7 @@ static int init_bios_attributes(int attr_type, const char *guid)
struct kobject *attr_name_kobj; //individual attribute names
union acpi_object *obj = NULL;
union acpi_object *elements;
+ struct kobject *duplicate;
struct kset *tmp_set;
int min_elements;
@@ -454,9 +455,11 @@ static int init_bios_attributes(int attr_type, const char *guid)
else
tmp_set = wmi_priv.main_dir_kset;
- if (kset_find_obj(tmp_set, elements[ATTR_NAME].string.pointer)) {
- pr_debug("duplicate attribute name found - %s\n",
- elements[ATTR_NAME].string.pointer);
+ duplicate = kset_find_obj(tmp_set, elements[ATTR_NAME].string.pointer);
+ if (duplicate) {
+ pr_debug("Duplicate attribute name found - %s\n",
+ elements[ATTR_NAME].string.pointer);
+ kobject_put(duplicate);
goto nextobj;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 453/600] media: cec: core: add adap_nb_transmit_canceled() callback
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (451 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 452/600] platform/x86: dell-sysman: Fix reference leak Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 454/600] media: cec: core: add adap_unconfigured() callback Greg Kroah-Hartman
` (157 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zheng Zhang, Hans Verkuil,
Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[ Upstream commit da53c36ddd3f118a525a04faa8c47ca471e6c467 ]
A potential deadlock was found by Zheng Zhang with a local syzkaller
instance.
The problem is that when a non-blocking CEC transmit is canceled by calling
cec_data_cancel, that in turn can call the high-level received() driver
callback, which can call cec_transmit_msg() to transmit a new message.
The cec_data_cancel() function is called with the adap->lock mutex held,
and cec_transmit_msg() tries to take that same lock.
The root cause is that the received() callback can either be used to pass
on a received message (and then adap->lock is not held), or to report a
canceled transmit (and then adap->lock is held).
This is confusing, so create a new low-level adap_nb_transmit_canceled
callback that reports back that a non-blocking transmit was canceled.
And the received() callback is only called when a message is received,
as was the case before commit f9d0ecbf56f4 ("media: cec: correctly pass
on reply results") complicated matters.
Reported-by: Zheng Zhang <zheng.zhang@email.ucr.edu>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: f9d0ecbf56f4 ("media: cec: correctly pass on reply results")
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/cec/core/cec-adap.c | 4 ++--
include/media/cec.h | 6 ++++--
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/media/cec/core/cec-adap.c b/drivers/media/cec/core/cec-adap.c
index b1512f9c5895c..aed3e51d6d354 100644
--- a/drivers/media/cec/core/cec-adap.c
+++ b/drivers/media/cec/core/cec-adap.c
@@ -385,8 +385,8 @@ static void cec_data_cancel(struct cec_data *data, u8 tx_status, u8 rx_status)
cec_queue_msg_monitor(adap, &data->msg, 1);
if (!data->blocking && data->msg.sequence)
- /* Allow drivers to process the message first */
- call_op(adap, received, &data->msg);
+ /* Allow drivers to react to a canceled transmit */
+ call_void_op(adap, adap_nb_transmit_canceled, &data->msg);
cec_data_completed(data);
}
diff --git a/include/media/cec.h b/include/media/cec.h
index abee41ae02d0e..6556cc161dc0a 100644
--- a/include/media/cec.h
+++ b/include/media/cec.h
@@ -121,14 +121,16 @@ struct cec_adap_ops {
void (*adap_configured)(struct cec_adapter *adap, bool configured);
int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
u32 signal_free_time, struct cec_msg *msg);
+ void (*adap_nb_transmit_canceled)(struct cec_adapter *adap,
+ const struct cec_msg *msg);
void (*adap_status)(struct cec_adapter *adap, struct seq_file *file);
void (*adap_free)(struct cec_adapter *adap);
- /* Error injection callbacks */
+ /* Error injection callbacks, called without adap->lock held */
int (*error_inj_show)(struct cec_adapter *adap, struct seq_file *sf);
bool (*error_inj_parse_line)(struct cec_adapter *adap, char *line);
- /* High-level CEC message callback */
+ /* High-level CEC message callback, called without adap->lock held */
int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 454/600] media: cec: core: add adap_unconfigured() callback
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (452 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 453/600] media: cec: core: add adap_nb_transmit_canceled() callback Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 455/600] media: go7007: Remove redundant if statement Greg Kroah-Hartman
` (156 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hans Verkuil, Mauro Carvalho Chehab,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
[ Upstream commit 948a77aaecf202f722cf2264025f9987e5bd5c26 ]
The adap_configured() callback was called with the adap->lock mutex
held if the 'configured' argument was false, and without the adap->lock
mutex held if that argument was true.
That was very confusing, and so split this up in a adap_unconfigured()
callback and a high-level configured() callback.
This also makes it easier to understand when the mutex is held: all
low-level adap_* callbacks are called with the mutex held. All other
callbacks are called without that mutex held.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Fixes: f1b57164305d ("media: cec: add optional adap_configured callback")
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/cec/core/cec-adap.c | 4 ++--
include/media/cec.h | 5 +++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/media/cec/core/cec-adap.c b/drivers/media/cec/core/cec-adap.c
index aed3e51d6d354..4bc2a705029e6 100644
--- a/drivers/media/cec/core/cec-adap.c
+++ b/drivers/media/cec/core/cec-adap.c
@@ -1345,7 +1345,7 @@ static void cec_adap_unconfigure(struct cec_adapter *adap)
cec_flush(adap);
wake_up_interruptible(&adap->kthread_waitq);
cec_post_state_event(adap);
- call_void_op(adap, adap_configured, false);
+ call_void_op(adap, adap_unconfigured);
}
/*
@@ -1536,7 +1536,7 @@ static int cec_config_thread_func(void *arg)
adap->kthread_config = NULL;
complete(&adap->config_completion);
mutex_unlock(&adap->lock);
- call_void_op(adap, adap_configured, true);
+ call_void_op(adap, configured);
return 0;
unconfigure:
diff --git a/include/media/cec.h b/include/media/cec.h
index 6556cc161dc0a..9c007f83569aa 100644
--- a/include/media/cec.h
+++ b/include/media/cec.h
@@ -113,12 +113,12 @@ struct cec_fh {
#define CEC_FREE_TIME_TO_USEC(ft) ((ft) * 2400)
struct cec_adap_ops {
- /* Low-level callbacks */
+ /* Low-level callbacks, called with adap->lock held */
int (*adap_enable)(struct cec_adapter *adap, bool enable);
int (*adap_monitor_all_enable)(struct cec_adapter *adap, bool enable);
int (*adap_monitor_pin_enable)(struct cec_adapter *adap, bool enable);
int (*adap_log_addr)(struct cec_adapter *adap, u8 logical_addr);
- void (*adap_configured)(struct cec_adapter *adap, bool configured);
+ void (*adap_unconfigured)(struct cec_adapter *adap);
int (*adap_transmit)(struct cec_adapter *adap, u8 attempts,
u32 signal_free_time, struct cec_msg *msg);
void (*adap_nb_transmit_canceled)(struct cec_adapter *adap,
@@ -131,6 +131,7 @@ struct cec_adap_ops {
bool (*error_inj_parse_line)(struct cec_adapter *adap, char *line);
/* High-level CEC message callback, called without adap->lock held */
+ void (*configured)(struct cec_adapter *adap);
int (*received)(struct cec_adapter *adap, struct cec_msg *msg);
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 455/600] media: go7007: Remove redundant if statement
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (453 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 454/600] media: cec: core: add adap_unconfigured() callback Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 456/600] media: venus: hfi_venus: Only consider sys_idle_indicator on V1 Greg Kroah-Hartman
` (155 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Colin Ian King,
Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Colin Ian King <colin.i.king@gmail.com>
[ Upstream commit f33cb49081da0ec5af0888f8ecbd566bd326eed1 ]
The if statement that compares msgs[i].len != 3 is always false because
it is in a code block where msg[i].len is equal to 3. The check is
redundant and can be removed.
As detected by cppcheck static analysis:
drivers/media/usb/go7007/go7007-i2c.c:168:20: warning: Opposite inner
'if' condition leads to a dead code block. [oppositeInnerCondition]
Link: https://lore.kernel.org/linux-media/20230727174007.635572-1-colin.i.king@gmail.com
Fixes: 866b8695d67e ("Staging: add the go7007 video driver")
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/usb/go7007/go7007-i2c.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/media/usb/go7007/go7007-i2c.c b/drivers/media/usb/go7007/go7007-i2c.c
index 38339dd2f83f7..2880370e45c8b 100644
--- a/drivers/media/usb/go7007/go7007-i2c.c
+++ b/drivers/media/usb/go7007/go7007-i2c.c
@@ -165,8 +165,6 @@ static int go7007_i2c_master_xfer(struct i2c_adapter *adapter,
} else if (msgs[i].len == 3) {
if (msgs[i].flags & I2C_M_RD)
return -EIO;
- if (msgs[i].len != 3)
- return -EIO;
if (go7007_i2c_xfer(go, msgs[i].addr, 0,
(msgs[i].buf[0] << 8) | msgs[i].buf[1],
0x01, &msgs[i].buf[2]) < 0)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 456/600] media: venus: hfi_venus: Only consider sys_idle_indicator on V1
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (454 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 455/600] media: go7007: Remove redundant if statement Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 457/600] docs: ABI: fix spelling/grammar in SBEFIFO timeout interface Greg Kroah-Hartman
` (154 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Stanimir Varbanov,
Hans Verkuil, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 6283e4834c69fa93a108efa18c6aa09c7e626f49 ]
As per information from Qualcomm [1], this property is not really
supported beyond msm8916 (HFI V1) and some newer HFI versions really
dislike receiving it, going as far as crashing the device.
Only consider toggling it (via the module option) on HFIV1.
While at it, get rid of the global static variable (which defaulted
to zero) which was never explicitly assigned to for V1.
Note: [1] is a reply to the actual message in question, as lore did not
properly receive some of the emails..
[1] https://lore.kernel.org/lkml/955cd520-3881-0c22-d818-13fe9a47e124@linaro.org/
Fixes: 7ed9e0b3393c ("media: venus: hfi, vdec: v6 Add IS_V6() to existing IS_V4() if locations")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/platform/qcom/venus/hfi_venus.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/drivers/media/platform/qcom/venus/hfi_venus.c b/drivers/media/platform/qcom/venus/hfi_venus.c
index 2ad40b3945b0b..bff435abd59ba 100644
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -131,7 +131,6 @@ struct venus_hfi_device {
static bool venus_pkt_debug;
int venus_fw_debug = HFI_DEBUG_MSG_ERROR | HFI_DEBUG_MSG_FATAL;
-static bool venus_sys_idle_indicator;
static bool venus_fw_low_power_mode = true;
static int venus_hw_rsp_timeout = 1000;
static bool venus_fw_coverage;
@@ -947,17 +946,12 @@ static int venus_sys_set_default_properties(struct venus_hfi_device *hdev)
if (ret)
dev_warn(dev, "setting fw debug msg ON failed (%d)\n", ret);
- /*
- * Idle indicator is disabled by default on some 4xx firmware versions,
- * enable it explicitly in order to make suspend functional by checking
- * WFI (wait-for-interrupt) bit.
- */
- if (IS_V4(hdev->core) || IS_V6(hdev->core))
- venus_sys_idle_indicator = true;
-
- ret = venus_sys_set_idle_message(hdev, venus_sys_idle_indicator);
- if (ret)
- dev_warn(dev, "setting idle response ON failed (%d)\n", ret);
+ /* HFI_PROPERTY_SYS_IDLE_INDICATOR is not supported beyond 8916 (HFI V1) */
+ if (IS_V1(hdev->core)) {
+ ret = venus_sys_set_idle_message(hdev, false);
+ if (ret)
+ dev_warn(dev, "setting idle response ON failed (%d)\n", ret);
+ }
ret = venus_sys_set_power_control(hdev, venus_fw_low_power_mode);
if (ret)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 457/600] docs: ABI: fix spelling/grammar in SBEFIFO timeout interface
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (455 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 456/600] media: venus: hfi_venus: Only consider sys_idle_indicator on V1 Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 458/600] USB: gadget: core: Add missing kerneldoc for vbus_work Greg Kroah-Hartman
` (153 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Randy Dunlap, Eddie James,
Joel Stanley, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Randy Dunlap <rdunlap@infradead.org>
[ Upstream commit 2cd9ec2a51474d4c0b4d2a061f2de7da34eff476 ]
Correct spelling problems as identified by codespell.
Correct one grammar error.
Fixes: 9a93de620e0a ("docs: ABI: testing: Document the SBEFIFO timeout interface")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Eddie James <eajames@linux.ibm.com>
Cc: Joel Stanley <joel@jms.id.au>
Link: https://lore.kernel.org/r/20230710052305.29611-1-rdunlap@infradead.org
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo b/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
index 531fe9d6b40aa..c7393b4dd2d88 100644
--- a/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
+++ b/Documentation/ABI/testing/sysfs-bus-fsi-devices-sbefifo
@@ -5,6 +5,6 @@ Description:
Indicates whether or not this SBE device has experienced a
timeout; i.e. the SBE did not respond within the time allotted
by the driver. A value of 1 indicates that a timeout has
- ocurred and no transfers have completed since the timeout. A
- value of 0 indicates that no timeout has ocurred, or if one
- has, more recent transfers have completed successful.
+ occurred and no transfers have completed since the timeout. A
+ value of 0 indicates that no timeout has occurred, or if one
+ has, more recent transfers have completed successfully.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 458/600] USB: gadget: core: Add missing kerneldoc for vbus_work
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (456 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 457/600] docs: ABI: fix spelling/grammar in SBEFIFO timeout interface Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 459/600] USB: gadget: f_mass_storage: Fix unused variable warning Greg Kroah-Hartman
` (152 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Alan Stern, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
[ Upstream commit 159a98afc88e88f588077afe818081d67f50a5e0 ]
Add a missing kerneldoc description of the vbus_work field in struct usb_udc.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Fixes: 50966da807c8 ("usb: gadget: udc: core: Offload usb_udc_vbus_handler processing")
Link: https://lore.kernel.org/r/1e5e7cda-b2c8-4917-9952-4354f365ede0@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/usb/gadget/udc/core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
index 316e9cc3987be..1c0c61e8ba696 100644
--- a/drivers/usb/gadget/udc/core.c
+++ b/drivers/usb/gadget/udc/core.c
@@ -40,6 +40,7 @@ static struct bus_type gadget_bus_type;
* @allow_connect: Indicates whether UDC is allowed to be pulled up.
* Set/cleared by gadget_(un)bind_driver() after gadget driver is bound or
* unbound.
+ * @vbus_work: work routine to handle VBUS status change notifications.
* @connect_lock: protects udc->started, gadget->connect,
* gadget->allow_connect and gadget->deactivate. The routines
* usb_gadget_connect_locked(), usb_gadget_disconnect_locked(),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 459/600] USB: gadget: f_mass_storage: Fix unused variable warning
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (457 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 458/600] USB: gadget: core: Add missing kerneldoc for vbus_work Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 460/600] drivers: base: Free devm resources when unregistering a device Greg Kroah-Hartman
` (151 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Alan Stern, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
[ Upstream commit 55c3e571d2a0aabef4f1354604443f1c415d2e85 ]
Fix a "variable set but not used" warning in f_mass_storage.c. rc is
used if verbose debugging is enabled but not otherwise.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Fixes: d5e2b67aae79 ("USB: g_mass_storage: template f_mass_storage.c file created")
Link: https://lore.kernel.org/r/cfed16c7-aa46-494b-ba84-b0e0dc99be3a@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/usb/gadget/function/f_mass_storage.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index 3abf7f586e2af..7b9a4cf9b100c 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -926,7 +926,7 @@ static void invalidate_sub(struct fsg_lun *curlun)
{
struct file *filp = curlun->filp;
struct inode *inode = file_inode(filp);
- unsigned long rc;
+ unsigned long __maybe_unused rc;
rc = invalidate_mapping_pages(inode->i_mapping, 0, -1);
VLDBG(curlun, "invalidate_mapping_pages -> %ld\n", rc);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 460/600] drivers: base: Free devm resources when unregistering a device
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (458 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 459/600] USB: gadget: f_mass_storage: Fix unused variable warning Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 461/600] HID: input: Support devices sending Eraser without Invert Greg Kroah-Hartman
` (150 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, David Gow, Maxime Ripard,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Gow <davidgow@google.com>
[ Upstream commit 699fb50d99039a50e7494de644f96c889279aca3 ]
In the current code, devres_release_all() only gets called if the device
has a bus and has been probed.
This leads to issues when using bus-less or driver-less devices where
the device might never get freed if a managed resource holds a reference
to the device. This is happening in the DRM framework for example.
We should thus call devres_release_all() in the device_del() function to
make sure that the device-managed actions are properly executed when the
device is unregistered, even if it has neither a bus nor a driver.
This is effectively the same change than commit 2f8d16a996da ("devres:
release resources on device_del()") that got reverted by commit
a525a3ddeaca ("driver core: free devres in device_release") over
memory leaks concerns.
This patch effectively combines the two commits mentioned above to
release the resources both on device_del() and device_release() and get
the best of both worlds.
Fixes: a525a3ddeaca ("driver core: free devres in device_release")
Signed-off-by: David Gow <davidgow@google.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20230720-kunit-devm-inconsistencies-test-v3-3-6aa7e074f373@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/base/core.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/base/core.c b/drivers/base/core.c
index e30223c2672fc..af90bfb0cc3d8 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -3855,6 +3855,17 @@ void device_del(struct device *dev)
device_platform_notify_remove(dev);
device_links_purge(dev);
+ /*
+ * If a device does not have a driver attached, we need to clean
+ * up any managed resources. We do this in device_release(), but
+ * it's never called (and we leak the device) if a managed
+ * resource holds a reference to the device. So release all
+ * managed resources here, like we do in driver_detach(). We
+ * still need to do so again in device_release() in case someone
+ * adds a new resource after this point, though.
+ */
+ devres_release_all(dev);
+
if (dev->bus)
blocking_notifier_call_chain(&dev->bus->p->bus_notifier,
BUS_NOTIFY_REMOVED_DEVICE, dev);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 461/600] HID: input: Support devices sending Eraser without Invert
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (459 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 460/600] drivers: base: Free devm resources when unregistering a device Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 462/600] media: ov5640: Enable MIPI interface in ov5640_set_power_mipi() Greg Kroah-Hartman
` (149 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nils Fuhler, Illia Ostapyshyn,
Jiri Kosina, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Illia Ostapyshyn <ostapyshyn@sra.uni-hannover.de>
[ Upstream commit 276e14e6c3993317257e1787e93b7166fbc30905 ]
Some digitizers (notably XP-Pen Artist 24) do not report the Invert
usage when erasing. This causes the device to be permanently stuck with
the BTN_TOOL_RUBBER tool after sending Eraser, as Invert is the only
usage that can release the tool. In this state, Touch and Inrange are
no longer reported to userspace, rendering the pen unusable.
Prior to commit 87562fcd1342 ("HID: input: remove the need for
HID_QUIRK_INVERT"), BTN_TOOL_RUBBER was never set and Eraser events were
simply translated into BTN_TOUCH without causing an inconsistent state.
Introduce HID_QUIRK_NOINVERT for such digitizers and detect them during
hidinput_configure_usage(). This quirk causes the tool to be released
as soon as Eraser is reported as not set. Set BTN_TOOL_RUBBER in
input->keybit when mapping Eraser.
Fixes: 87562fcd1342 ("HID: input: remove the need for HID_QUIRK_INVERT")
Co-developed-by: Nils Fuhler <nils@nilsfuhler.de>
Signed-off-by: Nils Fuhler <nils@nilsfuhler.de>
Signed-off-by: Illia Ostapyshyn <ostapyshyn@sra.uni-hannover.de>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hid/hid-input.c | 18 ++++++++++++++++--
include/linux/hid.h | 1 +
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 3acaaca888acd..77ee5e01e6111 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -961,6 +961,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
return;
case 0x3c: /* Invert */
+ device->quirks &= ~HID_QUIRK_NOINVERT;
map_key_clear(BTN_TOOL_RUBBER);
break;
@@ -986,9 +987,13 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case 0x45: /* ERASER */
/*
* This event is reported when eraser tip touches the surface.
- * Actual eraser (BTN_TOOL_RUBBER) is set by Invert usage when
- * tool gets in proximity.
+ * Actual eraser (BTN_TOOL_RUBBER) is set and released either
+ * by Invert if tool reports proximity or by Eraser directly.
*/
+ if (!test_bit(BTN_TOOL_RUBBER, input->keybit)) {
+ device->quirks |= HID_QUIRK_NOINVERT;
+ set_bit(BTN_TOOL_RUBBER, input->keybit);
+ }
map_key_clear(BTN_TOUCH);
break;
@@ -1532,6 +1537,15 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct
else if (report->tool != BTN_TOOL_RUBBER)
/* value is off, tool is not rubber, ignore */
return;
+ else if (*quirks & HID_QUIRK_NOINVERT &&
+ !test_bit(BTN_TOUCH, input->key)) {
+ /*
+ * There is no invert to release the tool, let hid_input
+ * send BTN_TOUCH with scancode and release the tool after.
+ */
+ hid_report_release_tool(report, input, BTN_TOOL_RUBBER);
+ return;
+ }
/* let hid-input set BTN_TOUCH */
break;
diff --git a/include/linux/hid.h b/include/linux/hid.h
index 0a1ccc68e798a..784dd6b6046eb 100644
--- a/include/linux/hid.h
+++ b/include/linux/hid.h
@@ -357,6 +357,7 @@ struct hid_item {
#define HID_QUIRK_NO_OUTPUT_REPORTS_ON_INTR_EP BIT(18)
#define HID_QUIRK_HAVE_SPECIAL_DRIVER BIT(19)
#define HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE BIT(20)
+#define HID_QUIRK_NOINVERT BIT(21)
#define HID_QUIRK_FULLSPEED_INTERVAL BIT(28)
#define HID_QUIRK_NO_INIT_REPORTS BIT(29)
#define HID_QUIRK_NO_IGNORE BIT(30)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 462/600] media: ov5640: Enable MIPI interface in ov5640_set_power_mipi()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (460 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 461/600] HID: input: Support devices sending Eraser without Invert Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 463/600] media: ov5640: Fix initial RESETB state and annotate timings Greg Kroah-Hartman
` (148 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jacopo Mondi, Marek Vasut,
Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin, Jai Luthra
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit 98cb72d3b9c5e03b10fa993752ecfcbd9c572d8c ]
Set OV5640_REG_IO_MIPI_CTRL00 bit 2 to 1 instead of 0, since 1 means
MIPI CSI2 interface, while 0 means CPI parallel interface.
In the ov5640_set_power_mipi() the interface should obviously be set
to MIPI CSI2 since this functions is used to power up the sensor when
operated in MIPI CSI2 mode. The sensor should not be in CPI mode in
that case.
This fixes a corner case where capturing the first frame on i.MX8MN
with CSI/ISI resulted in corrupted frame.
Fixes: aa4bb8b8838f ("media: ov5640: Re-work MIPI startup sequence")
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Tested-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> # [Test on imx6q]
Signed-off-by: Marek Vasut <marex@denx.de>
Tested-by: Jai Luthra <j-luthra@ti.com> # [Test on bplay, sk-am62]
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov5640.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index cc23ff2067f6a..f76bcb395cffa 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -2531,9 +2531,9 @@ static int ov5640_set_power_mipi(struct ov5640_dev *sensor, bool on)
* "ov5640_set_stream_mipi()")
* [4] = 0 : Power up MIPI HS Tx
* [3] = 0 : Power up MIPI LS Rx
- * [2] = 0 : MIPI interface disabled
+ * [2] = 1 : MIPI interface enabled
*/
- ret = ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x40);
+ ret = ov5640_write_reg(sensor, OV5640_REG_IO_MIPI_CTRL00, 0x44);
if (ret)
return ret;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 463/600] media: ov5640: Fix initial RESETB state and annotate timings
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (461 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 462/600] media: ov5640: Enable MIPI interface in ov5640_set_power_mipi() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 464/600] media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips Greg Kroah-Hartman
` (147 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jacopo Mondi, Marek Vasut,
Jai Luthra, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <marex@denx.de>
[ Upstream commit a210df337c5f5c2cd82f36c9dbb154ec63365c80 ]
The initial state of RESETB input signal of OV5640 should be
asserted, i.e. the sensor should be in reset. This is not the
case, make it so.
Since the subsequent assertion of RESETB signal is no longer
necessary and the timing of the power sequencing could be
slightly adjusted, add annotations to the delays which match
OV5640 datasheet rev. 2.03, both:
figure 2-3 power up timing with internal DVDD
figure 2-4 power up timing with external DVDD source
The 5..10ms delay between PWDN assertion and RESETB assertion
is not even documented in the power sequencing diagram, and
with this reset fix, it is no longer even necessary.
Fixes: 19a81c1426c1 ("[media] add Omnivision OV5640 sensor driver")
Reported-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Tested-by: Jai Luthra <j-luthra@ti.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov5640.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index f76bcb395cffa..2ee832426736d 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -2441,16 +2441,13 @@ static void ov5640_power(struct ov5640_dev *sensor, bool enable)
static void ov5640_powerup_sequence(struct ov5640_dev *sensor)
{
if (sensor->pwdn_gpio) {
- gpiod_set_value_cansleep(sensor->reset_gpio, 0);
+ gpiod_set_value_cansleep(sensor->reset_gpio, 1);
/* camera power cycle */
ov5640_power(sensor, false);
- usleep_range(5000, 10000);
+ usleep_range(5000, 10000); /* t2 */
ov5640_power(sensor, true);
- usleep_range(5000, 10000);
-
- gpiod_set_value_cansleep(sensor->reset_gpio, 1);
- usleep_range(1000, 2000);
+ usleep_range(1000, 2000); /* t3 */
gpiod_set_value_cansleep(sensor->reset_gpio, 0);
} else {
@@ -2458,7 +2455,7 @@ static void ov5640_powerup_sequence(struct ov5640_dev *sensor)
ov5640_write_reg(sensor, OV5640_REG_SYS_CTRL0,
OV5640_REG_SYS_CTRL0_SW_RST);
}
- usleep_range(20000, 25000);
+ usleep_range(20000, 25000); /* t4 */
/*
* software standby: allows registers programming;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 464/600] media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (462 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 463/600] media: ov5640: Fix initial RESETB state and annotate timings Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 465/600] media: ov2680: Remove auto-gain and auto-exposure controls Greg Kroah-Hartman
` (146 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dave Stevenson, Rui Miguel Silva,
Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
[ Upstream commit 66274280b2c745d380508dc27b9a4dfd736e5eda ]
The driver changes the Bayer order based on the flips, but
does not define the control correctly with the
V4L2_CTRL_FLAG_MODIFY_LAYOUT flag.
Add the V4L2_CTRL_FLAG_MODIFY_LAYOUT flag.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Stable-dep-of: 7b5a42e6ae71 ("media: ov2680: Remove auto-gain and auto-exposure controls")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index de66d3395a4dd..54153bf66bddc 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -967,6 +967,8 @@ static int ov2680_v4l2_register(struct ov2680_dev *sensor)
ctrls->gain->flags |= V4L2_CTRL_FLAG_VOLATILE;
ctrls->exposure->flags |= V4L2_CTRL_FLAG_VOLATILE;
+ ctrls->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
+ ctrls->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
v4l2_ctrl_auto_cluster(2, &ctrls->auto_gain, 0, true);
v4l2_ctrl_auto_cluster(2, &ctrls->auto_exp, 1, true);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 465/600] media: ov2680: Remove auto-gain and auto-exposure controls
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (463 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 464/600] media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 466/600] media: ov2680: Fix ov2680_bayer_order() Greg Kroah-Hartman
` (145 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Scally, Rui Miguel Silva,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 7b5a42e6ae71927359ea67a2c22570ba97fa4059 ]
Quoting the OV2680 datasheet:
"3.2 exposure and gain control
In the OV2680, the exposure time and gain are set manually from an external
controller. The OV2680 supports manual gain and exposure control only for
normal applications, no auto mode."
And indeed testing with the atomisp_ov2680 fork of ov2680.c has shown that
auto-exposure and auto-gain do not work.
Note that the code setting the auto-exposure flag was broken, callers
of ov2680_exposure_set() were directly passing !!ctrls->auto_exp->val as
"bool auto_exp" value, but ctrls->auto_exp is a menu control with:
enum v4l2_exposure_auto_type {
V4L2_EXPOSURE_AUTO = 0,
V4L2_EXPOSURE_MANUAL = 1,
...
So instead of passing !!ctrls->auto_exp->val they should have been passing
ctrls->auto_exp->val == V4L2_EXPOSURE_AUTO, iow the passed value was
inverted of what it should have been.
Also remove ov2680_g_volatile_ctrl() since without auto support the gain
and exposure controls are not volatile.
This also fixes the control values not being properly applied in
ov2680_mode_set(). The 800x600 mode register-list also sets gain,
exposure and vflip overriding the last set ctrl values.
ov2680_mode_set() does call ov2680_gain_set() and ov2680_exposure_set()
but did this before writing the mode register-list, so these values
would still be overridden by the mode register-list.
Add a v4l2_ctrl_handler_setup() call after writing the mode register-list
to restore all ctrl values. Also remove the ctrls->gain->is_new check from
ov2680_gain_set() so that the gain always gets restored properly.
Last since ov2680_mode_set() now calls v4l2_ctrl_handler_setup(), remove
the v4l2_ctrl_handler_setup() call after ov2680_mode_restore() since
ov2680_mode_restore() calls ov2680_mode_set().
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 161 ++++---------------------------------
1 file changed, 17 insertions(+), 144 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 54153bf66bddc..42efd60c6a96b 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -85,15 +85,8 @@ struct ov2680_mode_info {
struct ov2680_ctrls {
struct v4l2_ctrl_handler handler;
- struct {
- struct v4l2_ctrl *auto_exp;
- struct v4l2_ctrl *exposure;
- };
- struct {
- struct v4l2_ctrl *auto_gain;
- struct v4l2_ctrl *gain;
- };
-
+ struct v4l2_ctrl *exposure;
+ struct v4l2_ctrl *gain;
struct v4l2_ctrl *hflip;
struct v4l2_ctrl *vflip;
struct v4l2_ctrl *test_pattern;
@@ -143,6 +136,7 @@ static const struct reg_value ov2680_setting_30fps_QUXGA_800_600[] = {
{0x380e, 0x02}, {0x380f, 0x84}, {0x3811, 0x04}, {0x3813, 0x04},
{0x3814, 0x31}, {0x3815, 0x31}, {0x3820, 0xc0}, {0x4008, 0x00},
{0x4009, 0x03}, {0x4837, 0x1e}, {0x3501, 0x4e}, {0x3502, 0xe0},
+ {0x3503, 0x03},
};
static const struct reg_value ov2680_setting_30fps_720P_1280_720[] = {
@@ -405,69 +399,15 @@ static int ov2680_test_pattern_set(struct ov2680_dev *sensor, int value)
return 0;
}
-static int ov2680_gain_set(struct ov2680_dev *sensor, bool auto_gain)
-{
- struct ov2680_ctrls *ctrls = &sensor->ctrls;
- u32 gain;
- int ret;
-
- ret = ov2680_mod_reg(sensor, OV2680_REG_R_MANUAL, BIT(1),
- auto_gain ? 0 : BIT(1));
- if (ret < 0)
- return ret;
-
- if (auto_gain || !ctrls->gain->is_new)
- return 0;
-
- gain = ctrls->gain->val;
-
- ret = ov2680_write_reg16(sensor, OV2680_REG_GAIN_PK, gain);
-
- return 0;
-}
-
-static int ov2680_gain_get(struct ov2680_dev *sensor)
-{
- u32 gain;
- int ret;
-
- ret = ov2680_read_reg16(sensor, OV2680_REG_GAIN_PK, &gain);
- if (ret)
- return ret;
-
- return gain;
-}
-
-static int ov2680_exposure_set(struct ov2680_dev *sensor, bool auto_exp)
+static int ov2680_gain_set(struct ov2680_dev *sensor, u32 gain)
{
- struct ov2680_ctrls *ctrls = &sensor->ctrls;
- u32 exp;
- int ret;
-
- ret = ov2680_mod_reg(sensor, OV2680_REG_R_MANUAL, BIT(0),
- auto_exp ? 0 : BIT(0));
- if (ret < 0)
- return ret;
-
- if (auto_exp || !ctrls->exposure->is_new)
- return 0;
-
- exp = (u32)ctrls->exposure->val;
- exp <<= 4;
-
- return ov2680_write_reg24(sensor, OV2680_REG_EXPOSURE_PK_HIGH, exp);
+ return ov2680_write_reg16(sensor, OV2680_REG_GAIN_PK, gain);
}
-static int ov2680_exposure_get(struct ov2680_dev *sensor)
+static int ov2680_exposure_set(struct ov2680_dev *sensor, u32 exp)
{
- int ret;
- u32 exp;
-
- ret = ov2680_read_reg24(sensor, OV2680_REG_EXPOSURE_PK_HIGH, &exp);
- if (ret)
- return ret;
-
- return exp >> 4;
+ return ov2680_write_reg24(sensor, OV2680_REG_EXPOSURE_PK_HIGH,
+ exp << 4);
}
static int ov2680_stream_enable(struct ov2680_dev *sensor)
@@ -482,33 +422,17 @@ static int ov2680_stream_disable(struct ov2680_dev *sensor)
static int ov2680_mode_set(struct ov2680_dev *sensor)
{
- struct ov2680_ctrls *ctrls = &sensor->ctrls;
int ret;
- ret = ov2680_gain_set(sensor, false);
- if (ret < 0)
- return ret;
-
- ret = ov2680_exposure_set(sensor, false);
+ ret = ov2680_load_regs(sensor, sensor->current_mode);
if (ret < 0)
return ret;
- ret = ov2680_load_regs(sensor, sensor->current_mode);
+ /* Restore value of all ctrls */
+ ret = __v4l2_ctrl_handler_setup(&sensor->ctrls.handler);
if (ret < 0)
return ret;
- if (ctrls->auto_gain->val) {
- ret = ov2680_gain_set(sensor, true);
- if (ret < 0)
- return ret;
- }
-
- if (ctrls->auto_exp->val == V4L2_EXPOSURE_AUTO) {
- ret = ov2680_exposure_set(sensor, true);
- if (ret < 0)
- return ret;
- }
-
sensor->mode_pending_changes = false;
return 0;
@@ -590,15 +514,10 @@ static int ov2680_s_power(struct v4l2_subdev *sd, int on)
else
ret = ov2680_power_off(sensor);
- mutex_unlock(&sensor->lock);
-
- if (on && ret == 0) {
- ret = v4l2_ctrl_handler_setup(&sensor->ctrls.handler);
- if (ret < 0)
- return ret;
-
+ if (on && ret == 0)
ret = ov2680_mode_restore(sensor);
- }
+
+ mutex_unlock(&sensor->lock);
return ret;
}
@@ -794,52 +713,19 @@ static int ov2680_enum_frame_interval(struct v4l2_subdev *sd,
return 0;
}
-static int ov2680_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
-{
- struct v4l2_subdev *sd = ctrl_to_sd(ctrl);
- struct ov2680_dev *sensor = to_ov2680_dev(sd);
- struct ov2680_ctrls *ctrls = &sensor->ctrls;
- int val;
-
- if (!sensor->is_enabled)
- return 0;
-
- switch (ctrl->id) {
- case V4L2_CID_GAIN:
- val = ov2680_gain_get(sensor);
- if (val < 0)
- return val;
- ctrls->gain->val = val;
- break;
- case V4L2_CID_EXPOSURE:
- val = ov2680_exposure_get(sensor);
- if (val < 0)
- return val;
- ctrls->exposure->val = val;
- break;
- }
-
- return 0;
-}
-
static int ov2680_s_ctrl(struct v4l2_ctrl *ctrl)
{
struct v4l2_subdev *sd = ctrl_to_sd(ctrl);
struct ov2680_dev *sensor = to_ov2680_dev(sd);
- struct ov2680_ctrls *ctrls = &sensor->ctrls;
if (!sensor->is_enabled)
return 0;
switch (ctrl->id) {
- case V4L2_CID_AUTOGAIN:
- return ov2680_gain_set(sensor, !!ctrl->val);
case V4L2_CID_GAIN:
- return ov2680_gain_set(sensor, !!ctrls->auto_gain->val);
- case V4L2_CID_EXPOSURE_AUTO:
- return ov2680_exposure_set(sensor, !!ctrl->val);
+ return ov2680_gain_set(sensor, ctrl->val);
case V4L2_CID_EXPOSURE:
- return ov2680_exposure_set(sensor, !!ctrls->auto_exp->val);
+ return ov2680_exposure_set(sensor, ctrl->val);
case V4L2_CID_VFLIP:
if (sensor->is_streaming)
return -EBUSY;
@@ -864,7 +750,6 @@ static int ov2680_s_ctrl(struct v4l2_ctrl *ctrl)
}
static const struct v4l2_ctrl_ops ov2680_ctrl_ops = {
- .g_volatile_ctrl = ov2680_g_volatile_ctrl,
.s_ctrl = ov2680_s_ctrl,
};
@@ -936,7 +821,7 @@ static int ov2680_v4l2_register(struct ov2680_dev *sensor)
if (ret < 0)
return ret;
- v4l2_ctrl_handler_init(hdl, 7);
+ v4l2_ctrl_handler_init(hdl, 5);
hdl->lock = &sensor->lock;
@@ -948,16 +833,9 @@ static int ov2680_v4l2_register(struct ov2680_dev *sensor)
ARRAY_SIZE(test_pattern_menu) - 1,
0, 0, test_pattern_menu);
- ctrls->auto_exp = v4l2_ctrl_new_std_menu(hdl, ops,
- V4L2_CID_EXPOSURE_AUTO,
- V4L2_EXPOSURE_MANUAL, 0,
- V4L2_EXPOSURE_AUTO);
-
ctrls->exposure = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_EXPOSURE,
0, 32767, 1, 0);
- ctrls->auto_gain = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_AUTOGAIN,
- 0, 1, 1, 1);
ctrls->gain = v4l2_ctrl_new_std(hdl, ops, V4L2_CID_GAIN, 0, 2047, 1, 0);
if (hdl->error) {
@@ -965,14 +843,9 @@ static int ov2680_v4l2_register(struct ov2680_dev *sensor)
goto cleanup_entity;
}
- ctrls->gain->flags |= V4L2_CTRL_FLAG_VOLATILE;
- ctrls->exposure->flags |= V4L2_CTRL_FLAG_VOLATILE;
ctrls->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
ctrls->hflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
- v4l2_ctrl_auto_cluster(2, &ctrls->auto_gain, 0, true);
- v4l2_ctrl_auto_cluster(2, &ctrls->auto_exp, 1, true);
-
sensor->sd.ctrl_handler = hdl;
ret = v4l2_async_register_subdev(&sensor->sd);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 466/600] media: ov2680: Fix ov2680_bayer_order()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (464 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 465/600] media: ov2680: Remove auto-gain and auto-exposure controls Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 467/600] media: ov2680: Fix vflip / hflip set functions Greg Kroah-Hartman
` (144 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Scally, Rui Miguel Silva,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 50a7bad4e0a37d7018ab6fe843dd84bc6b2ecf72 ]
The index into ov2680_hv_flip_bayer_order[] should be 0-3, but
ov2680_bayer_order() was using 0 + BIT(2) + (BIT(2) << 1) as
max index, while the intention was to use: 0 + 1 + 2 as max index.
Fix the index calculation in ov2680_bayer_order(), while at it
also just use the ctrl values rather then reading them back using
a slow i2c-read transaction.
This also allows making the function void, since there now are
no more i2c-reads to error check.
Note the check for the ctrls being NULL is there to allow
adding an ov2680_fill_format() helper later, which will call
ov2680_set_bayer_order() during probe() before the ctrls are created.
[Sakari Ailus: Change all users of ov2680_set_bayer_order() here]
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 33 ++++++++++++++-------------------
1 file changed, 14 insertions(+), 19 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 42efd60c6a96b..7d072448c8530 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -315,26 +315,17 @@ static void ov2680_power_down(struct ov2680_dev *sensor)
usleep_range(5000, 10000);
}
-static int ov2680_bayer_order(struct ov2680_dev *sensor)
+static void ov2680_set_bayer_order(struct ov2680_dev *sensor)
{
- u32 format1;
- u32 format2;
- u32 hv_flip;
- int ret;
-
- ret = ov2680_read_reg(sensor, OV2680_REG_FORMAT1, &format1);
- if (ret < 0)
- return ret;
+ int hv_flip = 0;
- ret = ov2680_read_reg(sensor, OV2680_REG_FORMAT2, &format2);
- if (ret < 0)
- return ret;
+ if (sensor->ctrls.vflip && sensor->ctrls.vflip->val)
+ hv_flip += 1;
- hv_flip = (format2 & BIT(2) << 1) | (format1 & BIT(2));
+ if (sensor->ctrls.hflip && sensor->ctrls.hflip->val)
+ hv_flip += 2;
sensor->fmt.code = ov2680_hv_flip_bayer_order[hv_flip];
-
- return 0;
}
static int ov2680_vflip_enable(struct ov2680_dev *sensor)
@@ -345,7 +336,8 @@ static int ov2680_vflip_enable(struct ov2680_dev *sensor)
if (ret < 0)
return ret;
- return ov2680_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor);
+ return 0;
}
static int ov2680_vflip_disable(struct ov2680_dev *sensor)
@@ -356,7 +348,8 @@ static int ov2680_vflip_disable(struct ov2680_dev *sensor)
if (ret < 0)
return ret;
- return ov2680_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor);
+ return 0;
}
static int ov2680_hflip_enable(struct ov2680_dev *sensor)
@@ -367,7 +360,8 @@ static int ov2680_hflip_enable(struct ov2680_dev *sensor)
if (ret < 0)
return ret;
- return ov2680_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor);
+ return 0;
}
static int ov2680_hflip_disable(struct ov2680_dev *sensor)
@@ -378,7 +372,8 @@ static int ov2680_hflip_disable(struct ov2680_dev *sensor)
if (ret < 0)
return ret;
- return ov2680_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor);
+ return 0;
}
static int ov2680_test_pattern_set(struct ov2680_dev *sensor, int value)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 467/600] media: ov2680: Fix vflip / hflip set functions
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (465 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 466/600] media: ov2680: Fix ov2680_bayer_order() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 468/600] media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s Greg Kroah-Hartman
` (143 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Scally, Rui Miguel Silva,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit d5d08ad330c9ccebc5e066fda815423a290f48b0 ]
ov2680_vflip_disable() / ov2680_hflip_disable() pass BIT(0) instead of
0 as value to ov2680_mod_reg().
While fixing this also:
1. Stop having separate enable/disable functions for hflip / vflip
2. Move the is_streaming check, which is unique to hflip / vflip
into the ov2680_set_?flip() functions.
for a nice code cleanup.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 50 +++++++++-----------------------------
1 file changed, 12 insertions(+), 38 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 7d072448c8530..c999a898dfe77 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -328,23 +328,15 @@ static void ov2680_set_bayer_order(struct ov2680_dev *sensor)
sensor->fmt.code = ov2680_hv_flip_bayer_order[hv_flip];
}
-static int ov2680_vflip_enable(struct ov2680_dev *sensor)
+static int ov2680_set_vflip(struct ov2680_dev *sensor, s32 val)
{
int ret;
- ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT1, BIT(2), BIT(2));
- if (ret < 0)
- return ret;
-
- ov2680_set_bayer_order(sensor);
- return 0;
-}
-
-static int ov2680_vflip_disable(struct ov2680_dev *sensor)
-{
- int ret;
+ if (sensor->is_streaming)
+ return -EBUSY;
- ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT1, BIT(2), BIT(0));
+ ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT1,
+ BIT(2), val ? BIT(2) : 0);
if (ret < 0)
return ret;
@@ -352,23 +344,15 @@ static int ov2680_vflip_disable(struct ov2680_dev *sensor)
return 0;
}
-static int ov2680_hflip_enable(struct ov2680_dev *sensor)
+static int ov2680_set_hflip(struct ov2680_dev *sensor, s32 val)
{
int ret;
- ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT2, BIT(2), BIT(2));
- if (ret < 0)
- return ret;
-
- ov2680_set_bayer_order(sensor);
- return 0;
-}
-
-static int ov2680_hflip_disable(struct ov2680_dev *sensor)
-{
- int ret;
+ if (sensor->is_streaming)
+ return -EBUSY;
- ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT2, BIT(2), BIT(0));
+ ret = ov2680_mod_reg(sensor, OV2680_REG_FORMAT2,
+ BIT(2), val ? BIT(2) : 0);
if (ret < 0)
return ret;
@@ -722,19 +706,9 @@ static int ov2680_s_ctrl(struct v4l2_ctrl *ctrl)
case V4L2_CID_EXPOSURE:
return ov2680_exposure_set(sensor, ctrl->val);
case V4L2_CID_VFLIP:
- if (sensor->is_streaming)
- return -EBUSY;
- if (ctrl->val)
- return ov2680_vflip_enable(sensor);
- else
- return ov2680_vflip_disable(sensor);
+ return ov2680_set_vflip(sensor, ctrl->val);
case V4L2_CID_HFLIP:
- if (sensor->is_streaming)
- return -EBUSY;
- if (ctrl->val)
- return ov2680_hflip_enable(sensor);
- else
- return ov2680_hflip_disable(sensor);
+ return ov2680_set_hflip(sensor, ctrl->val);
case V4L2_CID_TEST_PATTERN:
return ov2680_test_pattern_set(sensor, ctrl->val);
default:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 468/600] media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (466 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 467/600] media: ov2680: Fix vflip / hflip set functions Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 469/600] media: ov2680: Dont take the lock for try_fmt calls Greg Kroah-Hartman
` (142 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Scally, Rui Miguel Silva,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 49c282d5a8c5f4d1d9088622bec792294c716010 ]
VIDEO_V4L2_SUBDEV_API is now automatically selected in Kconfig
for all sensor drivers. Remove the ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
checks.
This is a preparation patch for fixing ov2680_set_fmt()
which == V4L2_SUBDEV_FORMAT_TRY calls not properly filling in
the passed in v4l2_mbus_framefmt struct.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index c999a898dfe77..de11a5fb03659 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -562,7 +562,6 @@ static int ov2680_get_fmt(struct v4l2_subdev *sd,
{
struct ov2680_dev *sensor = to_ov2680_dev(sd);
struct v4l2_mbus_framefmt *fmt = NULL;
- int ret = 0;
if (format->pad != 0)
return -EINVAL;
@@ -570,22 +569,17 @@ static int ov2680_get_fmt(struct v4l2_subdev *sd,
mutex_lock(&sensor->lock);
if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
-#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
fmt = v4l2_subdev_get_try_format(&sensor->sd, sd_state,
format->pad);
-#else
- ret = -EINVAL;
-#endif
} else {
fmt = &sensor->fmt;
}
- if (fmt)
- format->format = *fmt;
+ format->format = *fmt;
mutex_unlock(&sensor->lock);
- return ret;
+ return 0;
}
static int ov2680_set_fmt(struct v4l2_subdev *sd,
@@ -594,9 +588,7 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
{
struct ov2680_dev *sensor = to_ov2680_dev(sd);
struct v4l2_mbus_framefmt *fmt = &format->format;
-#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
struct v4l2_mbus_framefmt *try_fmt;
-#endif
const struct ov2680_mode_info *mode;
int ret = 0;
@@ -619,10 +611,8 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
}
if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
-#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
try_fmt = v4l2_subdev_get_try_format(sd, sd_state, 0);
format->format = *try_fmt;
-#endif
goto unlock;
}
@@ -780,9 +770,7 @@ static int ov2680_v4l2_register(struct ov2680_dev *sensor)
v4l2_i2c_subdev_init(&sensor->sd, sensor->i2c_client,
&ov2680_subdev_ops);
-#ifdef CONFIG_VIDEO_V4L2_SUBDEV_API
sensor->sd.flags = V4L2_SUBDEV_FL_HAS_DEVNODE;
-#endif
sensor->pad.flags = MEDIA_PAD_FL_SOURCE;
sensor->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 469/600] media: ov2680: Dont take the lock for try_fmt calls
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (467 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 468/600] media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 470/600] media: ov2680: Add ov2680_fill_format() helper function Greg Kroah-Hartman
` (141 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rui Miguel Silva, Daniel Scally,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit e521b9cc1a49de677f4fc65909ce4877fbf7b113 ]
On ov2680_set_fmt() calls with format->which == V4L2_SUBDEV_FORMAT_TRY,
ov2680_set_fmt() does not talk to the sensor.
So in this case there is no need to lock the sensor->lock mutex or
to check that the sensor is streaming.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 20 +++++++++-----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index de11a5fb03659..4f7ff23ef8973 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -595,24 +595,22 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
if (format->pad != 0)
return -EINVAL;
- mutex_lock(&sensor->lock);
-
- if (sensor->is_streaming) {
- ret = -EBUSY;
- goto unlock;
- }
-
mode = v4l2_find_nearest_size(ov2680_mode_data,
ARRAY_SIZE(ov2680_mode_data), width,
height, fmt->width, fmt->height);
- if (!mode) {
- ret = -EINVAL;
- goto unlock;
- }
+ if (!mode)
+ return -EINVAL;
if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
try_fmt = v4l2_subdev_get_try_format(sd, sd_state, 0);
format->format = *try_fmt;
+ return 0;
+ }
+
+ mutex_lock(&sensor->lock);
+
+ if (sensor->is_streaming) {
+ ret = -EBUSY;
goto unlock;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 470/600] media: ov2680: Add ov2680_fill_format() helper function
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (468 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 469/600] media: ov2680: Dont take the lock for try_fmt calls Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 471/600] media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not working Greg Kroah-Hartman
` (140 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rui Miguel Silva, Daniel Scally,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 6d6849b2203f3244b575ba01d3e41ee19aa2cadf ]
Add a ov2680_fill_format() helper function and use this everywhere were
a v4l2_mbus_framefmt struct needs to be filled in so that the driver always
fills it consistently.
This is a preparation patch for fixing ov2680_set_fmt()
which == V4L2_SUBDEV_FORMAT_TRY calls not properly filling in
the passed in v4l2_mbus_framefmt struct.
Note that for ov2680_init_cfg() this now simply always fills
the try_fmt struct of the passed in sd_state. This is correct because
ov2680_init_cfg() is never called with a NULL sd_state so the old
sd_state check is not necessary.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 49 +++++++++++++++++++++-----------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 4f7ff23ef8973..6e0e8d21d189f 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -54,6 +54,9 @@
#define OV2680_WIDTH_MAX 1600
#define OV2680_HEIGHT_MAX 1200
+#define OV2680_DEFAULT_WIDTH 800
+#define OV2680_DEFAULT_HEIGHT 600
+
enum ov2680_mode_id {
OV2680_MODE_QUXGA_800_600,
OV2680_MODE_720P_1280_720,
@@ -315,7 +318,8 @@ static void ov2680_power_down(struct ov2680_dev *sensor)
usleep_range(5000, 10000);
}
-static void ov2680_set_bayer_order(struct ov2680_dev *sensor)
+static void ov2680_set_bayer_order(struct ov2680_dev *sensor,
+ struct v4l2_mbus_framefmt *fmt)
{
int hv_flip = 0;
@@ -325,7 +329,19 @@ static void ov2680_set_bayer_order(struct ov2680_dev *sensor)
if (sensor->ctrls.hflip && sensor->ctrls.hflip->val)
hv_flip += 2;
- sensor->fmt.code = ov2680_hv_flip_bayer_order[hv_flip];
+ fmt->code = ov2680_hv_flip_bayer_order[hv_flip];
+}
+
+static void ov2680_fill_format(struct ov2680_dev *sensor,
+ struct v4l2_mbus_framefmt *fmt,
+ unsigned int width, unsigned int height)
+{
+ memset(fmt, 0, sizeof(*fmt));
+ fmt->width = width;
+ fmt->height = height;
+ fmt->field = V4L2_FIELD_NONE;
+ fmt->colorspace = V4L2_COLORSPACE_SRGB;
+ ov2680_set_bayer_order(sensor, fmt);
}
static int ov2680_set_vflip(struct ov2680_dev *sensor, s32 val)
@@ -340,7 +356,7 @@ static int ov2680_set_vflip(struct ov2680_dev *sensor, s32 val)
if (ret < 0)
return ret;
- ov2680_set_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor, &sensor->fmt);
return 0;
}
@@ -356,7 +372,7 @@ static int ov2680_set_hflip(struct ov2680_dev *sensor, s32 val)
if (ret < 0)
return ret;
- ov2680_set_bayer_order(sensor);
+ ov2680_set_bayer_order(sensor, &sensor->fmt);
return 0;
}
@@ -614,10 +630,7 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
goto unlock;
}
- fmt->width = mode->width;
- fmt->height = mode->height;
- fmt->code = sensor->fmt.code;
- fmt->colorspace = sensor->fmt.colorspace;
+ ov2680_fill_format(sensor, fmt, mode->width, mode->height);
sensor->current_mode = mode;
sensor->fmt = format->format;
@@ -632,16 +645,11 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
static int ov2680_init_cfg(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state)
{
- struct v4l2_subdev_format fmt = {
- .which = sd_state ? V4L2_SUBDEV_FORMAT_TRY
- : V4L2_SUBDEV_FORMAT_ACTIVE,
- .format = {
- .width = 800,
- .height = 600,
- }
- };
+ struct ov2680_dev *sensor = to_ov2680_dev(sd);
- return ov2680_set_fmt(sd, sd_state, &fmt);
+ ov2680_fill_format(sensor, &sd_state->pads[0].try_fmt,
+ OV2680_DEFAULT_WIDTH, OV2680_DEFAULT_HEIGHT);
+ return 0;
}
static int ov2680_enum_frame_size(struct v4l2_subdev *sd,
@@ -740,11 +748,8 @@ static int ov2680_mode_init(struct ov2680_dev *sensor)
const struct ov2680_mode_info *init_mode;
/* set initial mode */
- sensor->fmt.code = MEDIA_BUS_FMT_SBGGR10_1X10;
- sensor->fmt.width = 800;
- sensor->fmt.height = 600;
- sensor->fmt.field = V4L2_FIELD_NONE;
- sensor->fmt.colorspace = V4L2_COLORSPACE_SRGB;
+ ov2680_fill_format(sensor, &sensor->fmt,
+ OV2680_DEFAULT_WIDTH, OV2680_DEFAULT_HEIGHT);
sensor->frame_interval.denominator = OV2680_FRAME_RATE;
sensor->frame_interval.numerator = 1;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 471/600] media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not working
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (469 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 470/600] media: ov2680: Add ov2680_fill_format() helper function Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 472/600] media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors Greg Kroah-Hartman
` (139 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rui Miguel Silva, Daniel Scally,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit c0e97a4b4f20639f74cd5809b42ba6cbf9736a7d ]
ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY was getting
the try_fmt v4l2_mbus_framefmt struct from the passed in sd_state
and then storing the contents of that into the return by reference
format->format struct.
While the right thing to do would be filling format->format based on
the just looked up mode and then store the results of that in
sd_state->pads[0].try_fmt .
Before the previous change introducing ov2680_fill_format() this
resulted in ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY always
returning the zero-ed out sd_state->pads[0].try_fmt in format->format
breaking callers using this.
After the introduction of ov2680_fill_format() which at least
initializes sd_state->pads[0].try_fmt properly, format->format
is now always being filled with the default 800x600 mode set by
ov2680_init_cfg() independent of the actual requested mode.
Move the filling of format->format with ov2680_fill_format() to
before the if (which == V4L2_SUBDEV_FORMAT_TRY) and then store
the filled in format->format in sd_state->pads[0].try_fmt to
fix this.
Note this removes the fmt local variable because IMHO having a local
variable which points to a sub-struct of one of the function arguments
just leads to confusion when reading the code.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index 6e0e8d21d189f..a24344ef9852c 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -603,7 +603,6 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
struct v4l2_subdev_format *format)
{
struct ov2680_dev *sensor = to_ov2680_dev(sd);
- struct v4l2_mbus_framefmt *fmt = &format->format;
struct v4l2_mbus_framefmt *try_fmt;
const struct ov2680_mode_info *mode;
int ret = 0;
@@ -612,14 +611,18 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
return -EINVAL;
mode = v4l2_find_nearest_size(ov2680_mode_data,
- ARRAY_SIZE(ov2680_mode_data), width,
- height, fmt->width, fmt->height);
+ ARRAY_SIZE(ov2680_mode_data),
+ width, height,
+ format->format.width,
+ format->format.height);
if (!mode)
return -EINVAL;
+ ov2680_fill_format(sensor, &format->format, mode->width, mode->height);
+
if (format->which == V4L2_SUBDEV_FORMAT_TRY) {
try_fmt = v4l2_subdev_get_try_format(sd, sd_state, 0);
- format->format = *try_fmt;
+ *try_fmt = format->format;
return 0;
}
@@ -630,8 +633,6 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd,
goto unlock;
}
- ov2680_fill_format(sensor, fmt, mode->width, mode->height);
-
sensor->current_mode = mode;
sensor->fmt = format->format;
sensor->mode_pending_changes = true;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 472/600] media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (470 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 471/600] media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not working Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 473/600] media: i2c: rdacm21: Fix uninitialized value Greg Kroah-Hartman
` (138 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Daniel Scally, Rui Miguel Silva,
Hans de Goede, Sakari Ailus, Mauro Carvalho Chehab, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit 84b4bd7e0d98166aa32fd470e672721190492eae ]
When the ov2680_power_on() "sensor soft reset failed" path is hit during
probe() the WARN() about putting an enabled regulator at
drivers/regulator/core.c:2398 triggers 3 times (once for each regulator),
filling dmesg with backtraces.
Fix this by properly disabling the regulators on ov2680_power_on() errors.
Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver")
Reviewed-by: Daniel Scally <dan.scally@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/ov2680.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c
index a24344ef9852c..8943e4e78a0df 100644
--- a/drivers/media/i2c/ov2680.c
+++ b/drivers/media/i2c/ov2680.c
@@ -475,7 +475,7 @@ static int ov2680_power_on(struct ov2680_dev *sensor)
ret = ov2680_write_reg(sensor, OV2680_REG_SOFT_RESET, 0x01);
if (ret != 0) {
dev_err(dev, "sensor soft reset failed\n");
- return ret;
+ goto err_disable_regulators;
}
usleep_range(1000, 2000);
} else {
@@ -485,7 +485,7 @@ static int ov2680_power_on(struct ov2680_dev *sensor)
ret = clk_prepare_enable(sensor->xvclk);
if (ret < 0)
- return ret;
+ goto err_disable_regulators;
sensor->is_enabled = true;
@@ -495,6 +495,10 @@ static int ov2680_power_on(struct ov2680_dev *sensor)
ov2680_stream_disable(sensor);
return 0;
+
+err_disable_regulators:
+ regulator_bulk_disable(OV2680_NUM_SUPPLIES, sensor->supplies);
+ return ret;
}
static int ov2680_s_power(struct v4l2_subdev *sd, int on)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 473/600] media: i2c: rdacm21: Fix uninitialized value
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (471 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 472/600] media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 474/600] f2fs: fix to avoid mmap vs set_compress_option case Greg Kroah-Hartman
` (137 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Hans Verkuil, Jacopo Mondi,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
[ Upstream commit 33c7ae8f49e3413c81e879e1fdfcea4c5516e37b ]
Fix the following smatch warning:
drivers/media/i2c/rdacm21.c:373 ov10640_check_id() error: uninitialized
symbol 'val'.
Initialize 'val' to 0 in the ov10640_check_id() function.
Fixes: 2b821698dc73 ("media: i2c: rdacm21: Power up OV10640 before OV490")
Reported-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/media/i2c/rdacm21.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/media/i2c/rdacm21.c b/drivers/media/i2c/rdacm21.c
index 9ccc56c30d3b0..d269c541ebe4c 100644
--- a/drivers/media/i2c/rdacm21.c
+++ b/drivers/media/i2c/rdacm21.c
@@ -351,7 +351,7 @@ static void ov10640_power_up(struct rdacm21_device *dev)
static int ov10640_check_id(struct rdacm21_device *dev)
{
unsigned int i;
- u8 val;
+ u8 val = 0;
/* Read OV10640 ID to test communications. */
for (i = 0; i < OV10640_PID_TIMEOUT; ++i) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 474/600] f2fs: fix to avoid mmap vs set_compress_option case
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (472 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 473/600] media: i2c: rdacm21: Fix uninitialized value Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 475/600] f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED Greg Kroah-Hartman
` (136 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Chao Yu, Jaegeuk Kim, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chao Yu <chao@kernel.org>
[ Upstream commit b5ab3276eb69cacf44ecfb11b2bfab73096ff4e4 ]
Compression option in inode should not be changed after they have
been used, however, it may happen in below race case:
Thread A Thread B
- f2fs_ioc_set_compress_option
- check f2fs_is_mmap_file()
- check get_dirty_pages()
- check F2FS_HAS_BLOCKS()
- f2fs_file_mmap
- set_inode_flag(FI_MMAP_FILE)
- fault
- do_page_mkwrite
- f2fs_vm_page_mkwrite
- f2fs_get_block_locked
- fault_dirty_shared_page
- set_page_dirty
- update i_compress_algorithm
- update i_log_cluster_size
- update i_cluster_size
Avoid such race condition by covering f2fs_file_mmap() w/ i_sem lock,
meanwhile add mmap file check condition in f2fs_may_compress() as well.
Fixes: e1e8debec656 ("f2fs: add F2FS_IOC_SET_COMPRESS_OPTION ioctl")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/f2fs/f2fs.h | 3 ++-
fs/f2fs/file.c | 23 ++++++++++++++++++-----
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 4d1e48c676fab..c2b7d09238941 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -4453,7 +4453,8 @@ static inline bool f2fs_low_mem_mode(struct f2fs_sb_info *sbi)
static inline bool f2fs_may_compress(struct inode *inode)
{
if (IS_SWAPFILE(inode) || f2fs_is_pinned_file(inode) ||
- f2fs_is_atomic_file(inode) || f2fs_has_inline_data(inode))
+ f2fs_is_atomic_file(inode) || f2fs_has_inline_data(inode) ||
+ f2fs_is_mmap_file(inode))
return false;
return S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode);
}
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 7b94f047cbf79..746c71716bead 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -530,7 +530,11 @@ static int f2fs_file_mmap(struct file *file, struct vm_area_struct *vma)
file_accessed(file);
vma->vm_ops = &f2fs_file_vm_ops;
+
+ f2fs_down_read(&F2FS_I(inode)->i_sem);
set_inode_flag(inode, FI_MMAP_FILE);
+ f2fs_up_read(&F2FS_I(inode)->i_sem);
+
return 0;
}
@@ -1927,12 +1931,19 @@ static int f2fs_setflags_common(struct inode *inode, u32 iflags, u32 mask)
int err = f2fs_convert_inline_inode(inode);
if (err)
return err;
- if (!f2fs_may_compress(inode))
- return -EINVAL;
- if (S_ISREG(inode->i_mode) && F2FS_HAS_BLOCKS(inode))
+
+ f2fs_down_write(&F2FS_I(inode)->i_sem);
+ if (!f2fs_may_compress(inode) ||
+ (S_ISREG(inode->i_mode) &&
+ F2FS_HAS_BLOCKS(inode))) {
+ f2fs_up_write(&F2FS_I(inode)->i_sem);
return -EINVAL;
- if (set_compress_context(inode))
- return -EOPNOTSUPP;
+ }
+ err = set_compress_context(inode);
+ f2fs_up_write(&F2FS_I(inode)->i_sem);
+
+ if (err)
+ return err;
}
}
@@ -3958,6 +3969,7 @@ static int f2fs_ioc_set_compress_option(struct file *filp, unsigned long arg)
file_start_write(filp);
inode_lock(inode);
+ f2fs_down_write(&F2FS_I(inode)->i_sem);
if (f2fs_is_mmap_file(inode) || get_dirty_pages(inode)) {
ret = -EBUSY;
goto out;
@@ -3977,6 +3989,7 @@ static int f2fs_ioc_set_compress_option(struct file *filp, unsigned long arg)
f2fs_warn(sbi, "compression algorithm is successfully set, "
"but current kernel doesn't support this algorithm.");
out:
+ f2fs_up_write(&F2FS_I(inode)->i_sem);
inode_unlock(inode);
file_end_write(filp);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 475/600] f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (473 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 474/600] f2fs: fix to avoid mmap vs set_compress_option case Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 476/600] f2fs: Only lfs mode is allowed with zoned block device feature Greg Kroah-Hartman
` (135 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yangtao Li, Chao Yu, Jaegeuk Kim,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yangtao Li <frank.li@vivo.com>
[ Upstream commit b5a711acab305e04278c136c841ba37c589c16a1 ]
The current logic, regardless of whether CONFIG_BLK_DEV_ZONED
is enabled or not, will judge whether discard_unit is SECTION,
when f2fs_sb_has_blkzoned.
In fact, when CONFIG_BLK_DEV_ZONED is not enabled, this judgment
is a path that will never be accessed. At this time, -EINVAL will
be returned in the parse_options function, accompanied by the
message "Zoned block device support is not enabled".
Let's wrap this discard_unit judgment with CONFIG_BLK_DEV_ZONED.
Signed-off-by: Yangtao Li <frank.li@vivo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Stable-dep-of: 2bd4df8fcbc7 ("f2fs: Only lfs mode is allowed with zoned block device feature")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/f2fs/super.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index b6dad389fa144..d616ce3826e7a 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -1285,19 +1285,18 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
* zone alignment optimization. This is optional for host-aware
* devices, but mandatory for host-managed zoned block devices.
*/
-#ifndef CONFIG_BLK_DEV_ZONED
- if (f2fs_sb_has_blkzoned(sbi)) {
- f2fs_err(sbi, "Zoned block device support is not enabled");
- return -EINVAL;
- }
-#endif
if (f2fs_sb_has_blkzoned(sbi)) {
+#ifdef CONFIG_BLK_DEV_ZONED
if (F2FS_OPTION(sbi).discard_unit !=
DISCARD_UNIT_SECTION) {
f2fs_info(sbi, "Zoned block device doesn't need small discard, set discard_unit=section by default");
F2FS_OPTION(sbi).discard_unit =
DISCARD_UNIT_SECTION;
}
+#else
+ f2fs_err(sbi, "Zoned block device support is not enabled");
+ return -EINVAL;
+#endif
}
#ifdef CONFIG_F2FS_FS_COMPRESSION
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 476/600] f2fs: Only lfs mode is allowed with zoned block device feature
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (474 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 475/600] f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 477/600] Revert "f2fs: fix to do sanity check on extent cache correctly" Greg Kroah-Hartman
` (134 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Chunhai Guo, Jaegeuk Kim,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chunhai Guo <guochunhai@vivo.com>
[ Upstream commit 2bd4df8fcbc72f58ce3c62ed021ab291ca42de0b ]
Now f2fs support four block allocation modes: lfs, adaptive,
fragment:segment, fragment:block. Only lfs mode is allowed with zoned block
device feature.
Fixes: 6691d940b0e0 ("f2fs: introduce fragment allocation mode mount option")
Signed-off-by: Chunhai Guo <guochunhai@vivo.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/f2fs/super.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index d616ce3826e7a..2046f633fe57a 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -858,11 +858,6 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
if (!name)
return -ENOMEM;
if (!strcmp(name, "adaptive")) {
- if (f2fs_sb_has_blkzoned(sbi)) {
- f2fs_warn(sbi, "adaptive mode is not allowed with zoned block device feature");
- kfree(name);
- return -EINVAL;
- }
F2FS_OPTION(sbi).fs_mode = FS_MODE_ADAPTIVE;
} else if (!strcmp(name, "lfs")) {
F2FS_OPTION(sbi).fs_mode = FS_MODE_LFS;
@@ -1293,6 +1288,11 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
F2FS_OPTION(sbi).discard_unit =
DISCARD_UNIT_SECTION;
}
+
+ if (F2FS_OPTION(sbi).fs_mode != FS_MODE_LFS) {
+ f2fs_info(sbi, "Only lfs mode is allowed with zoned block device feature");
+ return -EINVAL;
+ }
#else
f2fs_err(sbi, "Zoned block device support is not enabled");
return -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 477/600] Revert "f2fs: fix to do sanity check on extent cache correctly"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (475 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 476/600] f2fs: Only lfs mode is allowed with zoned block device feature Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 478/600] cgroup:namespace: Remove unused cgroup_namespaces_init() Greg Kroah-Hartman
` (133 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, syzbot+601018296973a481f302, Chao Yu,
Jaegeuk Kim, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chao Yu <chao@kernel.org>
[ Upstream commit 958ccbbf1ce716d77c7cfa79ace50a421c1eed73 ]
syzbot reports a f2fs bug as below:
UBSAN: array-index-out-of-bounds in fs/f2fs/f2fs.h:3275:19
index 1409 is out of range for type '__le32[923]' (aka 'unsigned int[923]')
Call Trace:
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106
ubsan_epilogue lib/ubsan.c:217 [inline]
__ubsan_handle_out_of_bounds+0x11c/0x150 lib/ubsan.c:348
inline_data_addr fs/f2fs/f2fs.h:3275 [inline]
__recover_inline_status fs/f2fs/inode.c:113 [inline]
do_read_inode fs/f2fs/inode.c:480 [inline]
f2fs_iget+0x4730/0x48b0 fs/f2fs/inode.c:604
f2fs_fill_super+0x640e/0x80c0 fs/f2fs/super.c:4601
mount_bdev+0x276/0x3b0 fs/super.c:1391
legacy_get_tree+0xef/0x190 fs/fs_context.c:611
vfs_get_tree+0x8c/0x270 fs/super.c:1519
do_new_mount+0x28f/0xae0 fs/namespace.c:3335
do_mount fs/namespace.c:3675 [inline]
__do_sys_mount fs/namespace.c:3884 [inline]
__se_sys_mount+0x2d9/0x3c0 fs/namespace.c:3861
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x63/0xcd
The issue was bisected to:
commit d48a7b3a72f121655d95b5157c32c7d555e44c05
Author: Chao Yu <chao@kernel.org>
Date: Mon Jan 9 03:49:20 2023 +0000
f2fs: fix to do sanity check on extent cache correctly
The root cause is we applied both v1 and v2 of the patch, v2 is the right
fix, so it needs to revert v1 in order to fix reported issue.
v1:
commit d48a7b3a72f1 ("f2fs: fix to do sanity check on extent cache correctly")
https://lore.kernel.org/lkml/20230109034920.492914-1-chao@kernel.org/
v2:
commit 269d11948100 ("f2fs: fix to do sanity check on extent cache correctly")
https://lore.kernel.org/lkml/20230207134808.1827869-1-chao@kernel.org/
Reported-by: syzbot+601018296973a481f302@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-f2fs-devel/000000000000fcf0690600e4d04d@google.com/
Fixes: d48a7b3a72f1 ("f2fs: fix to do sanity check on extent cache correctly")
Signed-off-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
fs/f2fs/inode.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/fs/f2fs/inode.c b/fs/f2fs/inode.c
index aab3b8b3ab0a7..1fc7760499f10 100644
--- a/fs/f2fs/inode.c
+++ b/fs/f2fs/inode.c
@@ -397,6 +397,12 @@ static int do_read_inode(struct inode *inode)
fi->i_inline_xattr_size = 0;
}
+ if (!sanity_check_inode(inode, node_page)) {
+ f2fs_put_page(node_page, 1);
+ f2fs_handle_error(sbi, ERROR_CORRUPTED_INODE);
+ return -EFSCORRUPTED;
+ }
+
/* check data exist */
if (f2fs_has_inline_data(inode) && !f2fs_exist_data(inode))
__recover_inline_status(inode, node_page);
@@ -459,12 +465,6 @@ static int do_read_inode(struct inode *inode)
/* Need all the flag bits */
f2fs_init_read_extent_tree(inode, node_page);
- if (!sanity_check_inode(inode, node_page)) {
- f2fs_put_page(node_page, 1);
- f2fs_handle_error(sbi, ERROR_CORRUPTED_INODE);
- return -EFSCORRUPTED;
- }
-
if (!sanity_check_extent_cache(inode)) {
f2fs_put_page(node_page, 1);
f2fs_handle_error(sbi, ERROR_CORRUPTED_INODE);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 478/600] cgroup:namespace: Remove unused cgroup_namespaces_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (476 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 477/600] Revert "f2fs: fix to do sanity check on extent cache correctly" Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 479/600] coresight: trbe: Fix TRBE potential sleep in atomic context Greg Kroah-Hartman
` (132 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Lu Jialin, Tejun Heo, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lu Jialin <lujialin4@huawei.com>
[ Upstream commit 82b90b6c5b38e457c7081d50dff11ecbafc1e61a ]
cgroup_namspace_init() just return 0. Therefore, there is no need to
call it during start_kernel. Just remove it.
Fixes: a79a908fd2b0 ("cgroup: introduce cgroup namespaces")
Signed-off-by: Lu Jialin <lujialin4@huawei.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/cgroup/namespace.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/kernel/cgroup/namespace.c b/kernel/cgroup/namespace.c
index 0d5c29879a50b..144a464e45c66 100644
--- a/kernel/cgroup/namespace.c
+++ b/kernel/cgroup/namespace.c
@@ -149,9 +149,3 @@ const struct proc_ns_operations cgroupns_operations = {
.install = cgroupns_install,
.owner = cgroupns_owner,
};
-
-static __init int cgroup_namespaces_init(void)
-{
- return 0;
-}
-subsys_initcall(cgroup_namespaces_init);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 479/600] coresight: trbe: Fix TRBE potential sleep in atomic context
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (477 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 478/600] cgroup:namespace: Remove unused cgroup_namespaces_init() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 480/600] RDMA/irdma: Prevent zero-length STAG registration Greg Kroah-Hartman
` (131 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Junhao He, Suzuki K Poulose,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Junhao He <hejunhao3@huawei.com>
[ Upstream commit c0a232f1e19e378c5c4e5973a996392942c80090 ]
smp_call_function_single() will allocate an IPI interrupt vector to
the target processor and send a function call request to the interrupt
vector. After the target processor receives the IPI interrupt, it will
execute arm_trbe_remove_coresight_cpu() call request in the interrupt
handler.
According to the device_unregister() stack information, if other process
is useing the device, the down_write() may sleep, and trigger deadlocks
or unexpected errors.
arm_trbe_remove_coresight_cpu
coresight_unregister
device_unregister
device_del
kobject_del
__kobject_del
sysfs_remove_dir
kernfs_remove
down_write ---------> it may sleep
Add a helper arm_trbe_disable_cpu() to disable TRBE precpu irq and reset
per TRBE.
Simply call arm_trbe_remove_coresight_cpu() directly without useing the
smp_call_function_single(), which is the same as registering the TRBE
coresight device.
Fixes: 3fbf7f011f24 ("coresight: sink: Add TRBE driver")
Signed-off-by: Junhao He <hejunhao3@huawei.com>
Link: https://lore.kernel.org/r/20230814093813.19152-2-hejunhao3@huawei.com
[ Remove duplicate cpumask checks during removal ]
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
[ v3 - Remove the operation of assigning NULL to cpudata->drvdata ]
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Link: https://lore.kernel.org/r/20230818084052.10116-1-hejunhao3@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hwtracing/coresight/coresight-trbe.c | 32 +++++++++++---------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/drivers/hwtracing/coresight/coresight-trbe.c b/drivers/hwtracing/coresight/coresight-trbe.c
index 1fc4fd79a1c69..925f6c9cecff4 100644
--- a/drivers/hwtracing/coresight/coresight-trbe.c
+++ b/drivers/hwtracing/coresight/coresight-trbe.c
@@ -1223,6 +1223,16 @@ static void arm_trbe_enable_cpu(void *info)
enable_percpu_irq(drvdata->irq, IRQ_TYPE_NONE);
}
+static void arm_trbe_disable_cpu(void *info)
+{
+ struct trbe_drvdata *drvdata = info;
+ struct trbe_cpudata *cpudata = this_cpu_ptr(drvdata->cpudata);
+
+ disable_percpu_irq(drvdata->irq);
+ trbe_reset_local(cpudata);
+}
+
+
static void arm_trbe_register_coresight_cpu(struct trbe_drvdata *drvdata, int cpu)
{
struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu);
@@ -1324,18 +1334,12 @@ static void arm_trbe_probe_cpu(void *info)
cpumask_clear_cpu(cpu, &drvdata->supported_cpus);
}
-static void arm_trbe_remove_coresight_cpu(void *info)
+static void arm_trbe_remove_coresight_cpu(struct trbe_drvdata *drvdata, int cpu)
{
- int cpu = smp_processor_id();
- struct trbe_drvdata *drvdata = info;
- struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu);
struct coresight_device *trbe_csdev = coresight_get_percpu_sink(cpu);
- disable_percpu_irq(drvdata->irq);
- trbe_reset_local(cpudata);
if (trbe_csdev) {
coresight_unregister(trbe_csdev);
- cpudata->drvdata = NULL;
coresight_set_percpu_sink(cpu, NULL);
}
}
@@ -1364,8 +1368,10 @@ static int arm_trbe_remove_coresight(struct trbe_drvdata *drvdata)
{
int cpu;
- for_each_cpu(cpu, &drvdata->supported_cpus)
- smp_call_function_single(cpu, arm_trbe_remove_coresight_cpu, drvdata, 1);
+ for_each_cpu(cpu, &drvdata->supported_cpus) {
+ smp_call_function_single(cpu, arm_trbe_disable_cpu, drvdata, 1);
+ arm_trbe_remove_coresight_cpu(drvdata, cpu);
+ }
free_percpu(drvdata->cpudata);
return 0;
}
@@ -1404,12 +1410,8 @@ static int arm_trbe_cpu_teardown(unsigned int cpu, struct hlist_node *node)
{
struct trbe_drvdata *drvdata = hlist_entry_safe(node, struct trbe_drvdata, hotplug_node);
- if (cpumask_test_cpu(cpu, &drvdata->supported_cpus)) {
- struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu);
-
- disable_percpu_irq(drvdata->irq);
- trbe_reset_local(cpudata);
- }
+ if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
+ arm_trbe_disable_cpu(drvdata);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 480/600] RDMA/irdma: Prevent zero-length STAG registration
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (478 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 479/600] coresight: trbe: Fix TRBE potential sleep in atomic context Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 481/600] scsi: core: Use 32-bit hostnum in scsi_host_lookup() Greg Kroah-Hartman
` (130 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Christopher Bednarz, Shiraz Saleem,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christopher Bednarz <christopher.n.bednarz@intel.com>
[ Upstream commit bb6d73d9add68ad270888db327514384dfa44958 ]
Currently irdma allows zero-length STAGs to be programmed in HW during
the kernel mode fast register flow. Zero-length MR or STAG registration
disable HW memory length checks.
Improve gaps in bounds checking in irdma by preventing zero-length STAG or
MR registrations except if the IB_PD_UNSAFE_GLOBAL_RKEY is set.
This addresses the disclosure CVE-2023-25775.
Fixes: b48c24c2d710 ("RDMA/irdma: Implement device supported verb APIs")
Signed-off-by: Christopher Bednarz <christopher.n.bednarz@intel.com>
Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Link: https://lore.kernel.org/r/20230818144838.1758-1-shiraz.saleem@intel.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/irdma/ctrl.c | 6 ++++++
drivers/infiniband/hw/irdma/type.h | 2 ++
drivers/infiniband/hw/irdma/verbs.c | 10 ++++++++--
3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/irdma/ctrl.c b/drivers/infiniband/hw/irdma/ctrl.c
index 6544c9c60b7db..d98bfb83c3b4b 100644
--- a/drivers/infiniband/hw/irdma/ctrl.c
+++ b/drivers/infiniband/hw/irdma/ctrl.c
@@ -1061,6 +1061,9 @@ static int irdma_sc_alloc_stag(struct irdma_sc_dev *dev,
u64 hdr;
enum irdma_page_size page_size;
+ if (!info->total_len && !info->all_memory)
+ return -EINVAL;
+
if (info->page_size == 0x40000000)
page_size = IRDMA_PAGE_SIZE_1G;
else if (info->page_size == 0x200000)
@@ -1126,6 +1129,9 @@ static int irdma_sc_mr_reg_non_shared(struct irdma_sc_dev *dev,
u8 addr_type;
enum irdma_page_size page_size;
+ if (!info->total_len && !info->all_memory)
+ return -EINVAL;
+
if (info->page_size == 0x40000000)
page_size = IRDMA_PAGE_SIZE_1G;
else if (info->page_size == 0x200000)
diff --git a/drivers/infiniband/hw/irdma/type.h b/drivers/infiniband/hw/irdma/type.h
index d6cb94dc744c5..1c7cbf7c67bed 100644
--- a/drivers/infiniband/hw/irdma/type.h
+++ b/drivers/infiniband/hw/irdma/type.h
@@ -1015,6 +1015,7 @@ struct irdma_allocate_stag_info {
bool remote_access:1;
bool use_hmc_fcn_index:1;
bool use_pf_rid:1;
+ bool all_memory:1;
u8 hmc_fcn_index;
};
@@ -1042,6 +1043,7 @@ struct irdma_reg_ns_stag_info {
bool use_hmc_fcn_index:1;
u8 hmc_fcn_index;
bool use_pf_rid:1;
+ bool all_memory:1;
};
struct irdma_fast_reg_stag_info {
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 5962261f1b156..3b8b2341981ea 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -2557,7 +2557,8 @@ static int irdma_hw_alloc_stag(struct irdma_device *iwdev,
struct irdma_mr *iwmr)
{
struct irdma_allocate_stag_info *info;
- struct irdma_pd *iwpd = to_iwpd(iwmr->ibmr.pd);
+ struct ib_pd *pd = iwmr->ibmr.pd;
+ struct irdma_pd *iwpd = to_iwpd(pd);
int status;
struct irdma_cqp_request *cqp_request;
struct cqp_cmds_info *cqp_info;
@@ -2573,6 +2574,7 @@ static int irdma_hw_alloc_stag(struct irdma_device *iwdev,
info->stag_idx = iwmr->stag >> IRDMA_CQPSQ_STAG_IDX_S;
info->pd_id = iwpd->sc_pd.pd_id;
info->total_len = iwmr->len;
+ info->all_memory = pd->flags & IB_PD_UNSAFE_GLOBAL_RKEY;
info->remote_access = true;
cqp_info->cqp_cmd = IRDMA_OP_ALLOC_STAG;
cqp_info->post_sq = 1;
@@ -2620,6 +2622,8 @@ static struct ib_mr *irdma_alloc_mr(struct ib_pd *pd, enum ib_mr_type mr_type,
iwmr->type = IRDMA_MEMREG_TYPE_MEM;
palloc = &iwpbl->pble_alloc;
iwmr->page_cnt = max_num_sg;
+ /* Use system PAGE_SIZE as the sg page sizes are unknown at this point */
+ iwmr->len = max_num_sg * PAGE_SIZE;
err_code = irdma_get_pble(iwdev->rf->pble_rsrc, palloc, iwmr->page_cnt,
false);
if (err_code)
@@ -2699,7 +2703,8 @@ static int irdma_hwreg_mr(struct irdma_device *iwdev, struct irdma_mr *iwmr,
{
struct irdma_pbl *iwpbl = &iwmr->iwpbl;
struct irdma_reg_ns_stag_info *stag_info;
- struct irdma_pd *iwpd = to_iwpd(iwmr->ibmr.pd);
+ struct ib_pd *pd = iwmr->ibmr.pd;
+ struct irdma_pd *iwpd = to_iwpd(pd);
struct irdma_pble_alloc *palloc = &iwpbl->pble_alloc;
struct irdma_cqp_request *cqp_request;
struct cqp_cmds_info *cqp_info;
@@ -2718,6 +2723,7 @@ static int irdma_hwreg_mr(struct irdma_device *iwdev, struct irdma_mr *iwmr,
stag_info->total_len = iwmr->len;
stag_info->access_rights = irdma_get_mr_access(access);
stag_info->pd_id = iwpd->sc_pd.pd_id;
+ stag_info->all_memory = pd->flags & IB_PD_UNSAFE_GLOBAL_RKEY;
if (stag_info->access_rights & IRDMA_ACCESS_FLAGS_ZERO_BASED)
stag_info->addr_type = IRDMA_ADDR_TYPE_ZERO_BASED;
else
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 481/600] scsi: core: Use 32-bit hostnum in scsi_host_lookup()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (479 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 480/600] RDMA/irdma: Prevent zero-length STAG registration Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 482/600] scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock Greg Kroah-Hartman
` (129 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Tony Battersby, Bart Van Assche,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tony Battersby <tonyb@cybernetics.com>
[ Upstream commit 62ec2092095b678ff89ce4ba51c2938cd1e8e630 ]
Change scsi_host_lookup() hostnum argument type from unsigned short to
unsigned int to match the type used everywhere else.
Fixes: 6d49f63b415c ("[SCSI] Make host_no an unsigned int")
Signed-off-by: Tony Battersby <tonyb@cybernetics.com>
Link: https://lore.kernel.org/r/a02497e7-c12b-ef15-47fc-3f0a0b00ffce@cybernetics.com
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/hosts.c | 4 ++--
include/scsi/scsi_host.h | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index 45a2fd6584d16..8b825364baade 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -535,7 +535,7 @@ EXPORT_SYMBOL(scsi_host_alloc);
static int __scsi_host_match(struct device *dev, const void *data)
{
struct Scsi_Host *p;
- const unsigned short *hostnum = data;
+ const unsigned int *hostnum = data;
p = class_to_shost(dev);
return p->host_no == *hostnum;
@@ -552,7 +552,7 @@ static int __scsi_host_match(struct device *dev, const void *data)
* that scsi_host_get() took. The put_device() below dropped
* the reference from class_find_device().
**/
-struct Scsi_Host *scsi_host_lookup(unsigned short hostnum)
+struct Scsi_Host *scsi_host_lookup(unsigned int hostnum)
{
struct device *cdev;
struct Scsi_Host *shost = NULL;
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
index fcf25f1642a3a..d27d9fb7174c8 100644
--- a/include/scsi/scsi_host.h
+++ b/include/scsi/scsi_host.h
@@ -757,7 +757,7 @@ extern void scsi_remove_host(struct Scsi_Host *);
extern struct Scsi_Host *scsi_host_get(struct Scsi_Host *);
extern int scsi_host_busy(struct Scsi_Host *shost);
extern void scsi_host_put(struct Scsi_Host *t);
-extern struct Scsi_Host *scsi_host_lookup(unsigned short);
+extern struct Scsi_Host *scsi_host_lookup(unsigned int hostnum);
extern const char *scsi_host_state_name(enum scsi_host_state);
extern void scsi_host_complete_all_commands(struct Scsi_Host *shost,
enum scsi_host_status status);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 482/600] scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (480 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 481/600] scsi: core: Use 32-bit hostnum in scsi_host_lookup() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 483/600] interconnect: qcom: sm8450: Enable sync_state Greg Kroah-Hartman
` (128 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Chengfeng Ye, Davidlohr Bueso,
Martin K. Petersen, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Chengfeng Ye <dg573847474@gmail.com>
[ Upstream commit 1a1975551943f681772720f639ff42fbaa746212 ]
There is a long call chain that &fip->ctlr_lock is acquired by isr
fnic_isr_msix_wq_copy() under hard IRQ context. Thus other process context
code acquiring the lock should disable IRQ, otherwise deadlock could happen
if the IRQ preempts the execution while the lock is held in process context
on the same CPU.
[ISR]
fnic_isr_msix_wq_copy()
-> fnic_wq_copy_cmpl_handler()
-> fnic_fcpio_cmpl_handler()
-> fnic_fcpio_flogi_reg_cmpl_handler()
-> fnic_flush_tx()
-> fnic_send_frame()
-> fcoe_ctlr_els_send()
-> spin_lock_bh(&fip->ctlr_lock)
[Process Context]
1. fcoe_ctlr_timer_work()
-> fcoe_ctlr_flogi_send()
-> spin_lock_bh(&fip->ctlr_lock)
2. fcoe_ctlr_recv_work()
-> fcoe_ctlr_recv_handler()
-> fcoe_ctlr_recv_els()
-> fcoe_ctlr_announce()
-> spin_lock_bh(&fip->ctlr_lock)
3. fcoe_ctlr_recv_work()
-> fcoe_ctlr_recv_handler()
-> fcoe_ctlr_recv_els()
-> fcoe_ctlr_flogi_retry()
-> spin_lock_bh(&fip->ctlr_lock)
4. -> fcoe_xmit()
-> fcoe_ctlr_els_send()
-> spin_lock_bh(&fip->ctlr_lock)
spin_lock_bh() is not enough since fnic_isr_msix_wq_copy() is a
hardirq.
These flaws were found by an experimental static analysis tool I am
developing for irq-related deadlock.
The patch fix the potential deadlocks by spin_lock_irqsave() to disable
hard irq.
Fixes: 794d98e77f59 ("[SCSI] libfcoe: retry rejected FLOGI to another FCF if possible")
Signed-off-by: Chengfeng Ye <dg573847474@gmail.com>
Link: https://lore.kernel.org/r/20230817074708.7509-1-dg573847474@gmail.com
Reviewed-by: Davidlohr Bueso <dave@stgolabs.net>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/scsi/fcoe/fcoe_ctlr.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/scsi/fcoe/fcoe_ctlr.c b/drivers/scsi/fcoe/fcoe_ctlr.c
index ddc048069af25..8a4124e7d2043 100644
--- a/drivers/scsi/fcoe/fcoe_ctlr.c
+++ b/drivers/scsi/fcoe/fcoe_ctlr.c
@@ -319,16 +319,17 @@ static void fcoe_ctlr_announce(struct fcoe_ctlr *fip)
{
struct fcoe_fcf *sel;
struct fcoe_fcf *fcf;
+ unsigned long flags;
mutex_lock(&fip->ctlr_mutex);
- spin_lock_bh(&fip->ctlr_lock);
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
kfree_skb(fip->flogi_req);
fip->flogi_req = NULL;
list_for_each_entry(fcf, &fip->fcfs, list)
fcf->flogi_sent = 0;
- spin_unlock_bh(&fip->ctlr_lock);
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
sel = fip->sel_fcf;
if (sel && ether_addr_equal(sel->fcf_mac, fip->dest_addr))
@@ -699,6 +700,7 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr *fip, struct fc_lport *lport,
{
struct fc_frame *fp;
struct fc_frame_header *fh;
+ unsigned long flags;
u16 old_xid;
u8 op;
u8 mac[ETH_ALEN];
@@ -732,11 +734,11 @@ int fcoe_ctlr_els_send(struct fcoe_ctlr *fip, struct fc_lport *lport,
op = FIP_DT_FLOGI;
if (fip->mode == FIP_MODE_VN2VN)
break;
- spin_lock_bh(&fip->ctlr_lock);
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
kfree_skb(fip->flogi_req);
fip->flogi_req = skb;
fip->flogi_req_send = 1;
- spin_unlock_bh(&fip->ctlr_lock);
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
schedule_work(&fip->timer_work);
return -EINPROGRESS;
case ELS_FDISC:
@@ -1705,10 +1707,11 @@ static int fcoe_ctlr_flogi_send_locked(struct fcoe_ctlr *fip)
static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip)
{
struct fcoe_fcf *fcf;
+ unsigned long flags;
int error;
mutex_lock(&fip->ctlr_mutex);
- spin_lock_bh(&fip->ctlr_lock);
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
LIBFCOE_FIP_DBG(fip, "re-sending FLOGI - reselect\n");
fcf = fcoe_ctlr_select(fip);
if (!fcf || fcf->flogi_sent) {
@@ -1719,7 +1722,7 @@ static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip)
fcoe_ctlr_solicit(fip, NULL);
error = fcoe_ctlr_flogi_send_locked(fip);
}
- spin_unlock_bh(&fip->ctlr_lock);
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
mutex_unlock(&fip->ctlr_mutex);
return error;
}
@@ -1736,8 +1739,9 @@ static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip)
static void fcoe_ctlr_flogi_send(struct fcoe_ctlr *fip)
{
struct fcoe_fcf *fcf;
+ unsigned long flags;
- spin_lock_bh(&fip->ctlr_lock);
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
fcf = fip->sel_fcf;
if (!fcf || !fip->flogi_req_send)
goto unlock;
@@ -1764,7 +1768,7 @@ static void fcoe_ctlr_flogi_send(struct fcoe_ctlr *fip)
} else /* XXX */
LIBFCOE_FIP_DBG(fip, "No FCF selected - defer send\n");
unlock:
- spin_unlock_bh(&fip->ctlr_lock);
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
}
/**
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 483/600] interconnect: qcom: sm8450: Enable sync_state
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (481 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 482/600] scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 484/600] interconnect: qcom: bcm-voter: Improve enable_mask handling Greg Kroah-Hartman
` (127 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Vinod Koul,
Georgi Djakov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 16862f1b2110eca6330e5be6d804e1a08e06a202 ]
Enable sync_state on sm8450 so that the interconnect votes actually mean
anything and aren't just pinned to INT_MAX.
Fixes: fafc114a468e ("interconnect: qcom: Add SM8450 interconnect provider driver")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Reviewed-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20230811-topic-8450_syncstate-v1-1-69ae5552a18b@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/interconnect/qcom/sm8450.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/interconnect/qcom/sm8450.c b/drivers/interconnect/qcom/sm8450.c
index e64c214b40209..d6e582a02e628 100644
--- a/drivers/interconnect/qcom/sm8450.c
+++ b/drivers/interconnect/qcom/sm8450.c
@@ -1886,6 +1886,7 @@ static struct platform_driver qnoc_driver = {
.driver = {
.name = "qnoc-sm8450",
.of_match_table = qnoc_of_match,
+ .sync_state = icc_sync_state,
},
};
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 484/600] interconnect: qcom: bcm-voter: Improve enable_mask handling
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (482 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 483/600] interconnect: qcom: sm8450: Enable sync_state Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 485/600] interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting Greg Kroah-Hartman
` (126 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bjorn Andersson, Konrad Dybcio,
Georgi Djakov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit a1f4170dec440f023601d57e49227b784074d218 ]
We don't need all the complex arithmetic for BCMs utilizing enable_mask,
as all we need to do is to determine whether there's any user (or
keepalive) asking for it to be on.
Separate the logic for such BCMs for a small speed boost.
Suggested-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Reviewed-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230811-topic-icc_fix_1he-v2-1-0620af8ac133@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Stable-dep-of: 1a70ca71547b ("interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/interconnect/qcom/bcm-voter.c | 43 ++++++++++++++++++++++-----
1 file changed, 36 insertions(+), 7 deletions(-)
diff --git a/drivers/interconnect/qcom/bcm-voter.c b/drivers/interconnect/qcom/bcm-voter.c
index d5f2a6b5376bd..d857eb8838b95 100644
--- a/drivers/interconnect/qcom/bcm-voter.c
+++ b/drivers/interconnect/qcom/bcm-voter.c
@@ -58,6 +58,36 @@ static u64 bcm_div(u64 num, u32 base)
return num;
}
+/* BCMs with enable_mask use one-hot-encoding for on/off signaling */
+static void bcm_aggregate_mask(struct qcom_icc_bcm *bcm)
+{
+ struct qcom_icc_node *node;
+ int bucket, i;
+
+ for (bucket = 0; bucket < QCOM_ICC_NUM_BUCKETS; bucket++) {
+ bcm->vote_x[bucket] = 0;
+ bcm->vote_y[bucket] = 0;
+
+ for (i = 0; i < bcm->num_nodes; i++) {
+ node = bcm->nodes[i];
+
+ /* If any vote in this bucket exists, keep the BCM enabled */
+ if (node->sum_avg[bucket] || node->max_peak[bucket]) {
+ bcm->vote_x[bucket] = 0;
+ bcm->vote_y[bucket] = bcm->enable_mask;
+ break;
+ }
+ }
+ }
+
+ if (bcm->keepalive) {
+ bcm->vote_x[QCOM_ICC_BUCKET_AMC] = 1;
+ bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = 1;
+ bcm->vote_y[QCOM_ICC_BUCKET_AMC] = 1;
+ bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = 1;
+ }
+}
+
static void bcm_aggregate(struct qcom_icc_bcm *bcm)
{
struct qcom_icc_node *node;
@@ -83,11 +113,6 @@ static void bcm_aggregate(struct qcom_icc_bcm *bcm)
temp = agg_peak[bucket] * bcm->vote_scale;
bcm->vote_y[bucket] = bcm_div(temp, bcm->aux_data.unit);
-
- if (bcm->enable_mask && (bcm->vote_x[bucket] || bcm->vote_y[bucket])) {
- bcm->vote_x[bucket] = 0;
- bcm->vote_y[bucket] = bcm->enable_mask;
- }
}
if (bcm->keepalive && bcm->vote_x[QCOM_ICC_BUCKET_AMC] == 0 &&
@@ -260,8 +285,12 @@ int qcom_icc_bcm_voter_commit(struct bcm_voter *voter)
return 0;
mutex_lock(&voter->lock);
- list_for_each_entry(bcm, &voter->commit_list, list)
- bcm_aggregate(bcm);
+ list_for_each_entry(bcm, &voter->commit_list, list) {
+ if (bcm->enable_mask)
+ bcm_aggregate_mask(bcm);
+ else
+ bcm_aggregate(bcm);
+ }
/*
* Pre sort the BCMs based on VCD for ease of generating a command list
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 485/600] interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (483 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 484/600] interconnect: qcom: bcm-voter: Improve enable_mask handling Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 486/600] serial: tegra: handle clk prepare error in tegra_uart_hw_init() Greg Kroah-Hartman
` (125 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Bjorn Andersson, Konrad Dybcio,
Georgi Djakov, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
[ Upstream commit 1a70ca71547be051769f0628aa09717694f508f0 ]
BCMs with an enable_mask expect to only have that specific value written
to them. The current implementation only works by miracle for BCMs with
enable mask == BIT(0), as the minimal vote we've been using so far just
so happens to be equal to that.
Use the correct value with keepalive voting.
Fixes: d8630f050d3f ("interconnect: qcom: Add support for mask-based BCMs")
Reported-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Link: https://lore.kernel.org/r/20230811-topic-icc_fix_1he-v2-2-0620af8ac133@linaro.org
Signed-off-by: Georgi Djakov <djakov@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/interconnect/qcom/bcm-voter.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/interconnect/qcom/bcm-voter.c b/drivers/interconnect/qcom/bcm-voter.c
index d857eb8838b95..a2d437a05a11f 100644
--- a/drivers/interconnect/qcom/bcm-voter.c
+++ b/drivers/interconnect/qcom/bcm-voter.c
@@ -81,10 +81,10 @@ static void bcm_aggregate_mask(struct qcom_icc_bcm *bcm)
}
if (bcm->keepalive) {
- bcm->vote_x[QCOM_ICC_BUCKET_AMC] = 1;
- bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = 1;
- bcm->vote_y[QCOM_ICC_BUCKET_AMC] = 1;
- bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = 1;
+ bcm->vote_x[QCOM_ICC_BUCKET_AMC] = bcm->enable_mask;
+ bcm->vote_x[QCOM_ICC_BUCKET_WAKE] = bcm->enable_mask;
+ bcm->vote_y[QCOM_ICC_BUCKET_AMC] = bcm->enable_mask;
+ bcm->vote_y[QCOM_ICC_BUCKET_WAKE] = bcm->enable_mask;
}
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 486/600] serial: tegra: handle clk prepare error in tegra_uart_hw_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (484 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 485/600] interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 487/600] amba: bus: fix refcount leak Greg Kroah-Hartman
` (124 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yi Yang, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Yang <yiyang13@huawei.com>
[ Upstream commit 5abd01145d0cc6cd1b7c2fe6ee0b9ea0fa13671e ]
In tegra_uart_hw_init(), the return value of clk_prepare_enable() should
be checked since it might fail.
Fixes: e9ea096dd225 ("serial: tegra: add serial driver")
Signed-off-by: Yi Yang <yiyang13@huawei.com>
Link: https://lore.kernel.org/r/20230817105406.228674-1-yiyang13@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/serial-tegra.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/serial-tegra.c b/drivers/tty/serial/serial-tegra.c
index c08360212aa20..7aa2b5b67001d 100644
--- a/drivers/tty/serial/serial-tegra.c
+++ b/drivers/tty/serial/serial-tegra.c
@@ -999,7 +999,11 @@ static int tegra_uart_hw_init(struct tegra_uart_port *tup)
tup->ier_shadow = 0;
tup->current_baud = 0;
- clk_prepare_enable(tup->uart_clk);
+ ret = clk_prepare_enable(tup->uart_clk);
+ if (ret) {
+ dev_err(tup->uport.dev, "could not enable clk\n");
+ return ret;
+ }
/* Reset the UART controller to clear all previous status.*/
reset_control_assert(tup->rst);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 487/600] amba: bus: fix refcount leak
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (485 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 486/600] serial: tegra: handle clk prepare error in tegra_uart_hw_init() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 488/600] Revert "IB/isert: Fix incorrect release of isert connection" Greg Kroah-Hartman
` (123 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Peng Fan, Andy Shevchenko,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peng Fan <peng.fan@nxp.com>
[ Upstream commit e312cbdc11305568554a9e18a2ea5c2492c183f3 ]
commit 5de1540b7bc4 ("drivers/amba: create devices from device tree")
increases the refcount of of_node, but not releases it in
amba_device_release, so there is refcount leak. By using of_node_put
to avoid refcount leak.
Fixes: 5de1540b7bc4 ("drivers/amba: create devices from device tree")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230821023928.3324283-1-peng.fan@oss.nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/amba/bus.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 110a535648d2e..0aa2d3111ae6e 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -534,6 +534,7 @@ static void amba_device_release(struct device *dev)
{
struct amba_device *d = to_amba_device(dev);
+ of_node_put(d->dev.of_node);
if (d->res.parent)
release_resource(&d->res);
mutex_destroy(&d->periphid_lock);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 488/600] Revert "IB/isert: Fix incorrect release of isert connection"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (486 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 487/600] amba: bus: fix refcount leak Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 489/600] RDMA/siw: Balance the reference of cep->kref in the error path Greg Kroah-Hartman
` (122 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dennis Dalessandro, Leon Romanovsky,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Leon Romanovsky <leonro@nvidia.com>
[ Upstream commit dfe261107c080709459c32695847eec96238852b ]
Commit: 699826f4e30a ("IB/isert: Fix incorrect release of isert connection") is
causing problems on OPA when DEVICE_REMOVAL is happening.
------------[ cut here ]------------
WARNING: CPU: 52 PID: 2117247 at drivers/infiniband/core/cq.c:359
ib_cq_pool_cleanup+0xac/0xb0 [ib_core]
Modules linked in: nfsd nfs_acl target_core_user uio tcm_fc libfc
scsi_transport_fc tcm_loop target_core_pscsi target_core_iblock target_core_file
rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs
rfkill rpcrdma rdma_ucm ib_srpt sunrpc ib_isert iscsi_target_mod target_core_mod
opa_vnic ib_iser libiscsi ib_umad scsi_transport_iscsi rdma_cm ib_ipoib iw_cm
ib_cm hfi1(-) rdmavt ib_uverbs intel_rapl_msr intel_rapl_common sb_edac ib_core
x86_pkg_temp_thermal intel_powerclamp coretemp i2c_i801 mxm_wmi rapl iTCO_wdt
ipmi_si iTCO_vendor_support mei_me ipmi_devintf mei intel_cstate ioatdma
intel_uncore i2c_smbus joydev pcspkr lpc_ich ipmi_msghandler acpi_power_meter
acpi_pad xfs libcrc32c sr_mod sd_mod cdrom t10_pi sg crct10dif_pclmul
crc32_pclmul crc32c_intel drm_kms_helper drm_shmem_helper ahci libahci
ghash_clmulni_intel igb drm libata dca i2c_algo_bit wmi fuse
CPU: 52 PID: 2117247 Comm: modprobe Not tainted 6.5.0-rc1+ #1
Hardware name: Intel Corporation S2600CWR/S2600CW, BIOS
SE5C610.86B.01.01.0014.121820151719 12/18/2015
RIP: 0010:ib_cq_pool_cleanup+0xac/0xb0 [ib_core]
Code: ff 48 8b 43 40 48 8d 7b 40 48 83 e8 40 4c 39 e7 75 b3 49 83
c4 10 4d 39 fc 75 94 5b 5d 41 5c 41 5d 41 5e 41 5f c3 cc cc cc cc <0f> 0b eb a1
90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f
RSP: 0018:ffffc10bea13fc80 EFLAGS: 00010206
RAX: 000000000000010c RBX: ffff9bf5c7e66c00 RCX: 000000008020001d
RDX: 000000008020001e RSI: fffff175221f9900 RDI: ffff9bf5c7e67640
RBP: ffff9bf5c7e67600 R08: ffff9bf5c7e64400 R09: 000000008020001d
R10: 0000000040000000 R11: 0000000000000000 R12: ffff9bee4b1e8a18
R13: dead000000000122 R14: dead000000000100 R15: ffff9bee4b1e8a38
FS: 00007ff1e6d38740(0000) GS:ffff9bfd9fb00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005652044ecc68 CR3: 0000000889b5c005 CR4: 00000000001706e0
Call Trace:
<TASK>
? __warn+0x80/0x130
? ib_cq_pool_cleanup+0xac/0xb0 [ib_core]
? report_bug+0x195/0x1a0
? handle_bug+0x3c/0x70
? exc_invalid_op+0x14/0x70
? asm_exc_invalid_op+0x16/0x20
? ib_cq_pool_cleanup+0xac/0xb0 [ib_core]
disable_device+0x9d/0x160 [ib_core]
__ib_unregister_device+0x42/0xb0 [ib_core]
ib_unregister_device+0x22/0x30 [ib_core]
rvt_unregister_device+0x20/0x90 [rdmavt]
hfi1_unregister_ib_device+0x16/0xf0 [hfi1]
remove_one+0x55/0x1a0 [hfi1]
pci_device_remove+0x36/0xa0
device_release_driver_internal+0x193/0x200
driver_detach+0x44/0x90
bus_remove_driver+0x69/0xf0
pci_unregister_driver+0x2a/0xb0
hfi1_mod_cleanup+0xc/0x3c [hfi1]
__do_sys_delete_module.constprop.0+0x17a/0x2f0
? exit_to_user_mode_prepare+0xc4/0xd0
? syscall_trace_enter.constprop.0+0x126/0x1a0
do_syscall_64+0x5c/0x90
? syscall_exit_to_user_mode+0x12/0x30
? do_syscall_64+0x69/0x90
? syscall_exit_work+0x103/0x130
? syscall_exit_to_user_mode+0x12/0x30
? do_syscall_64+0x69/0x90
? exc_page_fault+0x65/0x150
entry_SYSCALL_64_after_hwframe+0x6e/0xd8
RIP: 0033:0x7ff1e643f5ab
Code: 73 01 c3 48 8b 0d 75 a8 1b 00 f7 d8 64 89 01 48 83 c8 ff c3
66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01 f0
ff ff 73 01 c3 48 8b 0d 45 a8 1b 00 f7 d8 64 89 01 48
RSP: 002b:00007ffec9103cc8 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
RAX: ffffffffffffffda RBX: 00005615267fdc50 RCX: 00007ff1e643f5ab
RDX: 0000000000000000 RSI: 0000000000000800 RDI: 00005615267fdcb8
RBP: 00005615267fdc50 R08: 0000000000000000 R09: 0000000000000000
R10: 00007ff1e659eac0 R11: 0000000000000206 R12: 00005615267fdcb8
R13: 0000000000000000 R14: 00005615267fdcb8 R15: 00007ffec9105ff8
</TASK>
---[ end trace 0000000000000000 ]---
And...
restrack: ------------[ cut here ]------------
infiniband hfi1_0: BUG: RESTRACK detected leak of resources
restrack: Kernel PD object allocated by ib_isert is not freed
restrack: Kernel CQ object allocated by ib_core is not freed
restrack: Kernel QP object allocated by rdma_cm is not freed
restrack: ------------[ cut here ]------------
Fixes: 699826f4e30a ("IB/isert: Fix incorrect release of isert connection")
Reported-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Closes: https://lore.kernel.org/all/921cd1d9-2879-f455-1f50-0053fe6a6655@cornelisnetworks.com
Link: https://lore.kernel.org/r/a27982d3235005c58f6d321f3fad5eb6e1beaf9e.1692604607.git.leonro@nvidia.com
Tested-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/ulp/isert/ib_isert.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
index a7fef3ea77fe3..a02a3caeaa4e7 100644
--- a/drivers/infiniband/ulp/isert/ib_isert.c
+++ b/drivers/infiniband/ulp/isert/ib_isert.c
@@ -2571,6 +2571,8 @@ static void isert_wait_conn(struct iscsit_conn *conn)
isert_put_unsol_pending_cmds(conn);
isert_wait4cmds(conn);
isert_wait4logout(isert_conn);
+
+ queue_work(isert_release_wq, &isert_conn->release_work);
}
static void isert_free_conn(struct iscsit_conn *conn)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 489/600] RDMA/siw: Balance the reference of cep->kref in the error path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (487 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 488/600] Revert "IB/isert: Fix incorrect release of isert connection" Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 490/600] RDMA/siw: Correct wrong debug message Greg Kroah-Hartman
` (121 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Guoqing Jiang, Bernard Metzler,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guoqing Jiang <guoqing.jiang@linux.dev>
[ Upstream commit b056327bee09e6b86683d3f709a438ccd6031d72 ]
The siw_connect can go to err in below after cep is allocated successfully:
1. If siw_cm_alloc_work returns failure. In this case socket is not
assoicated with cep so siw_cep_put can't be called by siw_socket_disassoc.
We need to call siw_cep_put twice since cep->kref is increased once after
it was initialized.
2. If siw_cm_queue_work can't find a work, which means siw_cep_get is not
called in siw_cm_queue_work, so cep->kref is increased twice by siw_cep_get
and when associate socket with cep after it was initialized. So we need to
call siw_cep_put three times (one in siw_socket_disassoc).
3. siw_send_mpareqrep returns error, this scenario is similar as 2.
So we need to remove one siw_cep_put in the error path.
Fixes: 6c52fdc244b5 ("rdma/siw: connection management")
Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
Link: https://lore.kernel.org/r/20230821133255.31111-2-guoqing.jiang@linux.dev
Acked-by: Bernard Metzler <bmt@zurich.ibm.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/sw/siw/siw_cm.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/infiniband/sw/siw/siw_cm.c b/drivers/infiniband/sw/siw/siw_cm.c
index f88d2971c2c63..552d8271e423b 100644
--- a/drivers/infiniband/sw/siw/siw_cm.c
+++ b/drivers/infiniband/sw/siw/siw_cm.c
@@ -1496,7 +1496,6 @@ int siw_connect(struct iw_cm_id *id, struct iw_cm_conn_param *params)
cep->cm_id = NULL;
id->rem_ref(id);
- siw_cep_put(cep);
qp->cep = NULL;
siw_cep_put(cep);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 490/600] RDMA/siw: Correct wrong debug message
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (488 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 489/600] RDMA/siw: Balance the reference of cep->kref in the error path Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 491/600] RDMA/efa: Fix wrong resources deallocation order Greg Kroah-Hartman
` (120 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Guoqing Jiang, Bernard Metzler,
Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Guoqing Jiang <guoqing.jiang@linux.dev>
[ Upstream commit bee024d20451e4ce04ea30099cad09f7f75d288b ]
We need to print num_sle first then pbl->max_buf per the condition.
Also replace mem->pbl with pbl while at it.
Fixes: 303ae1cdfdf7 ("rdma/siw: application interface")
Signed-off-by: Guoqing Jiang <guoqing.jiang@linux.dev>
Link: https://lore.kernel.org/r/20230821133255.31111-3-guoqing.jiang@linux.dev
Acked-by: Bernard Metzler <bmt@zurich.ibm.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index 2e4cdcd26fe01..193f7d58d3845 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -1494,7 +1494,7 @@ int siw_map_mr_sg(struct ib_mr *base_mr, struct scatterlist *sl, int num_sle,
if (pbl->max_buf < num_sle) {
siw_dbg_mem(mem, "too many SGE's: %d > %d\n",
- mem->pbl->max_buf, num_sle);
+ num_sle, pbl->max_buf);
return -ENOMEM;
}
for_each_sg(sl, slp, num_sle, i) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 491/600] RDMA/efa: Fix wrong resources deallocation order
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (489 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 490/600] RDMA/siw: Correct wrong debug message Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 492/600] HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() Greg Kroah-Hartman
` (119 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Michael Margolin, Yossi Leybovich,
Yonatan Nachum, Leon Romanovsky, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yonatan Nachum <ynachum@amazon.com>
[ Upstream commit dc202c57e9a1423aed528e4b8dc949509cd32191 ]
When trying to destroy QP or CQ, we first decrease the refcount and
potentially free memory regions allocated for the object and then
request the device to destroy the object. If the device fails, the
object isn't fully destroyed so the user/IB core can try to destroy the
object again which will lead to underflow when trying to decrease an
already zeroed refcount.
Deallocate resources in reverse order of allocating them to safely free
them.
Fixes: ff6629f88c52 ("RDMA/efa: Do not delay freeing of DMA pages")
Reviewed-by: Michael Margolin <mrgolin@amazon.com>
Reviewed-by: Yossi Leybovich <sleybo@amazon.com>
Signed-off-by: Yonatan Nachum <ynachum@amazon.com>
Link: https://lore.kernel.org/r/20230822082725.31719-1-ynachum@amazon.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/infiniband/hw/efa/efa_verbs.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/infiniband/hw/efa/efa_verbs.c b/drivers/infiniband/hw/efa/efa_verbs.c
index f9526a4c75b26..90d5f1a96f3e5 100644
--- a/drivers/infiniband/hw/efa/efa_verbs.c
+++ b/drivers/infiniband/hw/efa/efa_verbs.c
@@ -443,12 +443,12 @@ int efa_destroy_qp(struct ib_qp *ibqp, struct ib_udata *udata)
ibdev_dbg(&dev->ibdev, "Destroy qp[%u]\n", ibqp->qp_num);
- efa_qp_user_mmap_entries_remove(qp);
-
err = efa_destroy_qp_handle(dev, qp->qp_handle);
if (err)
return err;
+ efa_qp_user_mmap_entries_remove(qp);
+
if (qp->rq_cpu_addr) {
ibdev_dbg(&dev->ibdev,
"qp->cpu_addr[0x%p] freed: size[%lu], dma[%pad]\n",
@@ -1007,8 +1007,8 @@ int efa_destroy_cq(struct ib_cq *ibcq, struct ib_udata *udata)
"Destroy cq[%d] virt[0x%p] freed: size[%lu], dma[%pad]\n",
cq->cq_idx, cq->cpu_addr, cq->size, &cq->dma_addr);
- efa_cq_user_mmap_entries_remove(cq);
efa_destroy_cq_idx(dev, cq->cq_idx);
+ efa_cq_user_mmap_entries_remove(cq);
if (cq->eq) {
xa_erase(&dev->cqs_xa, cq->cq_idx);
synchronize_irq(cq->eq->irq.irqn);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 492/600] HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (490 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 491/600] RDMA/efa: Fix wrong resources deallocation order Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 493/600] HID: uclogic: Correct devm device reference for hidinput input_dev name Greg Kroah-Hartman
` (118 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nikita Zhandarovich,
Benjamin Tissoires, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
[ Upstream commit 6f20d3261265885f6a6be4cda49d7019728760e0 ]
Presently, if a call to logi_dj_recv_send_report() fails, we do
not learn about the error until after sending short
HID_OUTPUT_REPORT with hid_hw_raw_request().
To handle this somewhat unlikely issue, return on error in
logi_dj_recv_send_report() (minding ugly sleep workaround) and
take into account the result of hid_hw_raw_request().
Found by Linux Verification Center (linuxtesting.org) with static
analysis tool SVACE.
Fixes: 6a9ddc897883 ("HID: logitech-dj: enable notifications on connect/disconnect")
Signed-off-by: Nikita Zhandarovich <n.zhandarovich@fintech.ru>
Link: https://lore.kernel.org/r/20230613101635.77820-1-n.zhandarovich@fintech.ru
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hid/hid-logitech-dj.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
index c358778e070bc..08768e5accedc 100644
--- a/drivers/hid/hid-logitech-dj.c
+++ b/drivers/hid/hid-logitech-dj.c
@@ -1285,6 +1285,9 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
* 50 msec should gives enough time to the receiver to be ready.
*/
msleep(50);
+
+ if (retval)
+ return retval;
}
/*
@@ -1306,7 +1309,7 @@ static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
buf[5] = 0x09;
buf[6] = 0x00;
- hid_hw_raw_request(hdev, REPORT_ID_HIDPP_SHORT, buf,
+ retval = hid_hw_raw_request(hdev, REPORT_ID_HIDPP_SHORT, buf,
HIDPP_REPORT_SHORT_LENGTH, HID_OUTPUT_REPORT,
HID_REQ_SET_REPORT);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 493/600] HID: uclogic: Correct devm device reference for hidinput input_dev name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (491 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 492/600] HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 494/600] HID: multitouch: " Greg Kroah-Hartman
` (117 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, syzbot+3a0ebe8a52b89c63739d,
Maxime Ripard, Dmitry Torokhov, Rahul Rameshbabu,
Benjamin Tissoires, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rahul Rameshbabu <sergeantsagara@protonmail.com>
[ Upstream commit dd613a4e45f8d35f49a63a2064e5308fa5619e29 ]
Reference the HID device rather than the input device for the devm
allocation of the input_dev name. Referencing the input_dev would lead to a
use-after-free when the input_dev was unregistered and subsequently fires a
uevent that depends on the name. At the point of firing the uevent, the
name would be freed by devres management.
Use devm_kasprintf to simplify the logic for allocating memory and
formatting the input_dev name string.
Reported-by: syzbot+3a0ebe8a52b89c63739d@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-input/ZOZIZCND+L0P1wJc@penguin/T/
Reported-by: Maxime Ripard <mripard@kernel.org>
Closes: https://lore.kernel.org/linux-input/ZOZIZCND+L0P1wJc@penguin/T/#m443f3dce92520f74b6cf6ffa8653f9c92643d4ae
Fixes: cce2dbdf258e ("HID: uclogic: name the input nodes based on their tool")
Suggested-by: Maxime Ripard <mripard@kernel.org>
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Rahul Rameshbabu <sergeantsagara@protonmail.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20230824061308.222021-2-sergeantsagara@protonmail.com
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hid/hid-uclogic-core.c | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/hid/hid-uclogic-core.c b/drivers/hid/hid-uclogic-core.c
index bfbb51f8b5beb..39114d5c55a0e 100644
--- a/drivers/hid/hid-uclogic-core.c
+++ b/drivers/hid/hid-uclogic-core.c
@@ -85,10 +85,8 @@ static int uclogic_input_configured(struct hid_device *hdev,
{
struct uclogic_drvdata *drvdata = hid_get_drvdata(hdev);
struct uclogic_params *params = &drvdata->params;
- char *name;
const char *suffix = NULL;
struct hid_field *field;
- size_t len;
size_t i;
const struct uclogic_params_frame *frame;
@@ -146,14 +144,9 @@ static int uclogic_input_configured(struct hid_device *hdev,
}
}
- if (suffix) {
- len = strlen(hdev->name) + 2 + strlen(suffix);
- name = devm_kzalloc(&hi->input->dev, len, GFP_KERNEL);
- if (name) {
- snprintf(name, len, "%s %s", hdev->name, suffix);
- hi->input->name = name;
- }
- }
+ if (suffix)
+ hi->input->name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
+ "%s %s", hdev->name, suffix);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 494/600] HID: multitouch: Correct devm device reference for hidinput input_dev name
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (492 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 493/600] HID: uclogic: Correct devm device reference for hidinput input_dev name Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 495/600] platform/x86/amd/pmf: Fix a missing cleanup path Greg Kroah-Hartman
` (116 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maxime Ripard, Dmitry Torokhov,
Rahul Rameshbabu, Benjamin Tissoires, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rahul Rameshbabu <sergeantsagara@protonmail.com>
[ Upstream commit 4794394635293a3e74591351fff469cea7ad15a2 ]
Reference the HID device rather than the input device for the devm
allocation of the input_dev name. Referencing the input_dev would lead to a
use-after-free when the input_dev was unregistered and subsequently fires a
uevent that depends on the name. At the point of firing the uevent, the
name would be freed by devres management.
Use devm_kasprintf to simplify the logic for allocating memory and
formatting the input_dev name string.
Reported-by: Maxime Ripard <mripard@kernel.org>
Closes: https://lore.kernel.org/linux-input/ZOZIZCND+L0P1wJc@penguin/T/#m443f3dce92520f74b6cf6ffa8653f9c92643d4ae
Fixes: c08d46aa805b ("HID: multitouch: devm conversion")
Suggested-by: Maxime Ripard <mripard@kernel.org>
Suggested-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Signed-off-by: Rahul Rameshbabu <sergeantsagara@protonmail.com>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20230824061308.222021-3-sergeantsagara@protonmail.com
Signed-off-by: Benjamin Tissoires <bentiss@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hid/hid-multitouch.c | 13 +++----------
1 file changed, 3 insertions(+), 10 deletions(-)
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index e31be0cb8b850..521b2ffb42449 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -1594,7 +1594,6 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app)
static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
{
struct mt_device *td = hid_get_drvdata(hdev);
- char *name;
const char *suffix = NULL;
struct mt_report_data *rdata;
struct mt_application *mt_application = NULL;
@@ -1645,15 +1644,9 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
break;
}
- if (suffix) {
- name = devm_kzalloc(&hi->input->dev,
- strlen(hdev->name) + strlen(suffix) + 2,
- GFP_KERNEL);
- if (name) {
- sprintf(name, "%s %s", hdev->name, suffix);
- hi->input->name = name;
- }
- }
+ if (suffix)
+ hi->input->name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
+ "%s %s", hdev->name, suffix);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 495/600] platform/x86/amd/pmf: Fix a missing cleanup path
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (493 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 494/600] HID: multitouch: " Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 496/600] tick/rcu: Fix false positive "softirq work is pending" messages Greg Kroah-Hartman
` (115 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mario Limonciello, Hans de Goede,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mario Limonciello <mario.limonciello@amd.com>
[ Upstream commit 4dbd6e61adc7e52dd1c9165f0ccaa90806611e40 ]
On systems that support slider notifications but don't otherwise support
granular slider the SPS cleanup path doesn't run.
This means that loading/unloading/loading leads to failures because
the sysfs files don't get setup properly when reloaded.
Add the missing cleanup path.
Fixes: 33c9ab5b493a ("platform/x86/amd/pmf: Notify OS power slider update")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20230823185421.23959-1-mario.limonciello@amd.com
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/platform/x86/amd/pmf/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/platform/x86/amd/pmf/core.c b/drivers/platform/x86/amd/pmf/core.c
index 8a38cd94a605d..d10c097380c56 100644
--- a/drivers/platform/x86/amd/pmf/core.c
+++ b/drivers/platform/x86/amd/pmf/core.c
@@ -322,7 +322,8 @@ static void amd_pmf_init_features(struct amd_pmf_dev *dev)
static void amd_pmf_deinit_features(struct amd_pmf_dev *dev)
{
- if (is_apmf_func_supported(dev, APMF_FUNC_STATIC_SLIDER_GRANULAR)) {
+ if (is_apmf_func_supported(dev, APMF_FUNC_STATIC_SLIDER_GRANULAR) ||
+ is_apmf_func_supported(dev, APMF_FUNC_OS_POWER_SLIDER_UPDATE)) {
power_supply_unreg_notifier(&dev->pwr_src_notifier);
amd_pmf_deinit_sps(dev);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 496/600] tick/rcu: Fix false positive "softirq work is pending" messages
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (494 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 495/600] platform/x86/amd/pmf: Fix a missing cleanup path Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 497/600] x86/speculation: Mark all Skylake CPUs as vulnerable to GDS Greg Kroah-Hartman
` (114 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Paul Gortmaker, Thomas Gleixner,
Ahmad Fatoum, Wen Yang, Frederic Weisbecker, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul Gortmaker <paul.gortmaker@windriver.com>
[ Upstream commit 96c1fa04f089a7e977a44e4e8fdc92e81be20bef ]
In commit 0345691b24c0 ("tick/rcu: Stop allowing RCU_SOFTIRQ in idle") the
new function report_idle_softirq() was created by breaking code out of the
existing can_stop_idle_tick() for kernels v5.18 and newer.
In doing so, the code essentially went from a one conditional:
if (a && b && c)
warn();
to a three conditional:
if (!a)
return;
if (!b)
return;
if (!c)
return;
warn();
But that conversion got the condition for the RT specific
local_bh_blocked() wrong. The original condition was:
!local_bh_blocked()
but the conversion failed to negate it so it ended up as:
if (!local_bh_blocked())
return false;
This issue lay dormant until another fixup for the same commit was added
in commit a7e282c77785 ("tick/rcu: Fix bogus ratelimit condition").
This commit realized the ratelimit was essentially set to zero instead
of ten, and hence *no* softirq pending messages would ever be issued.
Once this commit was backported via linux-stable, both the v6.1 and v6.4
preempt-rt kernels started printing out 10 instances of this at boot:
NOHZ tick-stop error: local softirq work is pending, handler #80!!!
Remove the negation and return when local_bh_blocked() evaluates to true to
bring the correct behaviour back.
Fixes: 0345691b24c0 ("tick/rcu: Stop allowing RCU_SOFTIRQ in idle")
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
Reviewed-by: Wen Yang <wenyang.linux@foxmail.com>
Acked-by: Frederic Weisbecker <frederic@kernel.org>
Link: https://lore.kernel.org/r/20230818200757.1808398-1-paul.gortmaker@windriver.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/time/tick-sched.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 1ad89eec2a55f..798e1841d2863 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -1050,7 +1050,7 @@ static bool report_idle_softirq(void)
return false;
/* On RT, softirqs handling may be waiting on some lock */
- if (!local_bh_blocked())
+ if (local_bh_blocked())
return false;
pr_warn("NOHZ tick-stop error: local softirq work is pending, handler #%02x!!!\n",
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 497/600] x86/speculation: Mark all Skylake CPUs as vulnerable to GDS
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (495 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 496/600] tick/rcu: Fix false positive "softirq work is pending" messages Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 498/600] tracing: Remove extra space at the end of hwlat_detector/mode Greg Kroah-Hartman
` (113 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Michael Zhivich, Dave Hansen,
Ingo Molnar, Daniel Sneddon, Linus Torvalds, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Hansen <dave.hansen@linux.intel.com>
[ Upstream commit c9f4c45c8ec3f07f4f083f9750032a1ec3eab6b2 ]
The Gather Data Sampling (GDS) vulnerability is common to all Skylake
processors. However, the "client" Skylakes* are now in this list:
https://www.intel.com/content/www/us/en/support/articles/000022396/processors.html
which means they are no longer included for new vulnerabilities here:
https://www.intel.com/content/www/us/en/developer/topic-technology/software-security-guidance/processors-affected-consolidated-product-cpu-model.html
or in other GDS documentation. Thus, they were not included in the
original GDS mitigation patches.
Mark SKYLAKE and SKYLAKE_L as vulnerable to GDS to match all the
other Skylake CPUs (which include Kaby Lake). Also group the CPUs
so that the ones that share the exact same vulnerabilities are next
to each other.
Last, move SRBDS to the end of each line. This makes it clear at a
glance that SKYLAKE_X is unique. Of the five Skylakes, it is the
only "server" CPU and has a different implementation from the
clients of the "special register" hardware, making it immune to SRBDS.
This makes the diff much harder to read, but the resulting table is
worth it.
I very much appreciate the report from Michael Zhivich about this
issue. Despite what level of support a hardware vendor is providing,
the kernel very much needs an accurate and up-to-date list of
vulnerable CPUs. More reports like this are very welcome.
* Client Skylakes are CPUID 406E3/506E3 which is family 6, models
0x4E and 0x5E, aka INTEL_FAM6_SKYLAKE and INTEL_FAM6_SKYLAKE_L.
Reported-by: Michael Zhivich <mzhivich@akamai.com>
Fixes: 8974eb588283 ("x86/speculation: Add Gather Data Sampling mitigation")
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Daniel Sneddon <daniel.sneddon@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/x86/kernel/cpu/common.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index d38ae25e7c01f..b723368dbc644 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -1259,11 +1259,11 @@ static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = {
VULNBL_INTEL_STEPPINGS(BROADWELL_G, X86_STEPPING_ANY, SRBDS),
VULNBL_INTEL_STEPPINGS(BROADWELL_X, X86_STEPPING_ANY, MMIO),
VULNBL_INTEL_STEPPINGS(BROADWELL, X86_STEPPING_ANY, SRBDS),
- VULNBL_INTEL_STEPPINGS(SKYLAKE_L, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED),
VULNBL_INTEL_STEPPINGS(SKYLAKE_X, X86_STEPPING_ANY, MMIO | RETBLEED | GDS),
- VULNBL_INTEL_STEPPINGS(SKYLAKE, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED),
- VULNBL_INTEL_STEPPINGS(KABYLAKE_L, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED | GDS),
- VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPING_ANY, SRBDS | MMIO | RETBLEED | GDS),
+ VULNBL_INTEL_STEPPINGS(SKYLAKE_L, X86_STEPPING_ANY, MMIO | RETBLEED | GDS | SRBDS),
+ VULNBL_INTEL_STEPPINGS(SKYLAKE, X86_STEPPING_ANY, MMIO | RETBLEED | GDS | SRBDS),
+ VULNBL_INTEL_STEPPINGS(KABYLAKE_L, X86_STEPPING_ANY, MMIO | RETBLEED | GDS | SRBDS),
+ VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPING_ANY, MMIO | RETBLEED | GDS | SRBDS),
VULNBL_INTEL_STEPPINGS(CANNONLAKE_L, X86_STEPPING_ANY, RETBLEED),
VULNBL_INTEL_STEPPINGS(ICELAKE_L, X86_STEPPING_ANY, MMIO | MMIO_SBDS | RETBLEED | GDS),
VULNBL_INTEL_STEPPINGS(ICELAKE_D, X86_STEPPING_ANY, MMIO | GDS),
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 498/600] tracing: Remove extra space at the end of hwlat_detector/mode
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (496 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 497/600] x86/speculation: Mark all Skylake CPUs as vulnerable to GDS Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 499/600] tracing: Fix race issue between cpu buffer write and swap Greg Kroah-Hartman
` (112 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Masami Hiramatsu, Mikhail Kobuk,
Alexey Khoroshilov, Daniel Bristot de Oliveira,
Steven Rostedt (Google), Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikhail Kobuk <m.kobuk@ispras.ru>
[ Upstream commit 2cf0dee989a8b2501929eaab29473b6b1fa11057 ]
Space is printed after each mode value including the last one:
$ echo \"$(sudo cat /sys/kernel/tracing/hwlat_detector/mode)\"
"none [round-robin] per-cpu "
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Link: https://lore.kernel.org/linux-trace-kernel/20230825103432.7750-1-m.kobuk@ispras.ru
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Fixes: 8fa826b7344d ("trace/hwlat: Implement the mode config option")
Signed-off-by: Mikhail Kobuk <m.kobuk@ispras.ru>
Reviewed-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Acked-by: Daniel Bristot de Oliveira <bristot@kernel.org>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/trace/trace_hwlat.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/trace_hwlat.c b/kernel/trace/trace_hwlat.c
index 2f37a6e68aa9f..b791524a6536a 100644
--- a/kernel/trace/trace_hwlat.c
+++ b/kernel/trace/trace_hwlat.c
@@ -635,7 +635,7 @@ static int s_mode_show(struct seq_file *s, void *v)
else
seq_printf(s, "%s", thread_mode_str[mode]);
- if (mode != MODE_MAX)
+ if (mode < MODE_MAX - 1) /* if mode is any but last */
seq_puts(s, " ");
return 0;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 499/600] tracing: Fix race issue between cpu buffer write and swap
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (497 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 498/600] tracing: Remove extra space at the end of hwlat_detector/mode Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 500/600] mtd: rawnand: brcmnand: Fix mtd oobsize Greg Kroah-Hartman
` (111 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, mhiramat, Zheng Yejian,
Steven Rostedt (Google), Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zheng Yejian <zhengyejian1@huawei.com>
[ Upstream commit 3163f635b20e9e1fb4659e74f47918c9dddfe64e ]
Warning happened in rb_end_commit() at code:
if (RB_WARN_ON(cpu_buffer, !local_read(&cpu_buffer->committing)))
WARNING: CPU: 0 PID: 139 at kernel/trace/ring_buffer.c:3142
rb_commit+0x402/0x4a0
Call Trace:
ring_buffer_unlock_commit+0x42/0x250
trace_buffer_unlock_commit_regs+0x3b/0x250
trace_event_buffer_commit+0xe5/0x440
trace_event_buffer_reserve+0x11c/0x150
trace_event_raw_event_sched_switch+0x23c/0x2c0
__traceiter_sched_switch+0x59/0x80
__schedule+0x72b/0x1580
schedule+0x92/0x120
worker_thread+0xa0/0x6f0
It is because the race between writing event into cpu buffer and swapping
cpu buffer through file per_cpu/cpu0/snapshot:
Write on CPU 0 Swap buffer by per_cpu/cpu0/snapshot on CPU 1
-------- --------
tracing_snapshot_write()
[...]
ring_buffer_lock_reserve()
cpu_buffer = buffer->buffers[cpu]; // 1. Suppose find 'cpu_buffer_a';
[...]
rb_reserve_next_event()
[...]
ring_buffer_swap_cpu()
if (local_read(&cpu_buffer_a->committing))
goto out_dec;
if (local_read(&cpu_buffer_b->committing))
goto out_dec;
buffer_a->buffers[cpu] = cpu_buffer_b;
buffer_b->buffers[cpu] = cpu_buffer_a;
// 2. cpu_buffer has swapped here.
rb_start_commit(cpu_buffer);
if (unlikely(READ_ONCE(cpu_buffer->buffer)
!= buffer)) { // 3. This check passed due to 'cpu_buffer->buffer'
[...] // has not changed here.
return NULL;
}
cpu_buffer_b->buffer = buffer_a;
cpu_buffer_a->buffer = buffer_b;
[...]
// 4. Reserve event from 'cpu_buffer_a'.
ring_buffer_unlock_commit()
[...]
cpu_buffer = buffer->buffers[cpu]; // 5. Now find 'cpu_buffer_b' !!!
rb_commit(cpu_buffer)
rb_end_commit() // 6. WARN for the wrong 'committing' state !!!
Based on above analysis, we can easily reproduce by following testcase:
``` bash
#!/bin/bash
dmesg -n 7
sysctl -w kernel.panic_on_warn=1
TR=/sys/kernel/tracing
echo 7 > ${TR}/buffer_size_kb
echo "sched:sched_switch" > ${TR}/set_event
while [ true ]; do
echo 1 > ${TR}/per_cpu/cpu0/snapshot
done &
while [ true ]; do
echo 1 > ${TR}/per_cpu/cpu0/snapshot
done &
while [ true ]; do
echo 1 > ${TR}/per_cpu/cpu0/snapshot
done &
```
To fix it, IIUC, we can use smp_call_function_single() to do the swap on
the target cpu where the buffer is located, so that above race would be
avoided.
Link: https://lore.kernel.org/linux-trace-kernel/20230831132739.4070878-1-zhengyejian1@huawei.com
Cc: <mhiramat@kernel.org>
Fixes: f1affcaaa861 ("tracing: Add snapshot in the per_cpu trace directories")
Signed-off-by: Zheng Yejian <zhengyejian1@huawei.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/trace/trace.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index e581253ecc535..5d0465ae7be8c 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -7516,6 +7516,11 @@ static int tracing_snapshot_open(struct inode *inode, struct file *file)
return ret;
}
+static void tracing_swap_cpu_buffer(void *tr)
+{
+ update_max_tr_single((struct trace_array *)tr, current, smp_processor_id());
+}
+
static ssize_t
tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
loff_t *ppos)
@@ -7574,13 +7579,15 @@ tracing_snapshot_write(struct file *filp, const char __user *ubuf, size_t cnt,
ret = tracing_alloc_snapshot_instance(tr);
if (ret < 0)
break;
- local_irq_disable();
/* Now, we're going to swap */
- if (iter->cpu_file == RING_BUFFER_ALL_CPUS)
+ if (iter->cpu_file == RING_BUFFER_ALL_CPUS) {
+ local_irq_disable();
update_max_tr(tr, current, smp_processor_id(), NULL);
- else
- update_max_tr_single(tr, current, iter->cpu_file);
- local_irq_enable();
+ local_irq_enable();
+ } else {
+ smp_call_function_single(iter->cpu_file, tracing_swap_cpu_buffer,
+ (void *)tr, 1);
+ }
break;
default:
if (tr->allocated_snapshot) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 500/600] mtd: rawnand: brcmnand: Fix mtd oobsize
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (498 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 499/600] tracing: Fix race issue between cpu buffer write and swap Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 501/600] dmaengine: idxd: Modify the dependence of attribute pasid_enabled Greg Kroah-Hartman
` (110 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, William Zhang, Miquel Raynal,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: William Zhang <william.zhang@broadcom.com>
[ Upstream commit 60177390fa061c62d156f4a546e3efd90df3c183 ]
brcmnand controller can only access the flash spare area up to certain
bytes based on the ECC level. It can be less than the actual flash spare
area size. For example, for many NAND chip supporting ECC BCH-8, it has
226 bytes spare area. But controller can only uses 218 bytes. So brcmand
driver overrides the mtd oobsize with the controller's accessible spare
area size. When the nand base driver utilizes the nand_device object, it
resets the oobsize back to the actual flash spare aprea size from
nand_memory_organization structure and controller may not able to access
all the oob area as mtd advises.
This change fixes the issue by overriding the oobsize in the
nand_memory_organization structure to the controller's accessible spare
area size.
Fixes: a7ab085d7c16 ("mtd: rawnand: Initialize the nand_device object")
Signed-off-by: William Zhang <william.zhang@broadcom.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20230706182909.79151-6-william.zhang@broadcom.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
index 2e9c2e2d9c9f7..d8418d7fcc372 100644
--- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c
@@ -2612,6 +2612,8 @@ static int brcmnand_setup_dev(struct brcmnand_host *host)
struct nand_chip *chip = &host->chip;
const struct nand_ecc_props *requirements =
nanddev_get_ecc_requirements(&chip->base);
+ struct nand_memory_organization *memorg =
+ nanddev_get_memorg(&chip->base);
struct brcmnand_controller *ctrl = host->ctrl;
struct brcmnand_cfg *cfg = &host->hwcfg;
char msg[128];
@@ -2633,10 +2635,11 @@ static int brcmnand_setup_dev(struct brcmnand_host *host)
if (cfg->spare_area_size > ctrl->max_oob)
cfg->spare_area_size = ctrl->max_oob;
/*
- * Set oobsize to be consistent with controller's spare_area_size, as
- * the rest is inaccessible.
+ * Set mtd and memorg oobsize to be consistent with controller's
+ * spare_area_size, as the rest is inaccessible.
*/
mtd->oobsize = cfg->spare_area_size * (mtd->writesize >> FC_SHIFT);
+ memorg->oobsize = mtd->oobsize;
cfg->device_size = mtd->size;
cfg->block_size = mtd->erasesize;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 501/600] dmaengine: idxd: Modify the dependence of attribute pasid_enabled
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (499 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 500/600] mtd: rawnand: brcmnand: Fix mtd oobsize Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 502/600] phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328 Greg Kroah-Hartman
` (109 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rex Zhang, Fenghua Yu, Dave Jiang,
Vinod Koul, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rex Zhang <rex.zhang@intel.com>
[ Upstream commit 50c5e6f41d5ad7c731c31135a30d0e4f0e4fea26 ]
Kernel PASID and user PASID are separately enabled. User needs to know the
user PASID enabling status to decide how to use IDXD device in user space.
This is done via the attribute /sys/bus/dsa/devices/dsa0/pasid_enabled.
It's unnecessary for user to know the kernel PASID enabling status because
user won't use the kernel PASID. But instead of showing the user PASID
enabling status, the attribute shows the kernel PASID enabling status. Fix
the issue by showing the user PASID enabling status in the attribute.
Fixes: 42a1b73852c4 ("dmaengine: idxd: Separate user and kernel pasid enabling")
Signed-off-by: Rex Zhang <rex.zhang@intel.com>
Acked-by: Fenghua Yu <fenghua.yu@intel.com>
Acked-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20230614062706.1743078-1-rex.zhang@intel.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/dma/idxd/sysfs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c
index 18cd8151dee02..6e1e14b376e65 100644
--- a/drivers/dma/idxd/sysfs.c
+++ b/drivers/dma/idxd/sysfs.c
@@ -1426,7 +1426,7 @@ static ssize_t pasid_enabled_show(struct device *dev,
{
struct idxd_device *idxd = confdev_to_idxd(dev);
- return sysfs_emit(buf, "%u\n", device_pasid_enabled(idxd));
+ return sysfs_emit(buf, "%u\n", device_user_pasid_enabled(idxd));
}
static DEVICE_ATTR_RO(pasid_enabled);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 502/600] phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (500 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 501/600] dmaengine: idxd: Modify the dependence of attribute pasid_enabled Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 503/600] phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate Greg Kroah-Hartman
` (108 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jonas Karlman, Vinod Koul,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonas Karlman <jonas@kwiboo.se>
[ Upstream commit 644c06dfbd0da713f772abf0a8f8581ac78e6264 ]
inno_hdmi_phy_rk3328_clk_set_rate() is using the RK3228 macro
when configuring vco_div_5 on RK3328.
Fix this by using correct vco_div_5 macro for RK3328.
Fixes: 53706a116863 ("phy: add Rockchip Innosilicon hdmi phy")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Link: https://lore.kernel.org/r/20230615171005.2251032-2-jonas@kwiboo.se
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
index 80acca4e9e146..15339338aae35 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
@@ -790,8 +790,8 @@ static int inno_hdmi_phy_rk3328_clk_set_rate(struct clk_hw *hw,
RK3328_PRE_PLL_POWER_DOWN);
/* Configure pre-pll */
- inno_update_bits(inno, 0xa0, RK3228_PCLK_VCO_DIV_5_MASK,
- RK3228_PCLK_VCO_DIV_5(cfg->vco_div_5_en));
+ inno_update_bits(inno, 0xa0, RK3328_PCLK_VCO_DIV_5_MASK,
+ RK3328_PCLK_VCO_DIV_5(cfg->vco_div_5_en));
inno_write(inno, 0xa1, RK3328_PRE_PLL_PRE_DIV(cfg->prediv));
val = RK3328_SPREAD_SPECTRUM_MOD_DISABLE;
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 503/600] phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (501 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 502/600] phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328 Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 504/600] phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write Greg Kroah-Hartman
` (107 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zheng Yang, Jonas Karlman,
Vinod Koul, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zheng Yang <zhengyang@rock-chips.com>
[ Upstream commit d5ef343c1d62bc4c4c2c393af654a41cb34b449f ]
inno_hdmi_phy_rk3328_clk_recalc_rate() is returning a rate not found
in the pre pll config table when the fractal divider is used.
This can prevent proper power_on because a tmdsclock for the new rate
is not found in the pre pll config table.
Fix this by saving and returning a rounded pixel rate that exist
in the pre pll config table.
Fixes: 53706a116863 ("phy: add Rockchip Innosilicon hdmi phy")
Signed-off-by: Zheng Yang <zhengyang@rock-chips.com>
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Link: https://lore.kernel.org/r/20230615171005.2251032-3-jonas@kwiboo.se
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
index 15339338aae35..15a008a1ac7b9 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
@@ -745,10 +745,12 @@ unsigned long inno_hdmi_phy_rk3328_clk_recalc_rate(struct clk_hw *hw,
do_div(vco, (nd * (no_a == 1 ? no_b : no_a) * no_d * 2));
}
- inno->pixclock = vco;
- dev_dbg(inno->dev, "%s rate %lu\n", __func__, inno->pixclock);
+ inno->pixclock = DIV_ROUND_CLOSEST((unsigned long)vco, 1000) * 1000;
- return vco;
+ dev_dbg(inno->dev, "%s rate %lu vco %llu\n",
+ __func__, inno->pixclock, vco);
+
+ return inno->pixclock;
}
static long inno_hdmi_phy_rk3328_clk_round_rate(struct clk_hw *hw,
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 504/600] phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (502 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 503/600] phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 505/600] rpmsg: glink: Add check for kstrdup Greg Kroah-Hartman
` (106 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jonas Karlman, Vinod Koul,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonas Karlman <jonas@kwiboo.se>
[ Upstream commit 19a1d46bd699940a496d3b0d4e142ef99834988c ]
inno_write is used to configure 0xaa reg, that also hold the
POST_PLL_POWER_DOWN bit.
When POST_PLL_REFCLK_SEL_TMDS is configured the power down bit is not
taken into consideration.
Fix this by keeping the power down bit until configuration is complete.
Also reorder the reg write order for consistency.
Fixes: 53706a116863 ("phy: add Rockchip Innosilicon hdmi phy")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Link: https://lore.kernel.org/r/20230615171005.2251032-5-jonas@kwiboo.se
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/phy/rockchip/phy-rockchip-inno-hdmi.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
index 15a008a1ac7b9..2556caf475c0c 100644
--- a/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
+++ b/drivers/phy/rockchip/phy-rockchip-inno-hdmi.c
@@ -1023,9 +1023,10 @@ inno_hdmi_phy_rk3328_power_on(struct inno_hdmi_phy *inno,
inno_write(inno, 0xac, RK3328_POST_PLL_FB_DIV_7_0(cfg->fbdiv));
if (cfg->postdiv == 1) {
- inno_write(inno, 0xaa, RK3328_POST_PLL_REFCLK_SEL_TMDS);
inno_write(inno, 0xab, RK3328_POST_PLL_FB_DIV_8(cfg->fbdiv) |
RK3328_POST_PLL_PRE_DIV(cfg->prediv));
+ inno_write(inno, 0xaa, RK3328_POST_PLL_REFCLK_SEL_TMDS |
+ RK3328_POST_PLL_POWER_DOWN);
} else {
v = (cfg->postdiv / 2) - 1;
v &= RK3328_POST_PLL_POST_DIV_MASK;
@@ -1033,7 +1034,8 @@ inno_hdmi_phy_rk3328_power_on(struct inno_hdmi_phy *inno,
inno_write(inno, 0xab, RK3328_POST_PLL_FB_DIV_8(cfg->fbdiv) |
RK3328_POST_PLL_PRE_DIV(cfg->prediv));
inno_write(inno, 0xaa, RK3328_POST_PLL_POST_DIV_ENABLE |
- RK3328_POST_PLL_REFCLK_SEL_TMDS);
+ RK3328_POST_PLL_REFCLK_SEL_TMDS |
+ RK3328_POST_PLL_POWER_DOWN);
}
for (v = 0; v < 14; v++)
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 505/600] rpmsg: glink: Add check for kstrdup
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (503 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 504/600] phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 506/600] leds: pwm: Fix error code in led_pwm_create_fwnode() Greg Kroah-Hartman
` (105 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jiasheng Jiang, Bjorn Andersson,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiasheng Jiang <jiasheng@iscas.ac.cn>
[ Upstream commit b5c9ee8296a3760760c7b5d2e305f91412adc795 ]
Add check for the return value of kstrdup() and return the error
if it fails in order to avoid NULL pointer dereference.
Fixes: b4f8e52b89f6 ("rpmsg: Introduce Qualcomm RPM glink driver")
Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
Link: https://lore.kernel.org/r/20230619030631.12361-1-jiasheng@iscas.ac.cn
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/rpmsg/qcom_glink_native.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
index 67e7664efb0dc..cb8f65c1d4e3b 100644
--- a/drivers/rpmsg/qcom_glink_native.c
+++ b/drivers/rpmsg/qcom_glink_native.c
@@ -224,6 +224,10 @@ static struct glink_channel *qcom_glink_alloc_channel(struct qcom_glink *glink,
channel->glink = glink;
channel->name = kstrdup(name, GFP_KERNEL);
+ if (!channel->name) {
+ kfree(channel);
+ return ERR_PTR(-ENOMEM);
+ }
init_completion(&channel->open_req);
init_completion(&channel->open_ack);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 506/600] leds: pwm: Fix error code in led_pwm_create_fwnode()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (504 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 505/600] rpmsg: glink: Add check for kstrdup Greg Kroah-Hartman
@ 2023-09-11 13:48 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 507/600] leds: multicolor: Use rounded division when calculating color components Greg Kroah-Hartman
` (104 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:48 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Andy Shevchenko,
Lee Jones, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dan Carpenter <dan.carpenter@linaro.org>
[ Upstream commit cadb2de2a7fd9e955381307de3eddfcc386c208e ]
Negative -EINVAL was intended, not positive EINVAL. Fix it.
Fixes: 95138e01275e ("leds: pwm: Make error handling more robust")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/a33b981a-b2c4-4dc2-b00a-626a090d2f11@moroto.mountain
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/leds/leds-pwm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/leds/leds-pwm.c b/drivers/leds/leds-pwm.c
index 6832180c1c54f..cc892ecd52408 100644
--- a/drivers/leds/leds-pwm.c
+++ b/drivers/leds/leds-pwm.c
@@ -146,7 +146,7 @@ static int led_pwm_create_fwnode(struct device *dev, struct led_pwm_priv *priv)
led.name = to_of_node(fwnode)->name;
if (!led.name) {
- ret = EINVAL;
+ ret = -EINVAL;
goto err_child_out;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 507/600] leds: multicolor: Use rounded division when calculating color components
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (505 preceding siblings ...)
2023-09-11 13:48 ` [PATCH 6.1 506/600] leds: pwm: Fix error code in led_pwm_create_fwnode() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 508/600] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Greg Kroah-Hartman
` (103 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Behún, Lee Jones,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <kabel@kernel.org>
[ Upstream commit 065d099f1be58187e6629273c50b948a02b7e1bf ]
Given channel intensity, LED brightness and max LED brightness, the
multicolor LED framework helper led_mc_calc_color_components() computes
the color channel brightness as
chan_brightness = brightness * chan_intensity / max_brightness
Consider the situation when (brightness, intensity, max_brightness) is
for example (16, 15, 255), then chan_brightness is computed to 0
although the fractional divison would give 0.94, which should be rounded
to 1.
Use DIV_ROUND_CLOSEST here for the division to give more realistic
component computation:
chan_brightness = DIV_ROUND_CLOSEST(brightness * chan_intensity,
max_brightness)
Fixes: 55d5d3b46b08 ("leds: multicolor: Introduce a multicolor class definition")
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20230801124931.8661-1-kabel@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/leds/led-class-multicolor.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/leds/led-class-multicolor.c b/drivers/leds/led-class-multicolor.c
index e317408583df9..ec62a48116135 100644
--- a/drivers/leds/led-class-multicolor.c
+++ b/drivers/leds/led-class-multicolor.c
@@ -6,6 +6,7 @@
#include <linux/device.h>
#include <linux/init.h>
#include <linux/led-class-multicolor.h>
+#include <linux/math.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
@@ -19,9 +20,10 @@ int led_mc_calc_color_components(struct led_classdev_mc *mcled_cdev,
int i;
for (i = 0; i < mcled_cdev->num_colors; i++)
- mcled_cdev->subled_info[i].brightness = brightness *
- mcled_cdev->subled_info[i].intensity /
- led_cdev->max_brightness;
+ mcled_cdev->subled_info[i].brightness =
+ DIV_ROUND_CLOSEST(brightness *
+ mcled_cdev->subled_info[i].intensity,
+ led_cdev->max_brightness);
return 0;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 508/600] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (506 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 507/600] leds: multicolor: Use rounded division when calculating color components Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 509/600] leds: trigger: tty: Do not use LED_ON/OFF constants, use led_blink_set_oneshot instead Greg Kroah-Hartman
` (102 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Behún, Lee Jones,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <kabel@kernel.org>
[ Upstream commit c3f853184bed04105682383c2971798c572226b5 ]
At the time we call
BUG_ON(props.color == LED_COLOR_ID_MULTI);
the props variable is still initialized to zero.
Call the BUG_ON only after we parse fwnode into props.
Fixes: 77dce3a22e89 ("leds: disallow /sys/class/leds/*:multi:* for now")
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20230801151623.30387-1-kabel@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/leds/led-core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/leds/led-core.c b/drivers/leds/led-core.c
index 4a97cb7457888..aad8bc44459fe 100644
--- a/drivers/leds/led-core.c
+++ b/drivers/leds/led-core.c
@@ -419,15 +419,15 @@ int led_compose_name(struct device *dev, struct led_init_data *init_data,
struct fwnode_handle *fwnode = init_data->fwnode;
const char *devicename = init_data->devicename;
- /* We want to label LEDs that can produce full range of colors
- * as RGB, not multicolor */
- BUG_ON(props.color == LED_COLOR_ID_MULTI);
-
if (!led_classdev_name)
return -EINVAL;
led_parse_fwnode_props(dev, fwnode, &props);
+ /* We want to label LEDs that can produce full range of colors
+ * as RGB, not multicolor */
+ BUG_ON(props.color == LED_COLOR_ID_MULTI);
+
if (props.label) {
/*
* If init_data.devicename is NULL, then it indicates that
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 509/600] leds: trigger: tty: Do not use LED_ON/OFF constants, use led_blink_set_oneshot instead
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (507 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 508/600] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 510/600] mtd: spi-nor: Check bus width while setting QE bit Greg Kroah-Hartman
` (101 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Marek Behún, Lee Jones,
Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Behún <kabel@kernel.org>
[ Upstream commit 730094577e0c37e1bc40be37cbd41f71b0a8a2a4 ]
The tty LED trigger uses the obsolete LED_ON & LED_OFF constants when
setting LED brightness. This is bad because the LED_ON constant is equal
to 1, and so when activating the tty LED trigger on a LED class device
with max_brightness greater than 1, the LED is dimmer than it can be
(when max_brightness is 255, the LED is very dimm indeed; some devices
translate 1/255 to 0, so the LED is OFF all the time).
Instead of directly setting brightness to a specific value, use the
led_blink_set_oneshot() function from LED core to configure the blink.
This function takes the current configured brightness as blink
brightness if not zero, and max brightness otherwise.
This also changes the behavior of the TTY LED trigger. Previously if
rx/tx stats kept changing, the LED was ON all the time they kept
changing. With this patch the LED will blink on TTY activity.
Fixes: fd4a641ac88f ("leds: trigger: implement a tty trigger")
Signed-off-by: Marek Behún <kabel@kernel.org>
Link: https://lore.kernel.org/r/20230802090753.13611-1-kabel@kernel.org
Signed-off-by: Lee Jones <lee@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/leds/trigger/ledtrig-tty.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/leds/trigger/ledtrig-tty.c b/drivers/leds/trigger/ledtrig-tty.c
index f62db7e520b52..8ae0d2d284aff 100644
--- a/drivers/leds/trigger/ledtrig-tty.c
+++ b/drivers/leds/trigger/ledtrig-tty.c
@@ -7,6 +7,8 @@
#include <linux/tty.h>
#include <uapi/linux/serial.h>
+#define LEDTRIG_TTY_INTERVAL 50
+
struct ledtrig_tty_data {
struct led_classdev *led_cdev;
struct delayed_work dwork;
@@ -122,17 +124,19 @@ static void ledtrig_tty_work(struct work_struct *work)
if (icount.rx != trigger_data->rx ||
icount.tx != trigger_data->tx) {
- led_set_brightness_sync(trigger_data->led_cdev, LED_ON);
+ unsigned long interval = LEDTRIG_TTY_INTERVAL;
+
+ led_blink_set_oneshot(trigger_data->led_cdev, &interval,
+ &interval, 0);
trigger_data->rx = icount.rx;
trigger_data->tx = icount.tx;
- } else {
- led_set_brightness_sync(trigger_data->led_cdev, LED_OFF);
}
out:
mutex_unlock(&trigger_data->mutex);
- schedule_delayed_work(&trigger_data->dwork, msecs_to_jiffies(100));
+ schedule_delayed_work(&trigger_data->dwork,
+ msecs_to_jiffies(LEDTRIG_TTY_INTERVAL * 2));
}
static struct attribute *ledtrig_tty_attrs[] = {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 510/600] mtd: spi-nor: Check bus width while setting QE bit
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (508 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 509/600] leds: trigger: tty: Do not use LED_ON/OFF constants, use led_blink_set_oneshot instead Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 511/600] mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume() Greg Kroah-Hartman
` (100 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Michael Walle, Tudor Ambarus,
Hsin-Yi Wang, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hsin-Yi Wang <hsinyi@chromium.org>
[ Upstream commit f01d8155a92e33cdaa85d20bfbe6c441907b3c1f ]
spi_nor_write_16bit_sr_and_check() should also check if bus width is
4 before setting QE bit.
Fixes: 39d1e3340c73 ("mtd: spi-nor: Fix clearing of QE bit on lock()/unlock()")
Suggested-by: Michael Walle <michael@walle.cc>
Suggested-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
Reviewed-by: Michael Walle <michael@walle.cc>
Link: https://lore.kernel.org/r/20230818064524.1229100-2-hsinyi@chromium.org
Signed-off-by: Tudor Ambarus <tudor.ambarus@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/mtd/spi-nor/core.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index dc4d86ceee447..a9000b0ebe690 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -770,21 +770,22 @@ static int spi_nor_write_16bit_sr_and_check(struct spi_nor *nor, u8 sr1)
ret = spi_nor_read_cr(nor, &sr_cr[1]);
if (ret)
return ret;
- } else if (nor->params->quad_enable) {
+ } else if (spi_nor_get_protocol_width(nor->read_proto) == 4 &&
+ spi_nor_get_protocol_width(nor->write_proto) == 4 &&
+ nor->params->quad_enable) {
/*
* If the Status Register 2 Read command (35h) is not
* supported, we should at least be sure we don't
* change the value of the SR2 Quad Enable bit.
*
- * We can safely assume that when the Quad Enable method is
- * set, the value of the QE bit is one, as a consequence of the
- * nor->params->quad_enable() call.
+ * When the Quad Enable method is set and the buswidth is 4, we
+ * can safely assume that the value of the QE bit is one, as a
+ * consequence of the nor->params->quad_enable() call.
*
- * We can safely assume that the Quad Enable bit is present in
- * the Status Register 2 at BIT(1). According to the JESD216
- * revB standard, BFPT DWORDS[15], bits 22:20, the 16-bit
- * Write Status (01h) command is available just for the cases
- * in which the QE bit is described in SR2 at BIT(1).
+ * According to the JESD216 revB standard, BFPT DWORDS[15],
+ * bits 22:20, the 16-bit Write Status (01h) command is
+ * available just for the cases in which the QE bit is
+ * described in SR2 at BIT(1).
*/
sr_cr[1] = SR2_QUAD_EN_BIT1;
} else {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 511/600] mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (509 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 510/600] mtd: spi-nor: Check bus width while setting QE bit Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 512/600] um: Fix hostaudio build errors Greg Kroah-Hartman
` (99 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yi Yang, Miquel Raynal, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Yang <yiyang13@huawei.com>
[ Upstream commit a5a88125d00612586e941ae13e7fcf36ba8f18a7 ]
In fsmc_nand_resume(), the return value of clk_prepare_enable() should be
checked since it might fail.
Fixes: e25da1c07dfb ("mtd: fsmc_nand: Add clk_{un}prepare() support")
Signed-off-by: Yi Yang <yiyang13@huawei.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20230817115839.10192-1-yiyang13@huawei.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/mtd/nand/raw/fsmc_nand.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/mtd/nand/raw/fsmc_nand.c b/drivers/mtd/nand/raw/fsmc_nand.c
index 6b2bda815b880..17786e1331e6d 100644
--- a/drivers/mtd/nand/raw/fsmc_nand.c
+++ b/drivers/mtd/nand/raw/fsmc_nand.c
@@ -1202,9 +1202,14 @@ static int fsmc_nand_suspend(struct device *dev)
static int fsmc_nand_resume(struct device *dev)
{
struct fsmc_nand_data *host = dev_get_drvdata(dev);
+ int ret;
if (host) {
- clk_prepare_enable(host->clk);
+ ret = clk_prepare_enable(host->clk);
+ if (ret) {
+ dev_err(dev, "failed to enable clk\n");
+ return ret;
+ }
if (host->dev_timings)
fsmc_nand_setup(host, host->dev_timings);
nand_reset(&host->nand, 0);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 512/600] um: Fix hostaudio build errors
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (510 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 511/600] mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 513/600] dmaengine: ste_dma40: Add missing IRQ check in d40_probe Greg Kroah-Hartman
` (98 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Randy Dunlap, kernel test robot,
Richard Weinberger, Anton Ivanov, Johannes Berg, linux-um,
Tejun Heo, Takashi Iwai, Jaroslav Kysela, Masahiro Yamada,
Nathan Chancellor, Nick Desaulniers, Nicolas Schier, linux-kbuild,
alsa-devel, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Randy Dunlap <rdunlap@infradead.org>
[ Upstream commit db4bfcba7bb8d10f00bba2a3da6b9a9c2a1d7b71 ]
Use "select" to ensure that the required kconfig symbols are set
as expected.
Drop HOSTAUDIO since it is now equivalent to UML_SOUND.
Set CONFIG_SOUND=m in ARCH=um defconfig files to maintain the
status quo of the default configs.
Allow SOUND with UML regardless of HAS_IOMEM. Otherwise there is a
kconfig warning for unmet dependencies. (This was not an issue when
SOUND was defined in arch/um/drivers/Kconfig. I have done 50 randconfig
builds and didn't find any issues.)
This fixes build errors when CONFIG_SOUND is not set:
ld: arch/um/drivers/hostaudio_kern.o: in function `hostaudio_cleanup_module':
hostaudio_kern.c:(.exit.text+0xa): undefined reference to `unregister_sound_mixer'
ld: hostaudio_kern.c:(.exit.text+0x15): undefined reference to `unregister_sound_dsp'
ld: arch/um/drivers/hostaudio_kern.o: in function `hostaudio_init_module':
hostaudio_kern.c:(.init.text+0x19): undefined reference to `register_sound_dsp'
ld: hostaudio_kern.c:(.init.text+0x31): undefined reference to `register_sound_mixer'
ld: hostaudio_kern.c:(.init.text+0x49): undefined reference to `unregister_sound_dsp'
and this kconfig warning:
WARNING: unmet direct dependencies detected for SOUND
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Fixes: d886e87cb82b ("sound: make OSS sound core optional")
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Reported-by: kernel test robot <lkp@intel.com>
Closes: lore.kernel.org/r/202307141416.vxuRVpFv-lkp@intel.com
Cc: Richard Weinberger <richard@nod.at>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: linux-um@lists.infradead.org
Cc: Tejun Heo <tj@kernel.org>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Masahiro Yamada <masahiroy@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <ndesaulniers@google.com>
Cc: Nicolas Schier <nicolas@fjasle.eu>
Cc: linux-kbuild@vger.kernel.org
Cc: alsa-devel@alsa-project.org
Reviewed-by: Masahiro Yamada <masahiroy@kernel.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/um/configs/i386_defconfig | 1 +
arch/um/configs/x86_64_defconfig | 1 +
arch/um/drivers/Kconfig | 16 +++-------------
arch/um/drivers/Makefile | 2 +-
sound/Kconfig | 2 +-
5 files changed, 7 insertions(+), 15 deletions(-)
diff --git a/arch/um/configs/i386_defconfig b/arch/um/configs/i386_defconfig
index c0162286d68b7..c33a6880a437a 100644
--- a/arch/um/configs/i386_defconfig
+++ b/arch/um/configs/i386_defconfig
@@ -35,6 +35,7 @@ CONFIG_TTY_CHAN=y
CONFIG_XTERM_CHAN=y
CONFIG_CON_CHAN="pts"
CONFIG_SSL_CHAN="pts"
+CONFIG_SOUND=m
CONFIG_UML_SOUND=m
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
diff --git a/arch/um/configs/x86_64_defconfig b/arch/um/configs/x86_64_defconfig
index bec6e5d956873..df29f282b6ac2 100644
--- a/arch/um/configs/x86_64_defconfig
+++ b/arch/um/configs/x86_64_defconfig
@@ -33,6 +33,7 @@ CONFIG_TTY_CHAN=y
CONFIG_XTERM_CHAN=y
CONFIG_CON_CHAN="pts"
CONFIG_SSL_CHAN="pts"
+CONFIG_SOUND=m
CONFIG_UML_SOUND=m
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
diff --git a/arch/um/drivers/Kconfig b/arch/um/drivers/Kconfig
index 5903e2b598aae..fe0210eaf9bb6 100644
--- a/arch/um/drivers/Kconfig
+++ b/arch/um/drivers/Kconfig
@@ -111,24 +111,14 @@ config SSL_CHAN
config UML_SOUND
tristate "Sound support"
+ depends on SOUND
+ select SOUND_OSS_CORE
help
This option enables UML sound support. If enabled, it will pull in
- soundcore and the UML hostaudio relay, which acts as a intermediary
+ the UML hostaudio relay, which acts as a intermediary
between the host's dsp and mixer devices and the UML sound system.
It is safe to say 'Y' here.
-config SOUND
- tristate
- default UML_SOUND
-
-config SOUND_OSS_CORE
- bool
- default UML_SOUND
-
-config HOSTAUDIO
- tristate
- default UML_SOUND
-
endmenu
menu "UML Network Devices"
diff --git a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile
index 65b449c992d2c..079556ec044b8 100644
--- a/arch/um/drivers/Makefile
+++ b/arch/um/drivers/Makefile
@@ -54,7 +54,7 @@ obj-$(CONFIG_UML_NET) += net.o
obj-$(CONFIG_MCONSOLE) += mconsole.o
obj-$(CONFIG_MMAPPER) += mmapper_kern.o
obj-$(CONFIG_BLK_DEV_UBD) += ubd.o
-obj-$(CONFIG_HOSTAUDIO) += hostaudio.o
+obj-$(CONFIG_UML_SOUND) += hostaudio.o
obj-$(CONFIG_NULL_CHAN) += null.o
obj-$(CONFIG_PORT_CHAN) += port.o
obj-$(CONFIG_PTY_CHAN) += pty.o
diff --git a/sound/Kconfig b/sound/Kconfig
index e56d96d2b11ca..1903c35d799e1 100644
--- a/sound/Kconfig
+++ b/sound/Kconfig
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-only
menuconfig SOUND
tristate "Sound card support"
- depends on HAS_IOMEM
+ depends on HAS_IOMEM || UML
help
If you have a sound card in your computer, i.e. if it can say more
than an occasional beep, say Y.
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 513/600] dmaengine: ste_dma40: Add missing IRQ check in d40_probe
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (511 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 512/600] um: Fix hostaudio build errors Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 514/600] Drivers: hv: vmbus: Dont dereference ACPI root object handle Greg Kroah-Hartman
` (97 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Ruan Jinjie, Linus Walleij,
Vinod Koul, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: ruanjinjie <ruanjinjie@huawei.com>
[ Upstream commit c05ce6907b3d6e148b70f0bb5eafd61dcef1ddc1 ]
Check for the return value of platform_get_irq(): if no interrupt
is specified, it wouldn't make sense to call request_irq().
Fixes: 8d318a50b3d7 ("DMAENGINE: Support for ST-Ericssons DMA40 block v3")
Signed-off-by: Ruan Jinjie <ruanjinjie@huawei.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/r/20230724144108.2582917-1-ruanjinjie@huawei.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/dma/ste_dma40.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index f093e08c23b16..3b09fdc507e04 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -3597,6 +3597,10 @@ static int __init d40_probe(struct platform_device *pdev)
spin_lock_init(&base->lcla_pool.lock);
base->irq = platform_get_irq(pdev, 0);
+ if (base->irq < 0) {
+ ret = base->irq;
+ goto destroy_cache;
+ }
ret = request_irq(base->irq, d40_handle_interrupt, 0, D40_NAME, base);
if (ret) {
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 514/600] Drivers: hv: vmbus: Dont dereference ACPI root object handle
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (512 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 513/600] dmaengine: ste_dma40: Add missing IRQ check in d40_probe Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 515/600] cpufreq: Fix the race condition while updating the transition_task of policy Greg Kroah-Hartman
` (96 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Maciej S. Szmigiero, Michael Kelley,
Wei Liu, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
[ Upstream commit 78e04bbff849b51b56f5925b1945db2c6e128b61 ]
Since the commit referenced in the Fixes: tag below the VMBus client driver
is walking the ACPI namespace up from the VMBus ACPI device to the ACPI
namespace root object trying to find Hyper-V MMIO ranges.
However, if it is not able to find them it ends trying to walk resources of
the ACPI namespace root object itself.
This object has all-ones handle, which causes a NULL pointer dereference
in the ACPI code (from dereferencing this pointer with an offset).
This in turn causes an oops on boot with VMBus host implementations that do
not provide Hyper-V MMIO ranges in their VMBus ACPI device or its
ancestors.
The QEMU VMBus implementation is an example of such implementation.
I guess providing these ranges is optional, since all tested Windows
versions seem to be able to use VMBus devices without them.
Fix this by explicitly terminating the lookup at the ACPI namespace root
object.
Note that Linux guests under KVM/QEMU do not use the Hyper-V PV interface
by default - they only do so if the KVM PV interface is missing or
disabled.
Example stack trace of such oops:
[ 3.710827] ? __die+0x1f/0x60
[ 3.715030] ? page_fault_oops+0x159/0x460
[ 3.716008] ? exc_page_fault+0x73/0x170
[ 3.716959] ? asm_exc_page_fault+0x22/0x30
[ 3.717957] ? acpi_ns_lookup+0x7a/0x4b0
[ 3.718898] ? acpi_ns_internalize_name+0x79/0xc0
[ 3.720018] acpi_ns_get_node_unlocked+0xb5/0xe0
[ 3.721120] ? acpi_ns_check_object_type+0xfe/0x200
[ 3.722285] ? acpi_rs_convert_aml_to_resource+0x37/0x6e0
[ 3.723559] ? down_timeout+0x3a/0x60
[ 3.724455] ? acpi_ns_get_node+0x3a/0x60
[ 3.725412] acpi_ns_get_node+0x3a/0x60
[ 3.726335] acpi_ns_evaluate+0x1c3/0x2c0
[ 3.727295] acpi_ut_evaluate_object+0x64/0x1b0
[ 3.728400] acpi_rs_get_method_data+0x2b/0x70
[ 3.729476] ? vmbus_platform_driver_probe+0x1d0/0x1d0 [hv_vmbus]
[ 3.730940] ? vmbus_platform_driver_probe+0x1d0/0x1d0 [hv_vmbus]
[ 3.732411] acpi_walk_resources+0x78/0xd0
[ 3.733398] vmbus_platform_driver_probe+0x9f/0x1d0 [hv_vmbus]
[ 3.734802] platform_probe+0x3d/0x90
[ 3.735684] really_probe+0x19b/0x400
[ 3.736570] ? __device_attach_driver+0x100/0x100
[ 3.737697] __driver_probe_device+0x78/0x160
[ 3.738746] driver_probe_device+0x1f/0x90
[ 3.739743] __driver_attach+0xc2/0x1b0
[ 3.740671] bus_for_each_dev+0x70/0xc0
[ 3.741601] bus_add_driver+0x10e/0x210
[ 3.742527] driver_register+0x55/0xf0
[ 3.744412] ? 0xffffffffc039a000
[ 3.745207] hv_acpi_init+0x3c/0x1000 [hv_vmbus]
Fixes: 7f163a6fd957 ("drivers:hv: Modify hv_vmbus to search for all MMIO ranges available.")
Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Link: https://lore.kernel.org/r/fd8e64ceeecfd1d95ff49021080cf699e88dbbde.1691606267.git.maciej.szmigiero@oracle.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/hv/vmbus_drv.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index b03cb7ae7fd38..e9c3f1e826baa 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -2452,7 +2452,8 @@ static int vmbus_acpi_add(struct acpi_device *device)
* Some ancestor of the vmbus acpi device (Gen1 or Gen2
* firmware) is the VMOD that has the mmio ranges. Get that.
*/
- for (ancestor = acpi_dev_parent(device); ancestor;
+ for (ancestor = acpi_dev_parent(device);
+ ancestor && ancestor->handle != ACPI_ROOT_OBJECT;
ancestor = acpi_dev_parent(ancestor)) {
result = acpi_walk_resources(ancestor->handle, METHOD_NAME__CRS,
vmbus_walk_resources, NULL);
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 515/600] cpufreq: Fix the race condition while updating the transition_task of policy
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (513 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 514/600] Drivers: hv: vmbus: Dont dereference ACPI root object handle Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 516/600] virtio_ring: fix avail_wrap_counter in virtqueue_add_packed Greg Kroah-Hartman
` (95 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Liao Chang, Viresh Kumar,
Rafael J. Wysocki, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Liao Chang <liaochang1@huawei.com>
[ Upstream commit 61bfbf7951ba561dcbdd5357702d3cbc2d447812 ]
The field 'transition_task' of policy structure is used to track the
task which is performing the frequency transition. Using this field to
print a warning once detect a case where the same task is calling
_begin() again before completing the preivous frequency transition via
the _end().
However, there is a potential race condition in _end() and _begin() APIs
while updating the field 'transition_task' of policy, the scenario is
depicted below:
Task A Task B
/* 1st freq transition */
Invoke _begin() {
...
...
}
/* 2nd freq transition */
Invoke _begin() {
... //waiting for A to
... //clear
... //transition_ongoing
... //in _end() for
... //the 1st transition
|
Change the frequency |
|
Invoke _end() { |
... |
... |
transition_ongoing = false; V
transition_ongoing = true;
transition_task = current;
transition_task = NULL;
... //A overwrites the task
... //performing the transition
... //result in error warning.
}
To fix this race condition, the transition_lock of policy structure is
now acquired before updating policy structure in _end() API. Which ensure
that only one task can update the 'transition_task' field at a time.
Link: https://lore.kernel.org/all/b3c61d8a-d52d-3136-fbf0-d1de9f1ba411@huawei.com/
Fixes: ca654dc3a93d ("cpufreq: Catch double invocations of cpufreq_freq_transition_begin/end")
Signed-off-by: Liao Chang <liaochang1@huawei.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/cpufreq/cpufreq.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 285ba51b31f60..c8912756fc06d 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -450,8 +450,10 @@ void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
policy->cur,
policy->cpuinfo.max_freq);
+ spin_lock(&policy->transition_lock);
policy->transition_ongoing = false;
policy->transition_task = NULL;
+ spin_unlock(&policy->transition_lock);
wake_up(&policy->transition_wait);
}
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 516/600] virtio_ring: fix avail_wrap_counter in virtqueue_add_packed
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (514 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 515/600] cpufreq: Fix the race condition while updating the transition_task of policy Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 517/600] igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU Greg Kroah-Hartman
` (94 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yuan Yao, Jason Wang,
Michael S. Tsirkin, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yuan Yao <yuanyaogoog@chromium.org>
[ Upstream commit 1acfe2c1225899eab5ab724c91b7e1eb2881b9ab ]
In current packed virtqueue implementation, the avail_wrap_counter won't
flip, in the case when the driver supplies a descriptor chain with a
length equals to the queue size; total_sg == vq->packed.vring.num.
Let’s assume the following situation:
vq->packed.vring.num=4
vq->packed.next_avail_idx: 1
vq->packed.avail_wrap_counter: 0
Then the driver adds a descriptor chain containing 4 descriptors.
We expect the following result with avail_wrap_counter flipped:
vq->packed.next_avail_idx: 1
vq->packed.avail_wrap_counter: 1
But, the current implementation gives the following result:
vq->packed.next_avail_idx: 1
vq->packed.avail_wrap_counter: 0
To reproduce the bug, you can set a packed queue size as small as
possible, so that the driver is more likely to provide a descriptor
chain with a length equal to the packed queue size. For example, in
qemu run following commands:
sudo qemu-system-x86_64 \
-enable-kvm \
-nographic \
-kernel "path/to/kernel_image" \
-m 1G \
-drive file="path/to/rootfs",if=none,id=disk \
-device virtio-blk,drive=disk \
-drive file="path/to/disk_image",if=none,id=rwdisk \
-device virtio-blk,drive=rwdisk,packed=on,queue-size=4,\
indirect_desc=off \
-append "console=ttyS0 root=/dev/vda rw init=/bin/bash"
Inside the VM, create a directory and mount the rwdisk device on it. The
rwdisk will hang and mount operation will not complete.
This commit fixes the wrap counter error by flipping the
packed.avail_wrap_counter, when start of descriptor chain equals to the
end of descriptor chain (head == i).
Fixes: 1ce9e6055fa0 ("virtio_ring: introduce packed ring support")
Signed-off-by: Yuan Yao <yuanyaogoog@chromium.org>
Message-Id: <20230808051110.3492693-1-yuanyaogoog@chromium.org>
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/virtio/virtio_ring.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 90d514c141794..7d320f799ca1e 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -1449,7 +1449,7 @@ static inline int virtqueue_add_packed(struct virtqueue *_vq,
}
}
- if (i < head)
+ if (i <= head)
vq->packed.avail_wrap_counter ^= 1;
/* We're using some buffers from the free list. */
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 517/600] igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (515 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 516/600] virtio_ring: fix avail_wrap_counter in virtqueue_add_packed Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 518/600] netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c Greg Kroah-Hartman
` (93 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Eric Dumazet, David Laight,
Kyle Zeng, Simon Horman, David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Dumazet <edumazet@google.com>
commit c3b704d4a4a265660e665df51b129e8425216ed1 upstream.
This is a follow up of commit 915d975b2ffa ("net: deal with integer
overflows in kmalloc_reserve()") based on David Laight feedback.
Back in 2010, I failed to realize malicious users could set dev->mtu
to arbitrary values. This mtu has been since limited to 0x7fffffff but
regardless of how big dev->mtu is, it makes no sense for igmpv3_newpack()
to allocate more than IP_MAX_MTU and risk various skb fields overflows.
Fixes: 57e1ab6eaddc ("igmp: refine skb allocations")
Link: https://lore.kernel.org/netdev/d273628df80f45428e739274ab9ecb72@AcuMS.aculab.com/
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: David Laight <David.Laight@ACULAB.COM>
Cc: Kyle Zeng <zengyhkyle@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ipv4/igmp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -353,8 +353,9 @@ static struct sk_buff *igmpv3_newpack(st
struct flowi4 fl4;
int hlen = LL_RESERVED_SPACE(dev);
int tlen = dev->needed_tailroom;
- unsigned int size = mtu;
+ unsigned int size;
+ size = min(mtu, IP_MAX_MTU);
while (1) {
skb = alloc_skb(size + hlen + tlen,
GFP_ATOMIC | __GFP_NOWARN);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 518/600] netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (516 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 517/600] igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 519/600] netfilter: nft_exthdr: Fix non-linear header modification Greg Kroah-Hartman
` (92 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jozsef Kadlecsik, Kyle Zeng,
Florian Westphal
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kyle Zeng <zengyhkyle@gmail.com>
commit 050d91c03b28ca479df13dfb02bcd2c60dd6a878 upstream.
The missing IP_SET_HASH_WITH_NET0 macro in ip_set_hash_netportnet can
lead to the use of wrong `CIDR_POS(c)` for calculating array offsets,
which can lead to integer underflow. As a result, it leads to slab
out-of-bound access.
This patch adds back the IP_SET_HASH_WITH_NET0 macro to
ip_set_hash_netportnet to address the issue.
Fixes: 886503f34d63 ("netfilter: ipset: actually allow allowable CIDR 0 in hash:net,port,net")
Suggested-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Kyle Zeng <zengyhkyle@gmail.com>
Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/netfilter/ipset/ip_set_hash_netportnet.c | 1 +
1 file changed, 1 insertion(+)
--- a/net/netfilter/ipset/ip_set_hash_netportnet.c
+++ b/net/netfilter/ipset/ip_set_hash_netportnet.c
@@ -36,6 +36,7 @@ MODULE_ALIAS("ip_set_hash:net,port,net")
#define IP_SET_HASH_WITH_PROTO
#define IP_SET_HASH_WITH_NETS
#define IPSET_NET_COUNT 2
+#define IP_SET_HASH_WITH_NET0
/* IPv4 variant */
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 519/600] netfilter: nft_exthdr: Fix non-linear header modification
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (517 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 518/600] netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 520/600] netfilter: xt_u32: validate user space input Greg Kroah-Hartman
` (91 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Xiao Liang, Pablo Neira Ayuso
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiao Liang <shaw.leon@gmail.com>
commit 28427f368f0e08d504ed06e74bc7cc79d6d06511 upstream.
Fix skb_ensure_writable() size. Don't use nft_tcp_header_pointer() to
make it explicit that pointers point to the packet (not local buffer).
Fixes: 99d1712bc41c ("netfilter: exthdr: tcp option set support")
Fixes: 7890cbea66e7 ("netfilter: exthdr: add support for tcp option removal")
Cc: stable@vger.kernel.org
Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/netfilter/nft_exthdr.c | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
--- a/net/netfilter/nft_exthdr.c
+++ b/net/netfilter/nft_exthdr.c
@@ -238,7 +238,12 @@ static void nft_exthdr_tcp_set_eval(cons
if (!tcph)
goto err;
+ if (skb_ensure_writable(pkt->skb, nft_thoff(pkt) + tcphdr_len))
+ goto err;
+
+ tcph = (struct tcphdr *)(pkt->skb->data + nft_thoff(pkt));
opt = (u8 *)tcph;
+
for (i = sizeof(*tcph); i < tcphdr_len - 1; i += optl) {
union {
__be16 v16;
@@ -253,15 +258,6 @@ static void nft_exthdr_tcp_set_eval(cons
if (i + optl > tcphdr_len || priv->len + priv->offset > optl)
goto err;
- if (skb_ensure_writable(pkt->skb,
- nft_thoff(pkt) + i + priv->len))
- goto err;
-
- tcph = nft_tcp_header_pointer(pkt, sizeof(buff), buff,
- &tcphdr_len);
- if (!tcph)
- goto err;
-
offset = i + priv->offset;
switch (priv->len) {
@@ -325,9 +321,9 @@ static void nft_exthdr_tcp_strip_eval(co
if (skb_ensure_writable(pkt->skb, nft_thoff(pkt) + tcphdr_len))
goto drop;
- opt = (u8 *)nft_tcp_header_pointer(pkt, sizeof(buff), buff, &tcphdr_len);
- if (!opt)
- goto err;
+ tcph = (struct tcphdr *)(pkt->skb->data + nft_thoff(pkt));
+ opt = (u8 *)tcph;
+
for (i = sizeof(*tcph); i < tcphdr_len - 1; i += optl) {
unsigned int j;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 520/600] netfilter: xt_u32: validate user space input
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (518 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 519/600] netfilter: nft_exthdr: Fix non-linear header modification Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 521/600] netfilter: xt_sctp: validate the flag_info count Greg Kroah-Hartman
` (90 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Wander Lairson Costa,
Pablo Neira Ayuso
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wander Lairson Costa <wander@redhat.com>
commit 69c5d284f67089b4750d28ff6ac6f52ec224b330 upstream.
The xt_u32 module doesn't validate the fields in the xt_u32 structure.
An attacker may take advantage of this to trigger an OOB read by setting
the size fields with a value beyond the arrays boundaries.
Add a checkentry function to validate the structure.
This was originally reported by the ZDI project (ZDI-CAN-18408).
Fixes: 1b50b8a371e9 ("[NETFILTER]: Add u32 match")
Cc: stable@vger.kernel.org
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/netfilter/xt_u32.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
--- a/net/netfilter/xt_u32.c
+++ b/net/netfilter/xt_u32.c
@@ -96,11 +96,32 @@ static bool u32_mt(const struct sk_buff
return ret ^ data->invert;
}
+static int u32_mt_checkentry(const struct xt_mtchk_param *par)
+{
+ const struct xt_u32 *data = par->matchinfo;
+ const struct xt_u32_test *ct;
+ unsigned int i;
+
+ if (data->ntests > ARRAY_SIZE(data->tests))
+ return -EINVAL;
+
+ for (i = 0; i < data->ntests; ++i) {
+ ct = &data->tests[i];
+
+ if (ct->nnums > ARRAY_SIZE(ct->location) ||
+ ct->nvalues > ARRAY_SIZE(ct->value))
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
static struct xt_match xt_u32_mt_reg __read_mostly = {
.name = "u32",
.revision = 0,
.family = NFPROTO_UNSPEC,
.match = u32_mt,
+ .checkentry = u32_mt_checkentry,
.matchsize = sizeof(struct xt_u32),
.me = THIS_MODULE,
};
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 521/600] netfilter: xt_sctp: validate the flag_info count
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (519 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 520/600] netfilter: xt_u32: validate user space input Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 522/600] skbuff: skb_segment, Call zero copy functions before using skbuff frags Greg Kroah-Hartman
` (89 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Lucas Leong, Wander Lairson Costa,
Pablo Neira Ayuso
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wander Lairson Costa <wander@redhat.com>
commit e99476497687ef9e850748fe6d232264f30bc8f9 upstream.
sctp_mt_check doesn't validate the flag_count field. An attacker can
take advantage of that to trigger a OOB read and leak memory
information.
Add the field validation in the checkentry function.
Fixes: 2e4e6a17af35 ("[NETFILTER] x_tables: Abstraction layer for {ip,ip6,arp}_tables")
Cc: stable@vger.kernel.org
Reported-by: Lucas Leong <wmliang@infosec.exchange>
Signed-off-by: Wander Lairson Costa <wander@redhat.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/netfilter/xt_sctp.c | 2 ++
1 file changed, 2 insertions(+)
--- a/net/netfilter/xt_sctp.c
+++ b/net/netfilter/xt_sctp.c
@@ -150,6 +150,8 @@ static int sctp_mt_check(const struct xt
{
const struct xt_sctp_info *info = par->matchinfo;
+ if (info->flag_count > ARRAY_SIZE(info->flag_info))
+ return -EINVAL;
if (info->flags & ~XT_SCTP_VALID_FLAGS)
return -EINVAL;
if (info->invflags & ~XT_SCTP_VALID_FLAGS)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 522/600] skbuff: skb_segment, Call zero copy functions before using skbuff frags
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (520 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 521/600] netfilter: xt_sctp: validate the flag_info count Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 523/600] igb: set max size RX buffer when store bad packet is enabled Greg Kroah-Hartman
` (88 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Mohamed Khalfella, Amit Goyal,
Eric Dumazet, David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mohamed Khalfella <mkhalfella@purestorage.com>
commit 2ea35288c83b3d501a88bc17f2df8f176b5cc96f upstream.
Commit bf5c25d60861 ("skbuff: in skb_segment, call zerocopy functions
once per nskb") added the call to zero copy functions in skb_segment().
The change introduced a bug in skb_segment() because skb_orphan_frags()
may possibly change the number of fragments or allocate new fragments
altogether leaving nrfrags and frag to point to the old values. This can
cause a panic with stacktrace like the one below.
[ 193.894380] BUG: kernel NULL pointer dereference, address: 00000000000000bc
[ 193.895273] CPU: 13 PID: 18164 Comm: vh-net-17428 Kdump: loaded Tainted: G O 5.15.123+ #26
[ 193.903919] RIP: 0010:skb_segment+0xb0e/0x12f0
[ 194.021892] Call Trace:
[ 194.027422] <TASK>
[ 194.072861] tcp_gso_segment+0x107/0x540
[ 194.082031] inet_gso_segment+0x15c/0x3d0
[ 194.090783] skb_mac_gso_segment+0x9f/0x110
[ 194.095016] __skb_gso_segment+0xc1/0x190
[ 194.103131] netem_enqueue+0x290/0xb10 [sch_netem]
[ 194.107071] dev_qdisc_enqueue+0x16/0x70
[ 194.110884] __dev_queue_xmit+0x63b/0xb30
[ 194.121670] bond_start_xmit+0x159/0x380 [bonding]
[ 194.128506] dev_hard_start_xmit+0xc3/0x1e0
[ 194.131787] __dev_queue_xmit+0x8a0/0xb30
[ 194.138225] macvlan_start_xmit+0x4f/0x100 [macvlan]
[ 194.141477] dev_hard_start_xmit+0xc3/0x1e0
[ 194.144622] sch_direct_xmit+0xe3/0x280
[ 194.147748] __dev_queue_xmit+0x54a/0xb30
[ 194.154131] tap_get_user+0x2a8/0x9c0 [tap]
[ 194.157358] tap_sendmsg+0x52/0x8e0 [tap]
[ 194.167049] handle_tx_zerocopy+0x14e/0x4c0 [vhost_net]
[ 194.173631] handle_tx+0xcd/0xe0 [vhost_net]
[ 194.176959] vhost_worker+0x76/0xb0 [vhost]
[ 194.183667] kthread+0x118/0x140
[ 194.190358] ret_from_fork+0x1f/0x30
[ 194.193670] </TASK>
In this case calling skb_orphan_frags() updated nr_frags leaving nrfrags
local variable in skb_segment() stale. This resulted in the code hitting
i >= nrfrags prematurely and trying to move to next frag_skb using
list_skb pointer, which was NULL, and caused kernel panic. Move the call
to zero copy functions before using frags and nr_frags.
Fixes: bf5c25d60861 ("skbuff: in skb_segment, call zerocopy functions once per nskb")
Signed-off-by: Mohamed Khalfella <mkhalfella@purestorage.com>
Reported-by: Amit Goyal <agoyal@purestorage.com>
Cc: stable@vger.kernel.org
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/core/skbuff.c | 34 ++++++++++++++++++++--------------
1 file changed, 20 insertions(+), 14 deletions(-)
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4135,21 +4135,20 @@ struct sk_buff *skb_segment(struct sk_bu
struct sk_buff *segs = NULL;
struct sk_buff *tail = NULL;
struct sk_buff *list_skb = skb_shinfo(head_skb)->frag_list;
- skb_frag_t *frag = skb_shinfo(head_skb)->frags;
unsigned int mss = skb_shinfo(head_skb)->gso_size;
unsigned int doffset = head_skb->data - skb_mac_header(head_skb);
- struct sk_buff *frag_skb = head_skb;
unsigned int offset = doffset;
unsigned int tnl_hlen = skb_tnl_header_len(head_skb);
unsigned int partial_segs = 0;
unsigned int headroom;
unsigned int len = head_skb->len;
+ struct sk_buff *frag_skb;
+ skb_frag_t *frag;
__be16 proto;
bool csum, sg;
- int nfrags = skb_shinfo(head_skb)->nr_frags;
int err = -ENOMEM;
int i = 0;
- int pos;
+ int nfrags, pos;
if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) &&
mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) {
@@ -4226,6 +4225,13 @@ normal:
headroom = skb_headroom(head_skb);
pos = skb_headlen(head_skb);
+ if (skb_orphan_frags(head_skb, GFP_ATOMIC))
+ return ERR_PTR(-ENOMEM);
+
+ nfrags = skb_shinfo(head_skb)->nr_frags;
+ frag = skb_shinfo(head_skb)->frags;
+ frag_skb = head_skb;
+
do {
struct sk_buff *nskb;
skb_frag_t *nskb_frag;
@@ -4246,6 +4252,10 @@ normal:
(skb_headlen(list_skb) == len || sg)) {
BUG_ON(skb_headlen(list_skb) > len);
+ nskb = skb_clone(list_skb, GFP_ATOMIC);
+ if (unlikely(!nskb))
+ goto err;
+
i = 0;
nfrags = skb_shinfo(list_skb)->nr_frags;
frag = skb_shinfo(list_skb)->frags;
@@ -4264,12 +4274,8 @@ normal:
frag++;
}
- nskb = skb_clone(list_skb, GFP_ATOMIC);
list_skb = list_skb->next;
- if (unlikely(!nskb))
- goto err;
-
if (unlikely(pskb_trim(nskb, len))) {
kfree_skb(nskb);
goto err;
@@ -4345,12 +4351,16 @@ normal:
skb_shinfo(nskb)->flags |= skb_shinfo(head_skb)->flags &
SKBFL_SHARED_FRAG;
- if (skb_orphan_frags(frag_skb, GFP_ATOMIC) ||
- skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC))
+ if (skb_zerocopy_clone(nskb, frag_skb, GFP_ATOMIC))
goto err;
while (pos < offset + len) {
if (i >= nfrags) {
+ if (skb_orphan_frags(list_skb, GFP_ATOMIC) ||
+ skb_zerocopy_clone(nskb, list_skb,
+ GFP_ATOMIC))
+ goto err;
+
i = 0;
nfrags = skb_shinfo(list_skb)->nr_frags;
frag = skb_shinfo(list_skb)->frags;
@@ -4364,10 +4374,6 @@ normal:
i--;
frag--;
}
- if (skb_orphan_frags(frag_skb, GFP_ATOMIC) ||
- skb_zerocopy_clone(nskb, frag_skb,
- GFP_ATOMIC))
- goto err;
list_skb = list_skb->next;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 523/600] igb: set max size RX buffer when store bad packet is enabled
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (521 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 522/600] skbuff: skb_segment, Call zero copy functions before using skbuff frags Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 524/600] PM / devfreq: Fix leak in devfreq_dev_release() Greg Kroah-Hartman
` (87 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Manfred Rudigier, Radoslaw Tyl,
Tony Nguyen, David S. Miller, Arpana Arland
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Radoslaw Tyl <radoslawx.tyl@intel.com>
commit bb5ed01cd2428cd25b1c88a3a9cba87055eb289f upstream.
Increase the RX buffer size to 3K when the SBP bit is on. The size of
the RX buffer determines the number of pages allocated which may not
be sufficient for receive frames larger than the set MTU size.
Cc: stable@vger.kernel.org
Fixes: 89eaefb61dc9 ("igb: Support RX-ALL feature flag.")
Reported-by: Manfred Rudigier <manfred.rudigier@omicronenergy.com>
Signed-off-by: Radoslaw Tyl <radoslawx.tyl@intel.com>
Tested-by: Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/intel/igb/igb_main.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4758,6 +4758,10 @@ void igb_configure_rx_ring(struct igb_ad
static void igb_set_rx_buffer_len(struct igb_adapter *adapter,
struct igb_ring *rx_ring)
{
+#if (PAGE_SIZE < 8192)
+ struct e1000_hw *hw = &adapter->hw;
+#endif
+
/* set build_skb and buffer size flags */
clear_ring_build_skb_enabled(rx_ring);
clear_ring_uses_large_buffer(rx_ring);
@@ -4768,10 +4772,9 @@ static void igb_set_rx_buffer_len(struct
set_ring_build_skb_enabled(rx_ring);
#if (PAGE_SIZE < 8192)
- if (adapter->max_frame_size <= IGB_MAX_FRAME_BUILD_SKB)
- return;
-
- set_ring_uses_large_buffer(rx_ring);
+ if (adapter->max_frame_size > IGB_MAX_FRAME_BUILD_SKB ||
+ rd32(E1000_RCTL) & E1000_RCTL_SBP)
+ set_ring_uses_large_buffer(rx_ring);
#endif
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 524/600] PM / devfreq: Fix leak in devfreq_dev_release()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (522 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 523/600] igb: set max size RX buffer when store bad packet is enabled Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 525/600] ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl Greg Kroah-Hartman
` (86 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Boris Brezillon, Dhruva Gole,
Chanwoo Choi
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Boris Brezillon <boris.brezillon@collabora.com>
commit 5693d077595de721f9ddbf9d37f40e5409707dfe upstream.
srcu_init_notifier_head() allocates resources that need to be released
with a srcu_cleanup_notifier_head() call.
Reported by kmemleak.
Fixes: 0fe3a66410a3 ("PM / devfreq: Add new DEVFREQ_TRANSITION_NOTIFIER notifier")
Cc: <stable@vger.kernel.org>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Dhruva Gole <d-gole@ti.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/devfreq/devfreq.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -763,6 +763,7 @@ static void devfreq_dev_release(struct d
dev_pm_opp_put_opp_table(devfreq->opp_table);
mutex_destroy(&devfreq->lock);
+ srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
kfree(devfreq);
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 525/600] ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (523 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 524/600] PM / devfreq: Fix leak in devfreq_dev_release() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 526/600] rcu: dump vmalloc memory info safely Greg Kroah-Hartman
` (85 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Meng_Cai, Takashi Sakamoto,
Jaroslav Kysela, Takashi Iwai
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <tiwai@suse.de>
commit 358040e3807754944dbddf948a23c6d914297ed7 upstream.
The update of rate_num/den and msbits were factored out to
fixup_unreferenced_params() function to be called explicitly after the
hw_refine or hw_params procedure. It's called from
snd_pcm_hw_refine_user(), but it's forgotten in the PCM compat ioctl.
This ended up with the incomplete rate_num/den and msbits parameters
when 32bit compat ioctl is used.
This patch adds the missing call in snd_pcm_ioctl_hw_params_compat().
Reported-by: Meng_Cai@novatek.com.cn
Fixes: f9a076bff053 ("ALSA: pcm: calculate non-mask/non-interval parameters always when possible")
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20230829134344.31588-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/core/pcm_compat.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
--- a/sound/core/pcm_compat.c
+++ b/sound/core/pcm_compat.c
@@ -253,10 +253,14 @@ static int snd_pcm_ioctl_hw_params_compa
goto error;
}
- if (refine)
+ if (refine) {
err = snd_pcm_hw_refine(substream, data);
- else
+ if (err < 0)
+ goto error;
+ err = fixup_unreferenced_params(substream, data);
+ } else {
err = snd_pcm_hw_params(substream, data);
+ }
if (err < 0)
goto error;
if (copy_to_user(data32, data, sizeof(*data32)) ||
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 526/600] rcu: dump vmalloc memory info safely
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (524 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 525/600] ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 527/600] printk: ringbuffer: Fix truncating buffer size min_t cast Greg Kroah-Hartman
` (84 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zqiang, Joel Fernandes (Google),
Zhen Lei, Matthew Wilcox (Oracle), Paul E. McKenney,
Uladzislau Rezki (Sony), Andrew Morton
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Zqiang <qiang.zhang1211@gmail.com>
commit c83ad36a18c02c0f51280b50272327807916987f upstream.
Currently, for double invoke call_rcu(), will dump rcu_head objects memory
info, if the objects is not allocated from the slab allocator, the
vmalloc_dump_obj() will be invoke and the vmap_area_lock spinlock need to
be held, since the call_rcu() can be invoked in interrupt context,
therefore, there is a possibility of spinlock deadlock scenarios.
And in Preempt-RT kernel, the rcutorture test also trigger the following
lockdep warning:
BUG: sleeping function called from invalid context at kernel/locking/spinlock_rt.c:48
in_atomic(): 1, irqs_disabled(): 1, non_block: 0, pid: 1, name: swapper/0
preempt_count: 1, expected: 0
RCU nest depth: 1, expected: 1
3 locks held by swapper/0/1:
#0: ffffffffb534ee80 (fullstop_mutex){+.+.}-{4:4}, at: torture_init_begin+0x24/0xa0
#1: ffffffffb5307940 (rcu_read_lock){....}-{1:3}, at: rcu_torture_init+0x1ec7/0x2370
#2: ffffffffb536af40 (vmap_area_lock){+.+.}-{3:3}, at: find_vmap_area+0x1f/0x70
irq event stamp: 565512
hardirqs last enabled at (565511): [<ffffffffb379b138>] __call_rcu_common+0x218/0x940
hardirqs last disabled at (565512): [<ffffffffb5804262>] rcu_torture_init+0x20b2/0x2370
softirqs last enabled at (399112): [<ffffffffb36b2586>] __local_bh_enable_ip+0x126/0x170
softirqs last disabled at (399106): [<ffffffffb43fef59>] inet_register_protosw+0x9/0x1d0
Preemption disabled at:
[<ffffffffb58040c3>] rcu_torture_init+0x1f13/0x2370
CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 6.5.0-rc4-rt2-yocto-preempt-rt+ #15
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.2-0-gea1b7a073390-prebuilt.qemu.org 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x68/0xb0
dump_stack+0x14/0x20
__might_resched+0x1aa/0x280
? __pfx_rcu_torture_err_cb+0x10/0x10
rt_spin_lock+0x53/0x130
? find_vmap_area+0x1f/0x70
find_vmap_area+0x1f/0x70
vmalloc_dump_obj+0x20/0x60
mem_dump_obj+0x22/0x90
__call_rcu_common+0x5bf/0x940
? debug_smp_processor_id+0x1b/0x30
call_rcu_hurry+0x14/0x20
rcu_torture_init+0x1f82/0x2370
? __pfx_rcu_torture_leak_cb+0x10/0x10
? __pfx_rcu_torture_leak_cb+0x10/0x10
? __pfx_rcu_torture_init+0x10/0x10
do_one_initcall+0x6c/0x300
? debug_smp_processor_id+0x1b/0x30
kernel_init_freeable+0x2b9/0x540
? __pfx_kernel_init+0x10/0x10
kernel_init+0x1f/0x150
ret_from_fork+0x40/0x50
? __pfx_kernel_init+0x10/0x10
ret_from_fork_asm+0x1b/0x30
</TASK>
The previous patch fixes this by using the deadlock-safe best-effort
version of find_vm_area. However, in case of failure print the fact that
the pointer was a vmalloc pointer so that we print at least something.
Link: https://lkml.kernel.org/r/20230904180806.1002832-2-joel@joelfernandes.org
Fixes: 98f180837a89 ("mm: Make mem_dump_obj() handle vmalloc() memory")
Signed-off-by: Zqiang <qiang.zhang1211@gmail.com>
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Reported-by: Zhen Lei <thunder.leizhen@huaweicloud.com>
Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Cc: Paul E. McKenney <paulmck@kernel.org>
Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
mm/util.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/mm/util.c
+++ b/mm/util.c
@@ -1127,7 +1127,9 @@ void mem_dump_obj(void *object)
if (vmalloc_dump_obj(object))
return;
- if (virt_addr_valid(object))
+ if (is_vmalloc_addr(object))
+ type = "vmalloc memory";
+ else if (virt_addr_valid(object))
type = "non-slab/vmalloc memory";
else if (object == NULL)
type = "NULL pointer";
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 527/600] printk: ringbuffer: Fix truncating buffer size min_t cast
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (525 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 526/600] rcu: dump vmalloc memory info safely Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 528/600] scsi: core: Fix the scsi_set_resid() documentation Greg Kroah-Hartman
` (83 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Petr Mladek, Sergey Senozhatsky,
Steven Rostedt, John Ogness, Vijay Balakrishna, Kees Cook,
Tyler Hicks (Microsoft), Guilherme G . Piccoli
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kees Cook <keescook@chromium.org>
commit 53e9e33ede37a247d926db5e4a9e56b55204e66c upstream.
If an output buffer size exceeded U16_MAX, the min_t(u16, ...) cast in
copy_data() was causing writes to truncate. This manifested as output
bytes being skipped, seen as %NUL bytes in pstore dumps when the available
record size was larger than 65536. Fix the cast to no longer truncate
the calculation.
Cc: Petr Mladek <pmladek@suse.com>
Cc: Sergey Senozhatsky <senozhatsky@chromium.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: John Ogness <john.ogness@linutronix.de>
Reported-by: Vijay Balakrishna <vijayb@linux.microsoft.com>
Link: https://lore.kernel.org/lkml/d8bb1ec7-a4c5-43a2-9de0-9643a70b899f@linux.microsoft.com/
Fixes: b6cf8b3f3312 ("printk: add lockless ringbuffer")
Cc: stable@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Tested-by: Vijay Balakrishna <vijayb@linux.microsoft.com>
Tested-by: Guilherme G. Piccoli <gpiccoli@igalia.com> # Steam Deck
Reviewed-by: Tyler Hicks (Microsoft) <code@tyhicks.com>
Tested-by: Tyler Hicks (Microsoft) <code@tyhicks.com>
Reviewed-by: John Ogness <john.ogness@linutronix.de>
Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Signed-off-by: Petr Mladek <pmladek@suse.com>
Link: https://lore.kernel.org/r/20230811054528.never.165-kees@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/printk/printk_ringbuffer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/kernel/printk/printk_ringbuffer.c
+++ b/kernel/printk/printk_ringbuffer.c
@@ -1735,7 +1735,7 @@ static bool copy_data(struct prb_data_ri
if (!buf || !buf_size)
return true;
- data_size = min_t(u16, buf_size, len);
+ data_size = min_t(unsigned int, buf_size, len);
memcpy(&buf[0], data, data_size); /* LMM(copy_data:A) */
return true;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 528/600] scsi: core: Fix the scsi_set_resid() documentation
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (526 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 527/600] printk: ringbuffer: Fix truncating buffer size min_t cast Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 529/600] mm/vmalloc: add a safer version of find_vm_area() for debug Greg Kroah-Hartman
` (82 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Damien Le Moal, Hannes Reinecke,
Douglas Gilbert, Bart Van Assche, Martin K. Petersen
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bart Van Assche <bvanassche@acm.org>
commit f669b8a683e4ee26fa5cafe19d71cec1786b556a upstream.
Because scsi_finish_command() subtracts the residual from the buffer
length, residual overflows must not be reported. Reflect this in the SCSI
documentation. See also commit 9237f04e12cc ("scsi: core: Fix
scsi_get/set_resid() interface")
Cc: Damien Le Moal <dlemoal@kernel.org>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Douglas Gilbert <dgilbert@interlog.com>
Cc: stable@vger.kernel.org
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230721160154.874010-2-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
Documentation/scsi/scsi_mid_low_api.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/Documentation/scsi/scsi_mid_low_api.rst
+++ b/Documentation/scsi/scsi_mid_low_api.rst
@@ -1190,11 +1190,11 @@ Members of interest:
- pointer to scsi_device object that this command is
associated with.
resid
- - an LLD should set this signed integer to the requested
+ - an LLD should set this unsigned integer to the requested
transfer length (i.e. 'request_bufflen') less the number
of bytes that are actually transferred. 'resid' is
preset to 0 so an LLD can ignore it if it cannot detect
- underruns (overruns should be rare). If possible an LLD
+ underruns (overruns should not be reported). An LLD
should set 'resid' prior to invoking 'done'. The most
interesting case is data transfers from a SCSI target
device (e.g. READs) that underrun.
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 529/600] mm/vmalloc: add a safer version of find_vm_area() for debug
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (527 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 528/600] scsi: core: Fix the scsi_set_resid() documentation Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 530/600] cpu/hotplug: Prevent self deadlock on CPU hot-unplug Greg Kroah-Hartman
` (81 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Joel Fernandes (Google),
Uladzislau Rezki (Sony), Zhen Lei, Paul E. McKenney, Zqiang,
Matthew Wilcox (Oracle), Andrew Morton
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Joel Fernandes (Google) <joel@joelfernandes.org>
commit 0818e739b5c061b0251c30152380600fb9b84c0c upstream.
It is unsafe to dump vmalloc area information when trying to do so from
some contexts. Add a safer trylock version of the same function to do a
best-effort VMA finding and use it from vmalloc_dump_obj().
[applied test robot feedback on unused function fix.]
[applied Uladzislau feedback on locking.]
Link: https://lkml.kernel.org/r/20230904180806.1002832-1-joel@joelfernandes.org
Fixes: 98f180837a89 ("mm: Make mem_dump_obj() handle vmalloc() memory")
Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
Reviewed-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Reported-by: Zhen Lei <thunder.leizhen@huaweicloud.com>
Cc: Paul E. McKenney <paulmck@kernel.org>
Cc: Zqiang <qiang.zhang1211@gmail.com>
Cc: <stable@vger.kernel.org>
Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
mm/vmalloc.c | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -4041,14 +4041,32 @@ void pcpu_free_vm_areas(struct vm_struct
#ifdef CONFIG_PRINTK
bool vmalloc_dump_obj(void *object)
{
- struct vm_struct *vm;
void *objp = (void *)PAGE_ALIGN((unsigned long)object);
+ const void *caller;
+ struct vm_struct *vm;
+ struct vmap_area *va;
+ unsigned long addr;
+ unsigned int nr_pages;
+
+ if (!spin_trylock(&vmap_area_lock))
+ return false;
+ va = __find_vmap_area((unsigned long)objp, &vmap_area_root);
+ if (!va) {
+ spin_unlock(&vmap_area_lock);
+ return false;
+ }
- vm = find_vm_area(objp);
- if (!vm)
+ vm = va->vm;
+ if (!vm) {
+ spin_unlock(&vmap_area_lock);
return false;
+ }
+ addr = (unsigned long)vm->addr;
+ caller = vm->caller;
+ nr_pages = vm->nr_pages;
+ spin_unlock(&vmap_area_lock);
pr_cont(" %u-page vmalloc region starting at %#lx allocated at %pS\n",
- vm->nr_pages, (unsigned long)vm->addr, vm->caller);
+ nr_pages, addr, caller);
return true;
}
#endif
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 530/600] cpu/hotplug: Prevent self deadlock on CPU hot-unplug
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (528 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 529/600] mm/vmalloc: add a safer version of find_vm_area() for debug Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 531/600] media: i2c: ccs: Check rules is non-NULL Greg Kroah-Hartman
` (80 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Xiongfeng Wang, Thomas Gleixner,
Yu Liao, Vincent Guittot
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Gleixner <tglx@linutronix.de>
commit 2b8272ff4a70b866106ae13c36be7ecbef5d5da2 upstream.
Xiongfeng reported and debugged a self deadlock of the task which initiates
and controls a CPU hot-unplug operation vs. the CFS bandwidth timer.
CPU1 CPU2
T1 sets cfs_quota
starts hrtimer cfs_bandwidth 'period_timer'
T1 is migrated to CPU2
T1 initiates offlining of CPU1
Hotplug operation starts
...
'period_timer' expires and is re-enqueued on CPU1
...
take_cpu_down()
CPU1 shuts down and does not handle timers
anymore. They have to be migrated in the
post dead hotplug steps by the control task.
T1 runs the post dead offline operation
T1 is scheduled out
T1 waits for 'period_timer' to expire
T1 waits there forever if it is scheduled out before it can execute the hrtimer
offline callback hrtimers_dead_cpu().
Cure this by delegating the hotplug control operation to a worker thread on
an online CPU. This takes the initiating user space task, which might be
affected by the bandwidth timer, completely out of the picture.
Reported-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Yu Liao <liaoyu15@huawei.com>
Acked-by: Vincent Guittot <vincent.guittot@linaro.org>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/lkml/8e785777-03aa-99e1-d20e-e956f5685be6@huawei.com
Link: https://lore.kernel.org/r/87h6oqdq0i.ffs@tglx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/cpu.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -1215,8 +1215,22 @@ out:
return ret;
}
+struct cpu_down_work {
+ unsigned int cpu;
+ enum cpuhp_state target;
+};
+
+static long __cpu_down_maps_locked(void *arg)
+{
+ struct cpu_down_work *work = arg;
+
+ return _cpu_down(work->cpu, 0, work->target);
+}
+
static int cpu_down_maps_locked(unsigned int cpu, enum cpuhp_state target)
{
+ struct cpu_down_work work = { .cpu = cpu, .target = target, };
+
/*
* If the platform does not support hotplug, report it explicitly to
* differentiate it from a transient offlining failure.
@@ -1225,7 +1239,15 @@ static int cpu_down_maps_locked(unsigned
return -EOPNOTSUPP;
if (cpu_hotplug_disabled)
return -EBUSY;
- return _cpu_down(cpu, 0, target);
+
+ /*
+ * Ensure that the control task does not run on the to be offlined
+ * CPU to prevent a deadlock against cfs_b->period_timer.
+ */
+ cpu = cpumask_any_but(cpu_online_mask, cpu);
+ if (cpu >= nr_cpu_ids)
+ return -EBUSY;
+ return work_on_cpu(cpu, __cpu_down_maps_locked, &work);
}
static int cpu_down(unsigned int cpu, enum cpuhp_state target)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 531/600] media: i2c: ccs: Check rules is non-NULL
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (529 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 530/600] cpu/hotplug: Prevent self deadlock on CPU hot-unplug Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 532/600] media: i2c: Add a camera sensor top level menu Greg Kroah-Hartman
` (79 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hans Verkuil, Sakari Ailus,
Mauro Carvalho Chehab
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sakari Ailus <sakari.ailus@linux.intel.com>
commit 607bcc4213d998d051541d8f10b5bbb7d546c0be upstream.
Fix the following smatch warning:
drivers/media/i2c/ccs/ccs-data.c:524 ccs_data_parse_rules() warn: address
of NULL pointer 'rules'
The CCS static data rule parser does not check an if rule has been
obtained before checking for other rule types (which depend on the if
rule). In practice this means parsing invalid CCS static data could lead
to dereferencing a NULL pointer.
Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Fixes: a6b396f410b1 ("media: ccs: Add CCS static data parser library")
Cc: stable@vger.kernel.org # for 5.11 and up
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/media/i2c/ccs/ccs-data.c | 101 +++++++++++++++++++++------------------
1 file changed, 56 insertions(+), 45 deletions(-)
--- a/drivers/media/i2c/ccs/ccs-data.c
+++ b/drivers/media/i2c/ccs/ccs-data.c
@@ -464,8 +464,7 @@ static int ccs_data_parse_rules(struct b
rule_payload = __rule_type + 1;
rule_plen2 = rule_plen - sizeof(*__rule_type);
- switch (*__rule_type) {
- case CCS_DATA_BLOCK_RULE_ID_IF: {
+ if (*__rule_type == CCS_DATA_BLOCK_RULE_ID_IF) {
const struct __ccs_data_block_rule_if *__if_rules =
rule_payload;
const size_t __num_if_rules =
@@ -514,49 +513,61 @@ static int ccs_data_parse_rules(struct b
rules->if_rules = if_rule;
rules->num_if_rules = __num_if_rules;
}
- break;
- }
- case CCS_DATA_BLOCK_RULE_ID_READ_ONLY_REGS:
- rval = ccs_data_parse_reg_rules(bin, &rules->read_only_regs,
- &rules->num_read_only_regs,
- rule_payload,
- rule_payload + rule_plen2,
- dev);
- if (rval)
- return rval;
- break;
- case CCS_DATA_BLOCK_RULE_ID_FFD:
- rval = ccs_data_parse_ffd(bin, &rules->frame_format,
- rule_payload,
- rule_payload + rule_plen2,
- dev);
- if (rval)
- return rval;
- break;
- case CCS_DATA_BLOCK_RULE_ID_MSR:
- rval = ccs_data_parse_reg_rules(bin,
- &rules->manufacturer_regs,
- &rules->num_manufacturer_regs,
- rule_payload,
- rule_payload + rule_plen2,
- dev);
- if (rval)
- return rval;
- break;
- case CCS_DATA_BLOCK_RULE_ID_PDAF_READOUT:
- rval = ccs_data_parse_pdaf_readout(bin,
- &rules->pdaf_readout,
- rule_payload,
- rule_payload + rule_plen2,
- dev);
- if (rval)
- return rval;
- break;
- default:
- dev_dbg(dev,
- "Don't know how to handle rule type %u!\n",
- *__rule_type);
- return -EINVAL;
+ } else {
+ /* Check there was an if rule before any other rules */
+ if (bin->base && !rules)
+ return -EINVAL;
+
+ switch (*__rule_type) {
+ case CCS_DATA_BLOCK_RULE_ID_READ_ONLY_REGS:
+ rval = ccs_data_parse_reg_rules(bin,
+ rules ?
+ &rules->read_only_regs : NULL,
+ rules ?
+ &rules->num_read_only_regs : NULL,
+ rule_payload,
+ rule_payload + rule_plen2,
+ dev);
+ if (rval)
+ return rval;
+ break;
+ case CCS_DATA_BLOCK_RULE_ID_FFD:
+ rval = ccs_data_parse_ffd(bin, rules ?
+ &rules->frame_format : NULL,
+ rule_payload,
+ rule_payload + rule_plen2,
+ dev);
+ if (rval)
+ return rval;
+ break;
+ case CCS_DATA_BLOCK_RULE_ID_MSR:
+ rval = ccs_data_parse_reg_rules(bin,
+ rules ?
+ &rules->manufacturer_regs : NULL,
+ rules ?
+ &rules->num_manufacturer_regs : NULL,
+ rule_payload,
+ rule_payload + rule_plen2,
+ dev);
+ if (rval)
+ return rval;
+ break;
+ case CCS_DATA_BLOCK_RULE_ID_PDAF_READOUT:
+ rval = ccs_data_parse_pdaf_readout(bin,
+ rules ?
+ &rules->pdaf_readout : NULL,
+ rule_payload,
+ rule_payload + rule_plen2,
+ dev);
+ if (rval)
+ return rval;
+ break;
+ default:
+ dev_dbg(dev,
+ "Don't know how to handle rule type %u!\n",
+ *__rule_type);
+ return -EINVAL;
+ }
}
__next_rule = __next_rule + rule_hlen + rule_plen;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 532/600] media: i2c: Add a camera sensor top level menu
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (530 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 531/600] media: i2c: ccs: Check rules is non-NULL Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 533/600] PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address Greg Kroah-Hartman
` (78 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hans de Goede, Sakari Ailus,
Laurent Pinchart, Mauro Carvalho Chehab
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sakari Ailus <sakari.ailus@linux.intel.com>
commit 7d3c7d2a2914e10bec3b9cdacdadb8e1f65f715a upstream.
Select V4L2_FWNODE and VIDEO_V4L2_SUBDEV_API for all sensor drivers. This
also adds the options to drivers that don't specifically need them, these
are still seldom used drivers using old APIs. The upside is that these
should now all compile --- many drivers have had missing dependencies.
The "menu" is replaced by selectable "menuconfig" to select the needed
V4L2_FWNODE and VIDEO_V4L2_SUBDEV_API options.
Also select MEDIA_CONTROLLER which VIDEO_V4L2_SUBDEV_API effectively
depends on, and add the I2C dependency to the menu.
Reported-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: stable@vger.kernel.org # for >= 6.1
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/media/i2c/Kconfig | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -25,8 +25,15 @@ config VIDEO_IR_I2C
# V4L2 I2C drivers that are related with Camera support
#
-menu "Camera sensor devices"
- visible if MEDIA_CAMERA_SUPPORT
+menuconfig VIDEO_CAMERA_SENSOR
+ bool "Camera sensor devices"
+ depends on MEDIA_CAMERA_SUPPORT && I2C
+ select MEDIA_CONTROLLER
+ select V4L2_FWNODE
+ select VIDEO_V4L2_SUBDEV_API
+ default y
+
+if VIDEO_CAMERA_SENSOR
config VIDEO_APTINA_PLL
tristate
@@ -783,7 +790,7 @@ source "drivers/media/i2c/ccs/Kconfig"
source "drivers/media/i2c/et8ek8/Kconfig"
source "drivers/media/i2c/m5mols/Kconfig"
-endmenu
+endif
menu "Lens drivers"
visible if MEDIA_CAMERA_SUPPORT
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 533/600] PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (531 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 532/600] media: i2c: Add a camera sensor top level menu Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 534/600] ipmi_si: fix a memleak in try_smi_init() Greg Kroah-Hartman
` (77 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dan Carpenter, Rick Wertenbroek,
Krzysztof Wilczyński, Damien Le Moal
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rick Wertenbroek <rick.wertenbroek@gmail.com>
commit cdb50033dd6dfcf02ae3d4ee56bc1a9555be6d36 upstream.
A 32-bit mask was used on the 64-bit PCI address used for mapping MSIs.
This would result in the upper 32 bits being unintentionally zeroed and
MSIs getting mapped to incorrect PCI addresses if the address had any
of the upper bits set.
Replace 32-bit mask by appropriate 64-bit mask.
[kwilczynski: use GENMASK_ULL() over GENMASK() for 32-bit compatibility]
Fixes: dc73ed0f1b8b ("PCI: rockchip: Fix window mapping and address translation for endpoint")
Closes: https://lore.kernel.org/linux-pci/8d19e5b7-8fa0-44a4-90e2-9bb06f5eb694@moroto.mountain
Link: https://lore.kernel.org/linux-pci/20230703085845.2052008-1-rick.wertenbroek@gmail.com
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Rick Wertenbroek <rick.wertenbroek@gmail.com>
Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/controller/pcie-rockchip.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/drivers/pci/controller/pcie-rockchip.h
+++ b/drivers/pci/controller/pcie-rockchip.h
@@ -158,7 +158,9 @@
#define PCIE_RC_CONFIG_THP_CAP (PCIE_RC_CONFIG_BASE + 0x274)
#define PCIE_RC_CONFIG_THP_CAP_NEXT_MASK GENMASK(31, 20)
-#define PCIE_ADDR_MASK 0xffffff00
+#define MAX_AXI_IB_ROOTPORT_REGION_NUM 3
+#define MIN_AXI_ADDR_BITS_PASSED 8
+#define PCIE_ADDR_MASK GENMASK_ULL(63, MIN_AXI_ADDR_BITS_PASSED)
#define PCIE_CORE_AXI_CONF_BASE 0xc00000
#define PCIE_CORE_OB_REGION_ADDR0 (PCIE_CORE_AXI_CONF_BASE + 0x0)
#define PCIE_CORE_OB_REGION_ADDR0_NUM_BITS 0x3f
@@ -185,8 +187,6 @@
#define AXI_WRAPPER_TYPE1_CFG 0xb
#define AXI_WRAPPER_NOR_MSG 0xc
-#define MAX_AXI_IB_ROOTPORT_REGION_NUM 3
-#define MIN_AXI_ADDR_BITS_PASSED 8
#define PCIE_RC_SEND_PME_OFF 0x11960
#define ROCKCHIP_VENDOR_ID 0x1d87
#define PCIE_LINK_IS_L2(x) \
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 534/600] ipmi_si: fix a memleak in try_smi_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (532 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 533/600] PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 535/600] ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() Greg Kroah-Hartman
` (76 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yi Yang, GONG, Ruiqi, Corey Minyard,
GONG
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yi Yang <yiyang13@huawei.com>
commit 6cf1a126de2992b4efe1c3c4d398f8de4aed6e3f upstream.
Kmemleak reported the following leak info in try_smi_init():
unreferenced object 0xffff00018ecf9400 (size 1024):
comm "modprobe", pid 2707763, jiffies 4300851415 (age 773.308s)
backtrace:
[<000000004ca5b312>] __kmalloc+0x4b8/0x7b0
[<00000000953b1072>] try_smi_init+0x148/0x5dc [ipmi_si]
[<000000006460d325>] 0xffff800081b10148
[<0000000039206ea5>] do_one_initcall+0x64/0x2a4
[<00000000601399ce>] do_init_module+0x50/0x300
[<000000003c12ba3c>] load_module+0x7a8/0x9e0
[<00000000c246fffe>] __se_sys_init_module+0x104/0x180
[<00000000eea99093>] __arm64_sys_init_module+0x24/0x30
[<0000000021b1ef87>] el0_svc_common.constprop.0+0x94/0x250
[<0000000070f4f8b7>] do_el0_svc+0x48/0xe0
[<000000005a05337f>] el0_svc+0x24/0x3c
[<000000005eb248d6>] el0_sync_handler+0x160/0x164
[<0000000030a59039>] el0_sync+0x160/0x180
The problem was that when an error occurred before handlers registration
and after allocating `new_smi->si_sm`, the variable wouldn't be freed in
the error handling afterwards since `shutdown_smi()` hadn't been
registered yet. Fix it by adding a `kfree()` in the error handling path
in `try_smi_init()`.
Cc: stable@vger.kernel.org # 4.19+
Fixes: 7960f18a5647 ("ipmi_si: Convert over to a shutdown handler")
Signed-off-by: Yi Yang <yiyang13@huawei.com>
Co-developed-by: GONG, Ruiqi <gongruiqi@huaweicloud.com>
Signed-off-by: GONG, Ruiqi <gongruiqi@huaweicloud.com>
Message-Id: <20230629123328.2402075-1-gongruiqi@huaweicloud.com>
Signed-off-by: Corey Minyard <minyard@acm.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/char/ipmi/ipmi_si_intf.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -2082,6 +2082,11 @@ static int try_smi_init(struct smi_info
new_smi->io.io_cleanup = NULL;
}
+ if (rv && new_smi->si_sm) {
+ kfree(new_smi->si_sm);
+ new_smi->si_sm = NULL;
+ }
+
return rv;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 535/600] ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (533 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 534/600] ipmi_si: fix a memleak in try_smi_init() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 536/600] XArray: Do not return sibling entries from xa_load() Greg Kroah-Hartman
` (75 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, kernel test robot,
Gustavo A. R. Silva, Ard Biesheuvel, Tony Lindgren
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gustavo A. R. Silva <gustavoars@kernel.org>
commit 847fb80cc01a54bc827b02547bb8743bdb59ddab upstream.
If function pwrdm_read_prev_pwrst() returns -EINVAL, we will end
up accessing array pwrdm->state_counter through negative index
-22. This is wrong and the compiler is legitimately warning us
about this potential problem.
Fix this by sanity checking the value stored in variable _prev_
before accessing array pwrdm->state_counter.
Address the following -Warray-bounds warning:
arch/arm/mach-omap2/powerdomain.c:178:45: warning: array subscript -22 is below array bounds of 'unsigned int[4]' [-Warray-bounds]
Link: https://github.com/KSPP/linux/issues/307
Fixes: ba20bb126940 ("OMAP: PM counter infrastructure.")
Cc: stable@vger.kernel.org
Reported-by: kernel test robot <lkp@intel.com>
Link: https://lore.kernel.org/lkml/20230607050639.LzbPn%25lkp@intel.com/
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Message-ID: <ZIFVGwImU3kpaGeH@work>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm/mach-omap2/powerdomain.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -174,7 +174,7 @@ static int _pwrdm_state_switch(struct po
break;
case PWRDM_STATE_PREV:
prev = pwrdm_read_prev_pwrst(pwrdm);
- if (pwrdm->state != prev)
+ if (prev >= 0 && pwrdm->state != prev)
pwrdm->state_counter[prev]++;
if (prev == PWRDM_POWER_RET)
_update_logic_membank_counters(pwrdm);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 536/600] XArray: Do not return sibling entries from xa_load()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (534 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 535/600] ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 537/600] io_uring: break iopolling on signal Greg Kroah-Hartman
` (74 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Matthew Wilcox (Oracle)
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matthew Wilcox (Oracle) <willy@infradead.org>
commit cbc02854331edc6dc22d8b77b6e22e38ebc7dd51 upstream.
It is possible for xa_load() to observe a sibling entry pointing to
another sibling entry. An example:
Thread A: Thread B:
xa_store_range(xa, entry, 188, 191, gfp);
xa_load(xa, 191);
entry = xa_entry(xa, node, 63);
[entry is a sibling of 188]
xa_store_range(xa, entry, 184, 191, gfp);
if (xa_is_sibling(entry))
offset = xa_to_sibling(entry);
entry = xa_entry(xas->xa, node, offset);
[entry is now a sibling of 184]
It is sufficient to go around this loop until we hit a non-sibling entry.
Sibling entries always point earlier in the node, so we are guaranteed
to terminate this search.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Fixes: 6b24ca4a1a8d ("mm: Use multi-index entries in the page cache")
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
lib/xarray.c | 2 -
tools/testing/radix-tree/multiorder.c | 68 +++++++++++++++++++++++++++++++++-
2 files changed, 67 insertions(+), 3 deletions(-)
--- a/lib/xarray.c
+++ b/lib/xarray.c
@@ -204,7 +204,7 @@ static void *xas_descend(struct xa_state
void *entry = xa_entry(xas->xa, node, offset);
xas->xa_node = node;
- if (xa_is_sibling(entry)) {
+ while (xa_is_sibling(entry)) {
offset = xa_to_sibling(entry);
entry = xa_entry(xas->xa, node, offset);
if (node->shift && xa_is_node(entry))
--- a/tools/testing/radix-tree/multiorder.c
+++ b/tools/testing/radix-tree/multiorder.c
@@ -159,7 +159,7 @@ void multiorder_tagged_iteration(struct
item_kill_tree(xa);
}
-bool stop_iteration = false;
+bool stop_iteration;
static void *creator_func(void *ptr)
{
@@ -201,6 +201,7 @@ static void multiorder_iteration_race(st
pthread_t worker_thread[num_threads];
int i;
+ stop_iteration = false;
pthread_create(&worker_thread[0], NULL, &creator_func, xa);
for (i = 1; i < num_threads; i++)
pthread_create(&worker_thread[i], NULL, &iterator_func, xa);
@@ -211,6 +212,61 @@ static void multiorder_iteration_race(st
item_kill_tree(xa);
}
+static void *load_creator(void *ptr)
+{
+ /* 'order' is set up to ensure we have sibling entries */
+ unsigned int order;
+ struct radix_tree_root *tree = ptr;
+ int i;
+
+ rcu_register_thread();
+ item_insert_order(tree, 3 << RADIX_TREE_MAP_SHIFT, 0);
+ item_insert_order(tree, 2 << RADIX_TREE_MAP_SHIFT, 0);
+ for (i = 0; i < 10000; i++) {
+ for (order = 1; order < RADIX_TREE_MAP_SHIFT; order++) {
+ unsigned long index = (3 << RADIX_TREE_MAP_SHIFT) -
+ (1 << order);
+ item_insert_order(tree, index, order);
+ item_delete_rcu(tree, index);
+ }
+ }
+ rcu_unregister_thread();
+
+ stop_iteration = true;
+ return NULL;
+}
+
+static void *load_worker(void *ptr)
+{
+ unsigned long index = (3 << RADIX_TREE_MAP_SHIFT) - 1;
+
+ rcu_register_thread();
+ while (!stop_iteration) {
+ struct item *item = xa_load(ptr, index);
+ assert(!xa_is_internal(item));
+ }
+ rcu_unregister_thread();
+
+ return NULL;
+}
+
+static void load_race(struct xarray *xa)
+{
+ const int num_threads = sysconf(_SC_NPROCESSORS_ONLN) * 4;
+ pthread_t worker_thread[num_threads];
+ int i;
+
+ stop_iteration = false;
+ pthread_create(&worker_thread[0], NULL, &load_creator, xa);
+ for (i = 1; i < num_threads; i++)
+ pthread_create(&worker_thread[i], NULL, &load_worker, xa);
+
+ for (i = 0; i < num_threads; i++)
+ pthread_join(worker_thread[i], NULL);
+
+ item_kill_tree(xa);
+}
+
static DEFINE_XARRAY(array);
void multiorder_checks(void)
@@ -218,12 +274,20 @@ void multiorder_checks(void)
multiorder_iteration(&array);
multiorder_tagged_iteration(&array);
multiorder_iteration_race(&array);
+ load_race(&array);
radix_tree_cpu_dead(0);
}
-int __weak main(void)
+int __weak main(int argc, char **argv)
{
+ int opt;
+
+ while ((opt = getopt(argc, argv, "ls:v")) != -1) {
+ if (opt == 'v')
+ test_verbose++;
+ }
+
rcu_register_thread();
radix_tree_init();
multiorder_checks();
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 537/600] io_uring: break iopolling on signal
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (535 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 536/600] XArray: Do not return sibling entries from xa_load() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 538/600] backlight/gpio_backlight: Compare against struct fb_info.device Greg Kroah-Hartman
` (73 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Pavel Begunkov, Jens Axboe
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pavel Begunkov <asml.silence@gmail.com>
commit dc314886cb3d0e4ab2858003e8de2917f8a3ccbd upstream.
Don't keep spinning iopoll with a signal set. It'll eventually return
back, e.g. by virtue of need_resched(), but it's not a nice user
experience.
Cc: stable@vger.kernel.org
Fixes: def596e9557c9 ("io_uring: support for IO polling")
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/eeba551e82cad12af30c3220125eb6cb244cc94c.1691594339.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
io_uring/io_uring.c | 3 +++
1 file changed, 3 insertions(+)
--- a/io_uring/io_uring.c
+++ b/io_uring/io_uring.c
@@ -1457,6 +1457,9 @@ static int io_iopoll_check(struct io_rin
break;
nr_events += ret;
ret = 0;
+
+ if (task_sigpending(current))
+ return -EINTR;
} while (nr_events < min && !need_resched());
return ret;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 538/600] backlight/gpio_backlight: Compare against struct fb_info.device
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (536 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 537/600] io_uring: break iopolling on signal Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 539/600] backlight/bd6107: " Greg Kroah-Hartman
` (72 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thomas Zimmermann, Laurent Pinchart,
Rich Felker, John Paul Adrian Glaubitz, Lee Jones,
Daniel Thompson, Jingoo Han, linux-sh, dri-devel, Sam Ravnborg
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
commit 7b91d017f77c1bda56f27c2f4bbb70de7c6eca08 upstream.
Struct gpio_backlight_platform_data refers to a platform device within
the Linux device hierarchy. The test in gpio_backlight_check_fb()
compares it against the fbdev device in struct fb_info.dev, which
is different. Fix the test by comparing to struct fb_info.device.
Fixes a bug in the backlight driver and prepares fbdev for making
struct fb_info.dev optional.
v2:
* move renames into separate patch (Javier, Sam, Michael)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 8b770e3c9824 ("backlight: Add GPIO-based backlight driver")
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Rich Felker <dalias@libc.org>
Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Lee Jones <lee@kernel.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: linux-sh@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.12+
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613110953.24176-4-tzimmermann@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/video/backlight/gpio_backlight.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/video/backlight/gpio_backlight.c
+++ b/drivers/video/backlight/gpio_backlight.c
@@ -35,7 +35,7 @@ static int gpio_backlight_check_fb(struc
{
struct gpio_backlight *gbl = bl_get_data(bl);
- return gbl->fbdev == NULL || gbl->fbdev == info->dev;
+ return gbl->fbdev == NULL || gbl->fbdev == info->device;
}
static const struct backlight_ops gpio_backlight_ops = {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 539/600] backlight/bd6107: Compare against struct fb_info.device
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (537 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 538/600] backlight/gpio_backlight: Compare against struct fb_info.device Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 540/600] backlight/lv5207lp: " Greg Kroah-Hartman
` (71 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thomas Zimmermann, Laurent Pinchart,
Lee Jones, Daniel Thompson, Jingoo Han, dri-devel,
Javier Martinez Canillas, Sam Ravnborg
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
commit 992bdddaabfba19bdc77c1c7a4977b2aa41ec891 upstream.
Struct bd6107_platform_data refers to a platform device within
the Linux device hierarchy. The test in bd6107_backlight_check_fb()
compares it against the fbdev device in struct fb_info.dev, which
is different. Fix the test by comparing to struct fb_info.device.
Fixes a bug in the backlight driver and prepares fbdev for making
struct fb_info.dev optional.
v2:
* move renames into separate patch (Javier, Sam, Michael)
Fixes: 67b43e590415 ("backlight: Add ROHM BD6107 backlight driver")
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Lee Jones <lee@kernel.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.12+
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613110953.24176-2-tzimmermann@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/video/backlight/bd6107.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/video/backlight/bd6107.c
+++ b/drivers/video/backlight/bd6107.c
@@ -104,7 +104,7 @@ static int bd6107_backlight_check_fb(str
{
struct bd6107 *bd = bl_get_data(backlight);
- return bd->pdata->fbdev == NULL || bd->pdata->fbdev == info->dev;
+ return bd->pdata->fbdev == NULL || bd->pdata->fbdev == info->device;
}
static const struct backlight_ops bd6107_backlight_ops = {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 540/600] backlight/lv5207lp: Compare against struct fb_info.device
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (538 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 539/600] backlight/bd6107: " Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 541/600] drm/amd/display: register edp_backlight_control() for DCN301 Greg Kroah-Hartman
` (70 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Thomas Zimmermann, Laurent Pinchart,
Yoshinori Sato, Rich Felker, John Paul Adrian Glaubitz, Lee Jones,
Daniel Thompson, Jingoo Han, linux-sh, dri-devel,
Javier Martinez Canillas, Sam Ravnborg
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
commit 1ca8819320fd84e7d95b04e7668efc5f9fe9fa5c upstream.
Struct lv5207lp_platform_data refers to a platform device within
the Linux device hierarchy. The test in lv5207lp_backlight_check_fb()
compares it against the fbdev device in struct fb_info.dev, which
is different. Fix the test by comparing to struct fb_info.device.
Fixes a bug in the backlight driver and prepares fbdev for making
struct fb_info.dev optional.
v2:
* move renames into separate patch (Javier, Sam, Michael)
Fixes: 82e5c40d88f9 ("backlight: Add Sanyo LV5207LP backlight driver")
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: Rich Felker <dalias@libc.org>
Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Cc: Lee Jones <lee@kernel.org>
Cc: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Jingoo Han <jingoohan1@gmail.com>
Cc: linux-sh@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v3.12+
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613110953.24176-6-tzimmermann@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/video/backlight/lv5207lp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/video/backlight/lv5207lp.c
+++ b/drivers/video/backlight/lv5207lp.c
@@ -67,7 +67,7 @@ static int lv5207lp_backlight_check_fb(s
{
struct lv5207lp *lv = bl_get_data(backlight);
- return lv->pdata->fbdev == NULL || lv->pdata->fbdev == info->dev;
+ return lv->pdata->fbdev == NULL || lv->pdata->fbdev == info->device;
}
static const struct backlight_ops lv5207lp_backlight_ops = {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 541/600] drm/amd/display: register edp_backlight_control() for DCN301
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (539 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 540/600] backlight/lv5207lp: " Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 542/600] xtensa: PMU: fix base address for the newer hardware Greg Kroah-Hartman
` (69 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Swapnil Patel, Harry Wentland,
Hamza Mahfooz, Alex Deucher
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hamza Mahfooz <hamza.mahfooz@amd.com>
commit 1611917f39bee1abfc01501238db8ac19649042d upstream.
As made mention of in commit 099303e9a9bd ("drm/amd/display: eDP
intermittent black screen during PnP"), we need to turn off the
display's backlight before powering off an eDP display. Not doing so
will result in undefined behaviour according to the eDP spec. So, set
DCN301's edp_backlight_control() function pointer to
dce110_edp_backlight_control().
Cc: stable@vger.kernel.org
Link: https://gitlab.freedesktop.org/drm/amd/-/issues/2765
Fixes: 9c75891feef0 ("drm/amd/display: rework recent update PHY state commit")
Suggested-by: Swapnil Patel <swapnil.patel@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_init.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_init.c b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_init.c
index 257df8660b4c..61205cdbe2d5 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_init.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn301/dcn301_init.c
@@ -75,6 +75,7 @@ static const struct hw_sequencer_funcs dcn301_funcs = {
.get_hw_state = dcn10_get_hw_state,
.clear_status_bits = dcn10_clear_status_bits,
.wait_for_mpcc_disconnect = dcn10_wait_for_mpcc_disconnect,
+ .edp_backlight_control = dce110_edp_backlight_control,
.edp_power_control = dce110_edp_power_control,
.edp_wait_for_hpd_ready = dce110_edp_wait_for_hpd_ready,
.set_cursor_position = dcn10_set_cursor_position,
--
2.42.0
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 542/600] xtensa: PMU: fix base address for the newer hardware
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (540 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 541/600] drm/amd/display: register edp_backlight_control() for DCN301 Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 543/600] LoongArch: mm: Add p?d_leaf() definitions Greg Kroah-Hartman
` (68 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Max Filippov
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Max Filippov <jcmvbkbc@gmail.com>
commit 687eb3c42f4ad81e7c947c50e2d865f692064291 upstream.
With introduction of ERI access control in RG.0 base address of the PMU
unit registers has changed. Add support for the new PMU configuration.
Cc: stable@vger.kernel.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/xtensa/include/asm/core.h | 9 +++++++++
arch/xtensa/kernel/perf_event.c | 17 +++++++++++++----
2 files changed, 22 insertions(+), 4 deletions(-)
--- a/arch/xtensa/include/asm/core.h
+++ b/arch/xtensa/include/asm/core.h
@@ -44,4 +44,13 @@
#define XTENSA_STACK_ALIGNMENT 16
#endif
+#ifndef XCHAL_HW_MIN_VERSION
+#if defined(XCHAL_HW_MIN_VERSION_MAJOR) && defined(XCHAL_HW_MIN_VERSION_MINOR)
+#define XCHAL_HW_MIN_VERSION (XCHAL_HW_MIN_VERSION_MAJOR * 100 + \
+ XCHAL_HW_MIN_VERSION_MINOR)
+#else
+#define XCHAL_HW_MIN_VERSION 0
+#endif
+#endif
+
#endif
--- a/arch/xtensa/kernel/perf_event.c
+++ b/arch/xtensa/kernel/perf_event.c
@@ -13,17 +13,26 @@
#include <linux/perf_event.h>
#include <linux/platform_device.h>
+#include <asm/core.h>
#include <asm/processor.h>
#include <asm/stacktrace.h>
+#define XTENSA_HWVERSION_RG_2015_0 260000
+
+#if XCHAL_HW_MIN_VERSION >= XTENSA_HWVERSION_RG_2015_0
+#define XTENSA_PMU_ERI_BASE 0x00101000
+#else
+#define XTENSA_PMU_ERI_BASE 0x00001000
+#endif
+
/* Global control/status for all perf counters */
-#define XTENSA_PMU_PMG 0x1000
+#define XTENSA_PMU_PMG XTENSA_PMU_ERI_BASE
/* Perf counter values */
-#define XTENSA_PMU_PM(i) (0x1080 + (i) * 4)
+#define XTENSA_PMU_PM(i) (XTENSA_PMU_ERI_BASE + 0x80 + (i) * 4)
/* Perf counter control registers */
-#define XTENSA_PMU_PMCTRL(i) (0x1100 + (i) * 4)
+#define XTENSA_PMU_PMCTRL(i) (XTENSA_PMU_ERI_BASE + 0x100 + (i) * 4)
/* Perf counter status registers */
-#define XTENSA_PMU_PMSTAT(i) (0x1180 + (i) * 4)
+#define XTENSA_PMU_PMSTAT(i) (XTENSA_PMU_ERI_BASE + 0x180 + (i) * 4)
#define XTENSA_PMU_PMG_PMEN 0x1
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 543/600] LoongArch: mm: Add p?d_leaf() definitions
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (541 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 542/600] xtensa: PMU: fix base address for the newer hardware Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 544/600] i3c: master: svc: fix probe failure when no i3c device exist Greg Kroah-Hartman
` (67 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, David Hildenbrand, Hongchen Zhang,
Huacai Chen
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hongchen Zhang <zhanghongchen@loongson.cn>
commit 303be4b33562a5b689261ced1616bf16ad49efa7 upstream.
When I do LTP test, LTP test case ksm06 caused panic at
break_ksm_pmd_entry
-> pmd_leaf (Huge page table but False)
-> pte_present (panic)
The reason is pmd_leaf() is not defined, So like commit 501b81046701
("mips: mm: add p?d_leaf() definitions") add p?d_leaf() definition for
LoongArch.
Fixes: 09cfefb7fa70 ("LoongArch: Add memory management")
Cc: stable@vger.kernel.org
Acked-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Hongchen Zhang <zhanghongchen@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/loongarch/include/asm/pgtable.h | 3 +++
1 file changed, 3 insertions(+)
--- a/arch/loongarch/include/asm/pgtable.h
+++ b/arch/loongarch/include/asm/pgtable.h
@@ -560,6 +560,9 @@ static inline long pmd_protnone(pmd_t pm
}
#endif /* CONFIG_NUMA_BALANCING */
+#define pmd_leaf(pmd) ((pmd_val(pmd) & _PAGE_HUGE) != 0)
+#define pud_leaf(pud) ((pud_val(pud) & _PAGE_HUGE) != 0)
+
/*
* We provide our own get_unmapped area to cope with the virtual aliasing
* constraints placed on us by the cache architecture.
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 544/600] i3c: master: svc: fix probe failure when no i3c device exist
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (542 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 543/600] LoongArch: mm: Add p?d_leaf() definitions Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 545/600] arm64: csum: Fix OoB access in IP checksum code for negative lengths Greg Kroah-Hartman
` (66 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Frank Li, Miquel Raynal,
Alexandre Belloni
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Frank Li <Frank.Li@nxp.com>
commit 6e13d6528be2f7e801af63c8153b87293f25d736 upstream.
I3C masters are expected to support hot-join. This means at initialization
time we might not yet discover any device and this should not be treated
as a fatal error.
During the DAA procedure which happens at probe time, if no device has
joined, all CCC will be NACKed (from a bus perspective). This leads to an
early return with an error code which fails the probe of the master.
Let's avoid this by just telling the core through an I3C_ERROR_M2
return command code that no device was discovered, which is a valid
situation. This way the master will no longer bail out and fail to probe
for a wrong reason.
Cc: stable@vger.kernel.org
Fixes: dd3c52846d59 ("i3c: master: svc: Add Silvaco I3C master driver")
Signed-off-by: Frank Li <Frank.Li@nxp.com>
Acked-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/r/20230831141324.2841525-1-Frank.Li@nxp.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/i3c/master/svc-i3c-master.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
--- a/drivers/i3c/master/svc-i3c-master.c
+++ b/drivers/i3c/master/svc-i3c-master.c
@@ -782,6 +782,10 @@ static int svc_i3c_master_do_daa_locked(
*/
break;
} else if (SVC_I3C_MSTATUS_NACKED(reg)) {
+ /* No I3C devices attached */
+ if (dev_nb == 0)
+ break;
+
/*
* A slave device nacked the address, this is
* allowed only once, DAA will be stopped and
@@ -1251,11 +1255,17 @@ static int svc_i3c_master_send_ccc_cmd(s
{
struct svc_i3c_master *master = to_svc_i3c_master(m);
bool broadcast = cmd->id < 0x80;
+ int ret;
if (broadcast)
- return svc_i3c_master_send_bdcast_ccc_cmd(master, cmd);
+ ret = svc_i3c_master_send_bdcast_ccc_cmd(master, cmd);
else
- return svc_i3c_master_send_direct_ccc_cmd(master, cmd);
+ ret = svc_i3c_master_send_direct_ccc_cmd(master, cmd);
+
+ if (ret)
+ cmd->err = I3C_ERROR_M2;
+
+ return ret;
}
static int svc_i3c_master_priv_xfers(struct i3c_dev_desc *dev,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 545/600] arm64: csum: Fix OoB access in IP checksum code for negative lengths
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (543 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 544/600] i3c: master: svc: fix probe failure when no i3c device exist Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 546/600] ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs Greg Kroah-Hartman
` (65 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Robin Murphy,
syzbot+4a9f9820bd8d302e22f7, Will Deacon
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Will Deacon <will@kernel.org>
commit 8bd795fedb8450ecbef18eeadbd23ed8fc7630f5 upstream.
Although commit c2c24edb1d9c ("arm64: csum: Fix pathological zero-length
calls") added an early return for zero-length input, syzkaller has
popped up with an example of a _negative_ length which causes an
undefined shift and an out-of-bounds read:
| BUG: KASAN: slab-out-of-bounds in do_csum+0x44/0x254 arch/arm64/lib/csum.c:39
| Read of size 4294966928 at addr ffff0000d7ac0170 by task syz-executor412/5975
|
| CPU: 0 PID: 5975 Comm: syz-executor412 Not tainted 6.4.0-rc4-syzkaller-g908f31f2a05b #0
| Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/25/2023
| Call trace:
| dump_backtrace+0x1b8/0x1e4 arch/arm64/kernel/stacktrace.c:233
| show_stack+0x2c/0x44 arch/arm64/kernel/stacktrace.c:240
| __dump_stack lib/dump_stack.c:88 [inline]
| dump_stack_lvl+0xd0/0x124 lib/dump_stack.c:106
| print_address_description mm/kasan/report.c:351 [inline]
| print_report+0x174/0x514 mm/kasan/report.c:462
| kasan_report+0xd4/0x130 mm/kasan/report.c:572
| kasan_check_range+0x264/0x2a4 mm/kasan/generic.c:187
| __kasan_check_read+0x20/0x30 mm/kasan/shadow.c:31
| do_csum+0x44/0x254 arch/arm64/lib/csum.c:39
| csum_partial+0x30/0x58 lib/checksum.c:128
| gso_make_checksum include/linux/skbuff.h:4928 [inline]
| __udp_gso_segment+0xaf4/0x1bc4 net/ipv4/udp_offload.c:332
| udp6_ufo_fragment+0x540/0xca0 net/ipv6/udp_offload.c:47
| ipv6_gso_segment+0x5cc/0x1760 net/ipv6/ip6_offload.c:119
| skb_mac_gso_segment+0x2b4/0x5b0 net/core/gro.c:141
| __skb_gso_segment+0x250/0x3d0 net/core/dev.c:3401
| skb_gso_segment include/linux/netdevice.h:4859 [inline]
| validate_xmit_skb+0x364/0xdbc net/core/dev.c:3659
| validate_xmit_skb_list+0x94/0x130 net/core/dev.c:3709
| sch_direct_xmit+0xe8/0x548 net/sched/sch_generic.c:327
| __dev_xmit_skb net/core/dev.c:3805 [inline]
| __dev_queue_xmit+0x147c/0x3318 net/core/dev.c:4210
| dev_queue_xmit include/linux/netdevice.h:3085 [inline]
| packet_xmit+0x6c/0x318 net/packet/af_packet.c:276
| packet_snd net/packet/af_packet.c:3081 [inline]
| packet_sendmsg+0x376c/0x4c98 net/packet/af_packet.c:3113
| sock_sendmsg_nosec net/socket.c:724 [inline]
| sock_sendmsg net/socket.c:747 [inline]
| __sys_sendto+0x3b4/0x538 net/socket.c:2144
Extend the early return to reject negative lengths as well, aligning our
implementation with the generic code in lib/checksum.c
Cc: Robin Murphy <robin.murphy@arm.com>
Fixes: 5777eaed566a ("arm64: Implement optimised checksum routine")
Reported-by: syzbot+4a9f9820bd8d302e22f7@syzkaller.appspotmail.com
Link: https://lore.kernel.org/r/000000000000e0e94c0603f8d213@google.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm64/lib/csum.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/lib/csum.c
+++ b/arch/arm64/lib/csum.c
@@ -24,7 +24,7 @@ unsigned int __no_sanitize_address do_cs
const u64 *ptr;
u64 data, sum64 = 0;
- if (unlikely(len == 0))
+ if (unlikely(len <= 0))
return 0;
offset = (unsigned long)buff & 7;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 546/600] ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs.
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (544 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 545/600] arm64: csum: Fix OoB access in IP checksum code for negative lengths Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 547/600] media: dvb: symbol fixup for dvb_attach() Greg Kroah-Hartman
` (64 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Vitaly Rodionov, Takashi Iwai
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
commit 99bf5b0baac941176a6a3d5cef7705b29808de34 upstream.
Recently in v6.3-rc1 there was a change affecting behaviour of hrtimers
(commit 0c52310f260014d95c1310364379772cb74cf82d) and causing
few issues on platforms with two CS42L42 codecs. Canonical/Dell
has reported an issue with Vostro-3910.
We need to increase this value by 15ms.
Link: https://bugs.launchpad.net/somerville/+bug/2031060
Fixes: 9fb9fa18fb50 ("ALSA: hda/cirrus: Add extra 10 ms delay to allow PLL settle and lock.")
Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230904160033.908135-1-vitalyr@opensource.cirrus.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
sound/pci/hda/patch_cs8409.c | 2 +-
sound/pci/hda/patch_cs8409.h | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
--- a/sound/pci/hda/patch_cs8409.c
+++ b/sound/pci/hda/patch_cs8409.c
@@ -888,7 +888,7 @@ static void cs42l42_resume(struct sub_co
/* Initialize CS42L42 companion codec */
cs8409_i2c_bulk_write(cs42l42, cs42l42->init_seq, cs42l42->init_seq_num);
- usleep_range(30000, 35000);
+ msleep(CS42L42_INIT_TIMEOUT_MS);
/* Clear interrupts, by reading interrupt status registers */
cs8409_i2c_bulk_read(cs42l42, irq_regs, ARRAY_SIZE(irq_regs));
--- a/sound/pci/hda/patch_cs8409.h
+++ b/sound/pci/hda/patch_cs8409.h
@@ -229,6 +229,7 @@ enum cs8409_coefficient_index_registers
#define CS42L42_I2C_SLEEP_US (2000)
#define CS42L42_PDN_TIMEOUT_US (250000)
#define CS42L42_PDN_SLEEP_US (2000)
+#define CS42L42_INIT_TIMEOUT_MS (45)
#define CS42L42_FULL_SCALE_VOL_MASK (2)
#define CS42L42_FULL_SCALE_VOL_0DB (1)
#define CS42L42_FULL_SCALE_VOL_MINUS6DB (0)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 547/600] media: dvb: symbol fixup for dvb_attach()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (545 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 546/600] ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 548/600] media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts Greg Kroah-Hartman
` (63 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, stable, Stefan Lippers-Hollmann,
Mauro Carvalho Chehab, Christoph Hellwig, linux-media,
linux-modules, Luis Chamberlain, Hans Verkuil
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
commit 86495af1171e1feec79faa9b64c05c89f46e41d1 upstream.
In commit 9011e49d54dc ("modules: only allow symbol_get of
EXPORT_SYMBOL_GPL modules") the use of symbol_get is properly restricted
to GPL-only marked symbols. This interacts oddly with the DVB logic
which only uses dvb_attach() to load the dvb driver which then uses
symbol_get().
Fix this up by properly marking all of the dvb_attach attach symbols as
EXPORT_SYMBOL_GPL().
Fixes: 9011e49d54dc ("modules: only allow symbol_get of EXPORT_SYMBOL_GPL modules")
Cc: stable <stable@kernel.org>
Reported-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Cc: linux-media@vger.kernel.org
Cc: linux-modules@vger.kernel.org
Acked-by: Luis Chamberlain <mcgrof@kernel.org>
Acked-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Link: https://lore.kernel.org/r/20230908092035.3815268-2-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/media/dvb-frontends/ascot2e.c | 2 +-
drivers/media/dvb-frontends/atbm8830.c | 2 +-
drivers/media/dvb-frontends/au8522_dig.c | 2 +-
drivers/media/dvb-frontends/bcm3510.c | 2 +-
drivers/media/dvb-frontends/cx22700.c | 2 +-
drivers/media/dvb-frontends/cx22702.c | 2 +-
drivers/media/dvb-frontends/cx24110.c | 2 +-
drivers/media/dvb-frontends/cx24113.c | 2 +-
drivers/media/dvb-frontends/cx24116.c | 2 +-
drivers/media/dvb-frontends/cx24120.c | 2 +-
drivers/media/dvb-frontends/cx24123.c | 2 +-
drivers/media/dvb-frontends/cxd2820r_core.c | 2 +-
drivers/media/dvb-frontends/cxd2841er.c | 4 ++--
drivers/media/dvb-frontends/cxd2880/cxd2880_top.c | 2 +-
drivers/media/dvb-frontends/dib0070.c | 2 +-
drivers/media/dvb-frontends/dib0090.c | 4 ++--
drivers/media/dvb-frontends/dib3000mb.c | 2 +-
drivers/media/dvb-frontends/dib3000mc.c | 2 +-
drivers/media/dvb-frontends/dib7000m.c | 2 +-
drivers/media/dvb-frontends/dib7000p.c | 2 +-
drivers/media/dvb-frontends/dib8000.c | 2 +-
drivers/media/dvb-frontends/dib9000.c | 2 +-
drivers/media/dvb-frontends/drx39xyj/drxj.c | 2 +-
drivers/media/dvb-frontends/drxd_hard.c | 2 +-
drivers/media/dvb-frontends/drxk_hard.c | 2 +-
drivers/media/dvb-frontends/ds3000.c | 2 +-
drivers/media/dvb-frontends/dvb-pll.c | 2 +-
drivers/media/dvb-frontends/ec100.c | 2 +-
drivers/media/dvb-frontends/helene.c | 4 ++--
drivers/media/dvb-frontends/horus3a.c | 2 +-
drivers/media/dvb-frontends/isl6405.c | 2 +-
drivers/media/dvb-frontends/isl6421.c | 2 +-
drivers/media/dvb-frontends/isl6423.c | 2 +-
drivers/media/dvb-frontends/itd1000.c | 2 +-
drivers/media/dvb-frontends/ix2505v.c | 2 +-
drivers/media/dvb-frontends/l64781.c | 2 +-
drivers/media/dvb-frontends/lg2160.c | 2 +-
drivers/media/dvb-frontends/lgdt3305.c | 2 +-
drivers/media/dvb-frontends/lgdt3306a.c | 2 +-
drivers/media/dvb-frontends/lgdt330x.c | 2 +-
drivers/media/dvb-frontends/lgs8gxx.c | 2 +-
drivers/media/dvb-frontends/lnbh25.c | 2 +-
drivers/media/dvb-frontends/lnbp21.c | 4 ++--
drivers/media/dvb-frontends/lnbp22.c | 2 +-
drivers/media/dvb-frontends/m88ds3103.c | 2 +-
drivers/media/dvb-frontends/m88rs2000.c | 2 +-
drivers/media/dvb-frontends/mb86a16.c | 2 +-
drivers/media/dvb-frontends/mb86a20s.c | 2 +-
drivers/media/dvb-frontends/mt312.c | 2 +-
drivers/media/dvb-frontends/mt352.c | 2 +-
drivers/media/dvb-frontends/nxt200x.c | 2 +-
drivers/media/dvb-frontends/nxt6000.c | 2 +-
drivers/media/dvb-frontends/or51132.c | 2 +-
drivers/media/dvb-frontends/or51211.c | 2 +-
drivers/media/dvb-frontends/s5h1409.c | 2 +-
drivers/media/dvb-frontends/s5h1411.c | 2 +-
drivers/media/dvb-frontends/s5h1420.c | 2 +-
drivers/media/dvb-frontends/s5h1432.c | 2 +-
drivers/media/dvb-frontends/s921.c | 2 +-
drivers/media/dvb-frontends/si21xx.c | 2 +-
drivers/media/dvb-frontends/sp887x.c | 2 +-
drivers/media/dvb-frontends/stb0899_drv.c | 2 +-
drivers/media/dvb-frontends/stb6000.c | 2 +-
drivers/media/dvb-frontends/stb6100.c | 2 +-
drivers/media/dvb-frontends/stv0288.c | 2 +-
drivers/media/dvb-frontends/stv0297.c | 2 +-
drivers/media/dvb-frontends/stv0299.c | 2 +-
drivers/media/dvb-frontends/stv0367.c | 6 +++---
drivers/media/dvb-frontends/stv0900_core.c | 2 +-
drivers/media/dvb-frontends/stv090x.c | 2 +-
drivers/media/dvb-frontends/stv6110.c | 2 +-
drivers/media/dvb-frontends/stv6110x.c | 2 +-
drivers/media/dvb-frontends/tda10021.c | 2 +-
drivers/media/dvb-frontends/tda10023.c | 2 +-
drivers/media/dvb-frontends/tda10048.c | 2 +-
drivers/media/dvb-frontends/tda1004x.c | 4 ++--
drivers/media/dvb-frontends/tda10086.c | 2 +-
drivers/media/dvb-frontends/tda665x.c | 2 +-
drivers/media/dvb-frontends/tda8083.c | 2 +-
drivers/media/dvb-frontends/tda8261.c | 2 +-
drivers/media/dvb-frontends/tda826x.c | 2 +-
drivers/media/dvb-frontends/ts2020.c | 2 +-
drivers/media/dvb-frontends/tua6100.c | 2 +-
drivers/media/dvb-frontends/ves1820.c | 2 +-
drivers/media/dvb-frontends/ves1x93.c | 2 +-
drivers/media/dvb-frontends/zl10036.c | 2 +-
drivers/media/dvb-frontends/zl10039.c | 2 +-
drivers/media/dvb-frontends/zl10353.c | 2 +-
drivers/media/pci/bt8xx/dst.c | 2 +-
drivers/media/pci/bt8xx/dst_ca.c | 2 +-
drivers/media/pci/ddbridge/ddbridge-dummy-fe.c | 2 +-
drivers/media/tuners/fc0011.c | 2 +-
drivers/media/tuners/fc0012.c | 2 +-
drivers/media/tuners/fc0013.c | 2 +-
drivers/media/tuners/max2165.c | 2 +-
drivers/media/tuners/mc44s803.c | 2 +-
drivers/media/tuners/mt2060.c | 2 +-
drivers/media/tuners/mt2131.c | 2 +-
drivers/media/tuners/mt2266.c | 2 +-
drivers/media/tuners/mxl5005s.c | 2 +-
drivers/media/tuners/qt1010.c | 2 +-
drivers/media/tuners/tda18218.c | 2 +-
drivers/media/tuners/xc2028.c | 2 +-
drivers/media/tuners/xc4000.c | 2 +-
drivers/media/tuners/xc5000.c | 2 +-
105 files changed, 112 insertions(+), 112 deletions(-)
--- a/drivers/media/dvb-frontends/ascot2e.c
+++ b/drivers/media/dvb-frontends/ascot2e.c
@@ -533,7 +533,7 @@ struct dvb_frontend *ascot2e_attach(stru
priv->i2c_address, priv->i2c);
return fe;
}
-EXPORT_SYMBOL(ascot2e_attach);
+EXPORT_SYMBOL_GPL(ascot2e_attach);
MODULE_DESCRIPTION("Sony ASCOT2E terr/cab tuner driver");
MODULE_AUTHOR("info@netup.ru");
--- a/drivers/media/dvb-frontends/atbm8830.c
+++ b/drivers/media/dvb-frontends/atbm8830.c
@@ -489,7 +489,7 @@ error_out:
return NULL;
}
-EXPORT_SYMBOL(atbm8830_attach);
+EXPORT_SYMBOL_GPL(atbm8830_attach);
MODULE_DESCRIPTION("AltoBeam ATBM8830/8831 GB20600 demodulator driver");
MODULE_AUTHOR("David T. L. Wong <davidtlwong@gmail.com>");
--- a/drivers/media/dvb-frontends/au8522_dig.c
+++ b/drivers/media/dvb-frontends/au8522_dig.c
@@ -879,7 +879,7 @@ error:
au8522_release_state(state);
return NULL;
}
-EXPORT_SYMBOL(au8522_attach);
+EXPORT_SYMBOL_GPL(au8522_attach);
static const struct dvb_frontend_ops au8522_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/bcm3510.c
+++ b/drivers/media/dvb-frontends/bcm3510.c
@@ -835,7 +835,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(bcm3510_attach);
+EXPORT_SYMBOL_GPL(bcm3510_attach);
static const struct dvb_frontend_ops bcm3510_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/cx22700.c
+++ b/drivers/media/dvb-frontends/cx22700.c
@@ -432,4 +432,4 @@ MODULE_DESCRIPTION("Conexant CX22700 DVB
MODULE_AUTHOR("Holger Waechtler");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(cx22700_attach);
+EXPORT_SYMBOL_GPL(cx22700_attach);
--- a/drivers/media/dvb-frontends/cx22702.c
+++ b/drivers/media/dvb-frontends/cx22702.c
@@ -604,7 +604,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(cx22702_attach);
+EXPORT_SYMBOL_GPL(cx22702_attach);
static const struct dvb_frontend_ops cx22702_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/cx24110.c
+++ b/drivers/media/dvb-frontends/cx24110.c
@@ -653,4 +653,4 @@ MODULE_DESCRIPTION("Conexant CX24110 DVB
MODULE_AUTHOR("Peter Hettkamp");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(cx24110_attach);
+EXPORT_SYMBOL_GPL(cx24110_attach);
--- a/drivers/media/dvb-frontends/cx24113.c
+++ b/drivers/media/dvb-frontends/cx24113.c
@@ -590,7 +590,7 @@ error:
return NULL;
}
-EXPORT_SYMBOL(cx24113_attach);
+EXPORT_SYMBOL_GPL(cx24113_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
--- a/drivers/media/dvb-frontends/cx24116.c
+++ b/drivers/media/dvb-frontends/cx24116.c
@@ -1133,7 +1133,7 @@ struct dvb_frontend *cx24116_attach(cons
state->frontend.demodulator_priv = state;
return &state->frontend;
}
-EXPORT_SYMBOL(cx24116_attach);
+EXPORT_SYMBOL_GPL(cx24116_attach);
/*
* Initialise or wake up device
--- a/drivers/media/dvb-frontends/cx24120.c
+++ b/drivers/media/dvb-frontends/cx24120.c
@@ -305,7 +305,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(cx24120_attach);
+EXPORT_SYMBOL_GPL(cx24120_attach);
static int cx24120_test_rom(struct cx24120_state *state)
{
--- a/drivers/media/dvb-frontends/cx24123.c
+++ b/drivers/media/dvb-frontends/cx24123.c
@@ -1096,7 +1096,7 @@ error:
return NULL;
}
-EXPORT_SYMBOL(cx24123_attach);
+EXPORT_SYMBOL_GPL(cx24123_attach);
static const struct dvb_frontend_ops cx24123_ops = {
.delsys = { SYS_DVBS },
--- a/drivers/media/dvb-frontends/cxd2820r_core.c
+++ b/drivers/media/dvb-frontends/cxd2820r_core.c
@@ -536,7 +536,7 @@ struct dvb_frontend *cxd2820r_attach(con
return pdata.get_dvb_frontend(client);
}
-EXPORT_SYMBOL(cxd2820r_attach);
+EXPORT_SYMBOL_GPL(cxd2820r_attach);
static struct dvb_frontend *cxd2820r_get_dvb_frontend(struct i2c_client *client)
{
--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -3930,14 +3930,14 @@ struct dvb_frontend *cxd2841er_attach_s(
{
return cxd2841er_attach(cfg, i2c, SYS_DVBS);
}
-EXPORT_SYMBOL(cxd2841er_attach_s);
+EXPORT_SYMBOL_GPL(cxd2841er_attach_s);
struct dvb_frontend *cxd2841er_attach_t_c(struct cxd2841er_config *cfg,
struct i2c_adapter *i2c)
{
return cxd2841er_attach(cfg, i2c, 0);
}
-EXPORT_SYMBOL(cxd2841er_attach_t_c);
+EXPORT_SYMBOL_GPL(cxd2841er_attach_t_c);
static const struct dvb_frontend_ops cxd2841er_dvbs_s2_ops = {
.delsys = { SYS_DVBS, SYS_DVBS2 },
--- a/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
+++ b/drivers/media/dvb-frontends/cxd2880/cxd2880_top.c
@@ -1950,7 +1950,7 @@ struct dvb_frontend *cxd2880_attach(stru
return fe;
}
-EXPORT_SYMBOL(cxd2880_attach);
+EXPORT_SYMBOL_GPL(cxd2880_attach);
MODULE_DESCRIPTION("Sony CXD2880 DVB-T2/T tuner + demod driver");
MODULE_AUTHOR("Sony Semiconductor Solutions Corporation");
--- a/drivers/media/dvb-frontends/dib0070.c
+++ b/drivers/media/dvb-frontends/dib0070.c
@@ -762,7 +762,7 @@ free_mem:
fe->tuner_priv = NULL;
return NULL;
}
-EXPORT_SYMBOL(dib0070_attach);
+EXPORT_SYMBOL_GPL(dib0070_attach);
MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
MODULE_DESCRIPTION("Driver for the DiBcom 0070 base-band RF Tuner");
--- a/drivers/media/dvb-frontends/dib0090.c
+++ b/drivers/media/dvb-frontends/dib0090.c
@@ -2634,7 +2634,7 @@ struct dvb_frontend *dib0090_register(st
return NULL;
}
-EXPORT_SYMBOL(dib0090_register);
+EXPORT_SYMBOL_GPL(dib0090_register);
struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct dib0090_config *config)
{
@@ -2660,7 +2660,7 @@ free_mem:
fe->tuner_priv = NULL;
return NULL;
}
-EXPORT_SYMBOL(dib0090_fw_register);
+EXPORT_SYMBOL_GPL(dib0090_fw_register);
MODULE_AUTHOR("Patrick Boettcher <patrick.boettcher@posteo.de>");
MODULE_AUTHOR("Olivier Grenie <olivier.grenie@parrot.com>");
--- a/drivers/media/dvb-frontends/dib3000mb.c
+++ b/drivers/media/dvb-frontends/dib3000mb.c
@@ -815,4 +815,4 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(dib3000mb_attach);
+EXPORT_SYMBOL_GPL(dib3000mb_attach);
--- a/drivers/media/dvb-frontends/dib3000mc.c
+++ b/drivers/media/dvb-frontends/dib3000mc.c
@@ -935,7 +935,7 @@ error:
kfree(st);
return NULL;
}
-EXPORT_SYMBOL(dib3000mc_attach);
+EXPORT_SYMBOL_GPL(dib3000mc_attach);
static const struct dvb_frontend_ops dib3000mc_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/dib7000m.c
+++ b/drivers/media/dvb-frontends/dib7000m.c
@@ -1434,7 +1434,7 @@ error:
kfree(st);
return NULL;
}
-EXPORT_SYMBOL(dib7000m_attach);
+EXPORT_SYMBOL_GPL(dib7000m_attach);
static const struct dvb_frontend_ops dib7000m_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/dib7000p.c
+++ b/drivers/media/dvb-frontends/dib7000p.c
@@ -2822,7 +2822,7 @@ void *dib7000p_attach(struct dib7000p_op
return ops;
}
-EXPORT_SYMBOL(dib7000p_attach);
+EXPORT_SYMBOL_GPL(dib7000p_attach);
static const struct dvb_frontend_ops dib7000p_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/dib8000.c
+++ b/drivers/media/dvb-frontends/dib8000.c
@@ -4527,7 +4527,7 @@ void *dib8000_attach(struct dib8000_ops
return ops;
}
-EXPORT_SYMBOL(dib8000_attach);
+EXPORT_SYMBOL_GPL(dib8000_attach);
MODULE_AUTHOR("Olivier Grenie <Olivier.Grenie@parrot.com, Patrick Boettcher <patrick.boettcher@posteo.de>");
MODULE_DESCRIPTION("Driver for the DiBcom 8000 ISDB-T demodulator");
--- a/drivers/media/dvb-frontends/dib9000.c
+++ b/drivers/media/dvb-frontends/dib9000.c
@@ -2546,7 +2546,7 @@ error:
kfree(st);
return NULL;
}
-EXPORT_SYMBOL(dib9000_attach);
+EXPORT_SYMBOL_GPL(dib9000_attach);
static const struct dvb_frontend_ops dib9000_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/drx39xyj/drxj.c
+++ b/drivers/media/dvb-frontends/drx39xyj/drxj.c
@@ -12368,7 +12368,7 @@ error:
return NULL;
}
-EXPORT_SYMBOL(drx39xxj_attach);
+EXPORT_SYMBOL_GPL(drx39xxj_attach);
static const struct dvb_frontend_ops drx39xxj_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/drxd_hard.c
+++ b/drivers/media/dvb-frontends/drxd_hard.c
@@ -2939,7 +2939,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(drxd_attach);
+EXPORT_SYMBOL_GPL(drxd_attach);
MODULE_DESCRIPTION("DRXD driver");
MODULE_AUTHOR("Micronas");
--- a/drivers/media/dvb-frontends/drxk_hard.c
+++ b/drivers/media/dvb-frontends/drxk_hard.c
@@ -6833,7 +6833,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(drxk_attach);
+EXPORT_SYMBOL_GPL(drxk_attach);
MODULE_DESCRIPTION("DRX-K driver");
MODULE_AUTHOR("Ralph Metzler");
--- a/drivers/media/dvb-frontends/ds3000.c
+++ b/drivers/media/dvb-frontends/ds3000.c
@@ -859,7 +859,7 @@ struct dvb_frontend *ds3000_attach(const
ds3000_set_voltage(&state->frontend, SEC_VOLTAGE_OFF);
return &state->frontend;
}
-EXPORT_SYMBOL(ds3000_attach);
+EXPORT_SYMBOL_GPL(ds3000_attach);
static int ds3000_set_carrier_offset(struct dvb_frontend *fe,
s32 carrier_offset_khz)
--- a/drivers/media/dvb-frontends/dvb-pll.c
+++ b/drivers/media/dvb-frontends/dvb-pll.c
@@ -866,7 +866,7 @@ out:
return NULL;
}
-EXPORT_SYMBOL(dvb_pll_attach);
+EXPORT_SYMBOL_GPL(dvb_pll_attach);
static int
--- a/drivers/media/dvb-frontends/ec100.c
+++ b/drivers/media/dvb-frontends/ec100.c
@@ -299,7 +299,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(ec100_attach);
+EXPORT_SYMBOL_GPL(ec100_attach);
static const struct dvb_frontend_ops ec100_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/helene.c
+++ b/drivers/media/dvb-frontends/helene.c
@@ -1025,7 +1025,7 @@ struct dvb_frontend *helene_attach_s(str
priv->i2c_address, priv->i2c);
return fe;
}
-EXPORT_SYMBOL(helene_attach_s);
+EXPORT_SYMBOL_GPL(helene_attach_s);
struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
const struct helene_config *config,
@@ -1061,7 +1061,7 @@ struct dvb_frontend *helene_attach(struc
priv->i2c_address, priv->i2c);
return fe;
}
-EXPORT_SYMBOL(helene_attach);
+EXPORT_SYMBOL_GPL(helene_attach);
static int helene_probe(struct i2c_client *client,
const struct i2c_device_id *id)
--- a/drivers/media/dvb-frontends/horus3a.c
+++ b/drivers/media/dvb-frontends/horus3a.c
@@ -395,7 +395,7 @@ struct dvb_frontend *horus3a_attach(stru
priv->i2c_address, priv->i2c);
return fe;
}
-EXPORT_SYMBOL(horus3a_attach);
+EXPORT_SYMBOL_GPL(horus3a_attach);
MODULE_DESCRIPTION("Sony HORUS3A satellite tuner driver");
MODULE_AUTHOR("Sergey Kozlov <serjk@netup.ru>");
--- a/drivers/media/dvb-frontends/isl6405.c
+++ b/drivers/media/dvb-frontends/isl6405.c
@@ -141,7 +141,7 @@ struct dvb_frontend *isl6405_attach(stru
return fe;
}
-EXPORT_SYMBOL(isl6405_attach);
+EXPORT_SYMBOL_GPL(isl6405_attach);
MODULE_DESCRIPTION("Driver for lnb supply and control ic isl6405");
MODULE_AUTHOR("Hartmut Hackmann & Oliver Endriss");
--- a/drivers/media/dvb-frontends/isl6421.c
+++ b/drivers/media/dvb-frontends/isl6421.c
@@ -213,7 +213,7 @@ struct dvb_frontend *isl6421_attach(stru
return fe;
}
-EXPORT_SYMBOL(isl6421_attach);
+EXPORT_SYMBOL_GPL(isl6421_attach);
MODULE_DESCRIPTION("Driver for lnb supply and control ic isl6421");
MODULE_AUTHOR("Andrew de Quincey & Oliver Endriss");
--- a/drivers/media/dvb-frontends/isl6423.c
+++ b/drivers/media/dvb-frontends/isl6423.c
@@ -289,7 +289,7 @@ exit:
fe->sec_priv = NULL;
return NULL;
}
-EXPORT_SYMBOL(isl6423_attach);
+EXPORT_SYMBOL_GPL(isl6423_attach);
MODULE_DESCRIPTION("ISL6423 SEC");
MODULE_AUTHOR("Manu Abraham");
--- a/drivers/media/dvb-frontends/itd1000.c
+++ b/drivers/media/dvb-frontends/itd1000.c
@@ -389,7 +389,7 @@ struct dvb_frontend *itd1000_attach(stru
return fe;
}
-EXPORT_SYMBOL(itd1000_attach);
+EXPORT_SYMBOL_GPL(itd1000_attach);
MODULE_AUTHOR("Patrick Boettcher <pb@linuxtv.org>");
MODULE_DESCRIPTION("Integrant ITD1000 driver");
--- a/drivers/media/dvb-frontends/ix2505v.c
+++ b/drivers/media/dvb-frontends/ix2505v.c
@@ -302,7 +302,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(ix2505v_attach);
+EXPORT_SYMBOL_GPL(ix2505v_attach);
module_param_named(debug, ix2505v_debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/l64781.c
+++ b/drivers/media/dvb-frontends/l64781.c
@@ -593,4 +593,4 @@ MODULE_DESCRIPTION("LSI L64781 DVB-T Dem
MODULE_AUTHOR("Holger Waechtler, Marko Kohtala");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(l64781_attach);
+EXPORT_SYMBOL_GPL(l64781_attach);
--- a/drivers/media/dvb-frontends/lg2160.c
+++ b/drivers/media/dvb-frontends/lg2160.c
@@ -1426,7 +1426,7 @@ struct dvb_frontend *lg2160_attach(const
return &state->frontend;
}
-EXPORT_SYMBOL(lg2160_attach);
+EXPORT_SYMBOL_GPL(lg2160_attach);
MODULE_DESCRIPTION("LG Electronics LG216x ATSC/MH Demodulator Driver");
MODULE_AUTHOR("Michael Krufky <mkrufky@linuxtv.org>");
--- a/drivers/media/dvb-frontends/lgdt3305.c
+++ b/drivers/media/dvb-frontends/lgdt3305.c
@@ -1148,7 +1148,7 @@ fail:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(lgdt3305_attach);
+EXPORT_SYMBOL_GPL(lgdt3305_attach);
static const struct dvb_frontend_ops lgdt3304_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/lgdt3306a.c
+++ b/drivers/media/dvb-frontends/lgdt3306a.c
@@ -1859,7 +1859,7 @@ fail:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(lgdt3306a_attach);
+EXPORT_SYMBOL_GPL(lgdt3306a_attach);
#ifdef DBG_DUMP
--- a/drivers/media/dvb-frontends/lgdt330x.c
+++ b/drivers/media/dvb-frontends/lgdt330x.c
@@ -928,7 +928,7 @@ struct dvb_frontend *lgdt330x_attach(con
return lgdt330x_get_dvb_frontend(client);
}
-EXPORT_SYMBOL(lgdt330x_attach);
+EXPORT_SYMBOL_GPL(lgdt330x_attach);
static const struct dvb_frontend_ops lgdt3302_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/lgs8gxx.c
+++ b/drivers/media/dvb-frontends/lgs8gxx.c
@@ -1043,7 +1043,7 @@ error_out:
return NULL;
}
-EXPORT_SYMBOL(lgs8gxx_attach);
+EXPORT_SYMBOL_GPL(lgs8gxx_attach);
MODULE_DESCRIPTION("Legend Silicon LGS8913/LGS8GXX DMB-TH demodulator driver");
MODULE_AUTHOR("David T. L. Wong <davidtlwong@gmail.com>");
--- a/drivers/media/dvb-frontends/lnbh25.c
+++ b/drivers/media/dvb-frontends/lnbh25.c
@@ -173,7 +173,7 @@ struct dvb_frontend *lnbh25_attach(struc
__func__, priv->i2c_address);
return fe;
}
-EXPORT_SYMBOL(lnbh25_attach);
+EXPORT_SYMBOL_GPL(lnbh25_attach);
MODULE_DESCRIPTION("ST LNBH25 driver");
MODULE_AUTHOR("info@netup.ru");
--- a/drivers/media/dvb-frontends/lnbp21.c
+++ b/drivers/media/dvb-frontends/lnbp21.c
@@ -155,7 +155,7 @@ struct dvb_frontend *lnbh24_attach(struc
return lnbx2x_attach(fe, i2c, override_set, override_clear,
i2c_addr, LNBH24_TTX);
}
-EXPORT_SYMBOL(lnbh24_attach);
+EXPORT_SYMBOL_GPL(lnbh24_attach);
struct dvb_frontend *lnbp21_attach(struct dvb_frontend *fe,
struct i2c_adapter *i2c, u8 override_set,
@@ -164,7 +164,7 @@ struct dvb_frontend *lnbp21_attach(struc
return lnbx2x_attach(fe, i2c, override_set, override_clear,
0x08, LNBP21_ISEL);
}
-EXPORT_SYMBOL(lnbp21_attach);
+EXPORT_SYMBOL_GPL(lnbp21_attach);
MODULE_DESCRIPTION("Driver for lnb supply and control ic lnbp21, lnbh24");
MODULE_AUTHOR("Oliver Endriss, Igor M. Liplianin");
--- a/drivers/media/dvb-frontends/lnbp22.c
+++ b/drivers/media/dvb-frontends/lnbp22.c
@@ -125,7 +125,7 @@ struct dvb_frontend *lnbp22_attach(struc
return fe;
}
-EXPORT_SYMBOL(lnbp22_attach);
+EXPORT_SYMBOL_GPL(lnbp22_attach);
MODULE_DESCRIPTION("Driver for lnb supply and control ic lnbp22");
MODULE_AUTHOR("Dominik Kuhlen");
--- a/drivers/media/dvb-frontends/m88ds3103.c
+++ b/drivers/media/dvb-frontends/m88ds3103.c
@@ -1695,7 +1695,7 @@ struct dvb_frontend *m88ds3103_attach(co
*tuner_i2c_adapter = pdata.get_i2c_adapter(client);
return pdata.get_dvb_frontend(client);
}
-EXPORT_SYMBOL(m88ds3103_attach);
+EXPORT_SYMBOL_GPL(m88ds3103_attach);
static const struct dvb_frontend_ops m88ds3103_ops = {
.delsys = {SYS_DVBS, SYS_DVBS2},
--- a/drivers/media/dvb-frontends/m88rs2000.c
+++ b/drivers/media/dvb-frontends/m88rs2000.c
@@ -808,7 +808,7 @@ error:
return NULL;
}
-EXPORT_SYMBOL(m88rs2000_attach);
+EXPORT_SYMBOL_GPL(m88rs2000_attach);
MODULE_DESCRIPTION("M88RS2000 DVB-S Demodulator driver");
MODULE_AUTHOR("Malcolm Priestley tvboxspy@gmail.com");
--- a/drivers/media/dvb-frontends/mb86a16.c
+++ b/drivers/media/dvb-frontends/mb86a16.c
@@ -1848,6 +1848,6 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(mb86a16_attach);
+EXPORT_SYMBOL_GPL(mb86a16_attach);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Manu Abraham");
--- a/drivers/media/dvb-frontends/mb86a20s.c
+++ b/drivers/media/dvb-frontends/mb86a20s.c
@@ -2081,7 +2081,7 @@ struct dvb_frontend *mb86a20s_attach(con
dev_info(&i2c->dev, "Detected a Fujitsu mb86a20s frontend\n");
return &state->frontend;
}
-EXPORT_SYMBOL(mb86a20s_attach);
+EXPORT_SYMBOL_GPL(mb86a20s_attach);
static const struct dvb_frontend_ops mb86a20s_ops = {
.delsys = { SYS_ISDBT },
--- a/drivers/media/dvb-frontends/mt312.c
+++ b/drivers/media/dvb-frontends/mt312.c
@@ -827,7 +827,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(mt312_attach);
+EXPORT_SYMBOL_GPL(mt312_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/mt352.c
+++ b/drivers/media/dvb-frontends/mt352.c
@@ -593,4 +593,4 @@ MODULE_DESCRIPTION("Zarlink MT352 DVB-T
MODULE_AUTHOR("Holger Waechtler, Daniel Mack, Antonio Mancuso");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(mt352_attach);
+EXPORT_SYMBOL_GPL(mt352_attach);
--- a/drivers/media/dvb-frontends/nxt200x.c
+++ b/drivers/media/dvb-frontends/nxt200x.c
@@ -1216,5 +1216,5 @@ MODULE_DESCRIPTION("NXT200X (ATSC 8VSB &
MODULE_AUTHOR("Kirk Lapray, Michael Krufky, Jean-Francois Thibert, and Taylor Jacob");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(nxt200x_attach);
+EXPORT_SYMBOL_GPL(nxt200x_attach);
--- a/drivers/media/dvb-frontends/nxt6000.c
+++ b/drivers/media/dvb-frontends/nxt6000.c
@@ -621,4 +621,4 @@ MODULE_DESCRIPTION("NxtWave NXT6000 DVB-
MODULE_AUTHOR("Florian Schirmer");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(nxt6000_attach);
+EXPORT_SYMBOL_GPL(nxt6000_attach);
--- a/drivers/media/dvb-frontends/or51132.c
+++ b/drivers/media/dvb-frontends/or51132.c
@@ -605,4 +605,4 @@ MODULE_AUTHOR("Kirk Lapray");
MODULE_AUTHOR("Trent Piepho");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(or51132_attach);
+EXPORT_SYMBOL_GPL(or51132_attach);
--- a/drivers/media/dvb-frontends/or51211.c
+++ b/drivers/media/dvb-frontends/or51211.c
@@ -551,5 +551,5 @@ MODULE_DESCRIPTION("Oren OR51211 VSB [pc
MODULE_AUTHOR("Kirk Lapray");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(or51211_attach);
+EXPORT_SYMBOL_GPL(or51211_attach);
--- a/drivers/media/dvb-frontends/s5h1409.c
+++ b/drivers/media/dvb-frontends/s5h1409.c
@@ -981,7 +981,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(s5h1409_attach);
+EXPORT_SYMBOL_GPL(s5h1409_attach);
static const struct dvb_frontend_ops s5h1409_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/s5h1411.c
+++ b/drivers/media/dvb-frontends/s5h1411.c
@@ -900,7 +900,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(s5h1411_attach);
+EXPORT_SYMBOL_GPL(s5h1411_attach);
static const struct dvb_frontend_ops s5h1411_ops = {
.delsys = { SYS_ATSC, SYS_DVBC_ANNEX_B },
--- a/drivers/media/dvb-frontends/s5h1420.c
+++ b/drivers/media/dvb-frontends/s5h1420.c
@@ -918,7 +918,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(s5h1420_attach);
+EXPORT_SYMBOL_GPL(s5h1420_attach);
static const struct dvb_frontend_ops s5h1420_ops = {
.delsys = { SYS_DVBS },
--- a/drivers/media/dvb-frontends/s5h1432.c
+++ b/drivers/media/dvb-frontends/s5h1432.c
@@ -355,7 +355,7 @@ struct dvb_frontend *s5h1432_attach(cons
return &state->frontend;
}
-EXPORT_SYMBOL(s5h1432_attach);
+EXPORT_SYMBOL_GPL(s5h1432_attach);
static const struct dvb_frontend_ops s5h1432_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/s921.c
+++ b/drivers/media/dvb-frontends/s921.c
@@ -495,7 +495,7 @@ struct dvb_frontend *s921_attach(const s
return &state->frontend;
}
-EXPORT_SYMBOL(s921_attach);
+EXPORT_SYMBOL_GPL(s921_attach);
static const struct dvb_frontend_ops s921_ops = {
.delsys = { SYS_ISDBT },
--- a/drivers/media/dvb-frontends/si21xx.c
+++ b/drivers/media/dvb-frontends/si21xx.c
@@ -937,7 +937,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(si21xx_attach);
+EXPORT_SYMBOL_GPL(si21xx_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/sp887x.c
+++ b/drivers/media/dvb-frontends/sp887x.c
@@ -624,4 +624,4 @@ MODULE_PARM_DESC(debug, "Turn on/off fro
MODULE_DESCRIPTION("Spase sp887x DVB-T demodulator driver");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(sp887x_attach);
+EXPORT_SYMBOL_GPL(sp887x_attach);
--- a/drivers/media/dvb-frontends/stb0899_drv.c
+++ b/drivers/media/dvb-frontends/stb0899_drv.c
@@ -1638,7 +1638,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stb0899_attach);
+EXPORT_SYMBOL_GPL(stb0899_attach);
MODULE_PARM_DESC(verbose, "Set Verbosity level");
MODULE_AUTHOR("Manu Abraham");
MODULE_DESCRIPTION("STB0899 Multi-Std frontend");
--- a/drivers/media/dvb-frontends/stb6000.c
+++ b/drivers/media/dvb-frontends/stb6000.c
@@ -232,7 +232,7 @@ struct dvb_frontend *stb6000_attach(stru
return fe;
}
-EXPORT_SYMBOL(stb6000_attach);
+EXPORT_SYMBOL_GPL(stb6000_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/stb6100.c
+++ b/drivers/media/dvb-frontends/stb6100.c
@@ -557,7 +557,7 @@ static void stb6100_release(struct dvb_f
kfree(state);
}
-EXPORT_SYMBOL(stb6100_attach);
+EXPORT_SYMBOL_GPL(stb6100_attach);
MODULE_PARM_DESC(verbose, "Set Verbosity level");
MODULE_AUTHOR("Manu Abraham");
--- a/drivers/media/dvb-frontends/stv0288.c
+++ b/drivers/media/dvb-frontends/stv0288.c
@@ -590,7 +590,7 @@ error:
return NULL;
}
-EXPORT_SYMBOL(stv0288_attach);
+EXPORT_SYMBOL_GPL(stv0288_attach);
module_param(debug_legacy_dish_switch, int, 0444);
MODULE_PARM_DESC(debug_legacy_dish_switch,
--- a/drivers/media/dvb-frontends/stv0297.c
+++ b/drivers/media/dvb-frontends/stv0297.c
@@ -710,4 +710,4 @@ MODULE_DESCRIPTION("ST STV0297 DVB-C Dem
MODULE_AUTHOR("Dennis Noermann and Andrew de Quincey");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(stv0297_attach);
+EXPORT_SYMBOL_GPL(stv0297_attach);
--- a/drivers/media/dvb-frontends/stv0299.c
+++ b/drivers/media/dvb-frontends/stv0299.c
@@ -752,4 +752,4 @@ MODULE_DESCRIPTION("ST STV0299 DVB Demod
MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Peter Schildmann, Felix Domke, Andreas Oberritter, Andrew de Quincey, Kenneth Aafly");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(stv0299_attach);
+EXPORT_SYMBOL_GPL(stv0299_attach);
--- a/drivers/media/dvb-frontends/stv0367.c
+++ b/drivers/media/dvb-frontends/stv0367.c
@@ -1750,7 +1750,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stv0367ter_attach);
+EXPORT_SYMBOL_GPL(stv0367ter_attach);
static int stv0367cab_gate_ctrl(struct dvb_frontend *fe, int enable)
{
@@ -2919,7 +2919,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stv0367cab_attach);
+EXPORT_SYMBOL_GPL(stv0367cab_attach);
/*
* Functions for operation on Digital Devices hardware
@@ -3340,7 +3340,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stv0367ddb_attach);
+EXPORT_SYMBOL_GPL(stv0367ddb_attach);
MODULE_PARM_DESC(debug, "Set debug");
MODULE_PARM_DESC(i2c_debug, "Set i2c debug");
--- a/drivers/media/dvb-frontends/stv0900_core.c
+++ b/drivers/media/dvb-frontends/stv0900_core.c
@@ -1957,7 +1957,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stv0900_attach);
+EXPORT_SYMBOL_GPL(stv0900_attach);
MODULE_PARM_DESC(debug, "Set debug");
--- a/drivers/media/dvb-frontends/stv090x.c
+++ b/drivers/media/dvb-frontends/stv090x.c
@@ -5072,7 +5072,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(stv090x_attach);
+EXPORT_SYMBOL_GPL(stv090x_attach);
static const struct i2c_device_id stv090x_id_table[] = {
{"stv090x", 0},
--- a/drivers/media/dvb-frontends/stv6110.c
+++ b/drivers/media/dvb-frontends/stv6110.c
@@ -427,7 +427,7 @@ struct dvb_frontend *stv6110_attach(stru
return fe;
}
-EXPORT_SYMBOL(stv6110_attach);
+EXPORT_SYMBOL_GPL(stv6110_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/stv6110x.c
+++ b/drivers/media/dvb-frontends/stv6110x.c
@@ -468,7 +468,7 @@ const struct stv6110x_devctl *stv6110x_a
dev_info(&stv6110x->i2c->dev, "Attaching STV6110x\n");
return stv6110x->devctl;
}
-EXPORT_SYMBOL(stv6110x_attach);
+EXPORT_SYMBOL_GPL(stv6110x_attach);
static const struct i2c_device_id stv6110x_id_table[] = {
{"stv6110x", 0},
--- a/drivers/media/dvb-frontends/tda10021.c
+++ b/drivers/media/dvb-frontends/tda10021.c
@@ -523,4 +523,4 @@ MODULE_DESCRIPTION("Philips TDA10021 DVB
MODULE_AUTHOR("Ralph Metzler, Holger Waechtler, Markus Schulz");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(tda10021_attach);
+EXPORT_SYMBOL_GPL(tda10021_attach);
--- a/drivers/media/dvb-frontends/tda10023.c
+++ b/drivers/media/dvb-frontends/tda10023.c
@@ -594,4 +594,4 @@ MODULE_DESCRIPTION("Philips TDA10023 DVB
MODULE_AUTHOR("Georg Acher, Hartmut Birr");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(tda10023_attach);
+EXPORT_SYMBOL_GPL(tda10023_attach);
--- a/drivers/media/dvb-frontends/tda10048.c
+++ b/drivers/media/dvb-frontends/tda10048.c
@@ -1138,7 +1138,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(tda10048_attach);
+EXPORT_SYMBOL_GPL(tda10048_attach);
static const struct dvb_frontend_ops tda10048_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/dvb-frontends/tda1004x.c
+++ b/drivers/media/dvb-frontends/tda1004x.c
@@ -1378,5 +1378,5 @@ MODULE_DESCRIPTION("Philips TDA10045H &
MODULE_AUTHOR("Andrew de Quincey & Robert Schlabbach");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(tda10045_attach);
-EXPORT_SYMBOL(tda10046_attach);
+EXPORT_SYMBOL_GPL(tda10045_attach);
+EXPORT_SYMBOL_GPL(tda10046_attach);
--- a/drivers/media/dvb-frontends/tda10086.c
+++ b/drivers/media/dvb-frontends/tda10086.c
@@ -764,4 +764,4 @@ MODULE_DESCRIPTION("Philips TDA10086 DVB
MODULE_AUTHOR("Andrew de Quincey");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(tda10086_attach);
+EXPORT_SYMBOL_GPL(tda10086_attach);
--- a/drivers/media/dvb-frontends/tda665x.c
+++ b/drivers/media/dvb-frontends/tda665x.c
@@ -227,7 +227,7 @@ struct dvb_frontend *tda665x_attach(stru
return fe;
}
-EXPORT_SYMBOL(tda665x_attach);
+EXPORT_SYMBOL_GPL(tda665x_attach);
MODULE_DESCRIPTION("TDA665x driver");
MODULE_AUTHOR("Manu Abraham");
--- a/drivers/media/dvb-frontends/tda8083.c
+++ b/drivers/media/dvb-frontends/tda8083.c
@@ -481,4 +481,4 @@ MODULE_DESCRIPTION("Philips TDA8083 DVB-
MODULE_AUTHOR("Ralph Metzler, Holger Waechtler");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(tda8083_attach);
+EXPORT_SYMBOL_GPL(tda8083_attach);
--- a/drivers/media/dvb-frontends/tda8261.c
+++ b/drivers/media/dvb-frontends/tda8261.c
@@ -188,7 +188,7 @@ exit:
return NULL;
}
-EXPORT_SYMBOL(tda8261_attach);
+EXPORT_SYMBOL_GPL(tda8261_attach);
MODULE_AUTHOR("Manu Abraham");
MODULE_DESCRIPTION("TDA8261 8PSK/QPSK Tuner");
--- a/drivers/media/dvb-frontends/tda826x.c
+++ b/drivers/media/dvb-frontends/tda826x.c
@@ -164,7 +164,7 @@ struct dvb_frontend *tda826x_attach(stru
return fe;
}
-EXPORT_SYMBOL(tda826x_attach);
+EXPORT_SYMBOL_GPL(tda826x_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/ts2020.c
+++ b/drivers/media/dvb-frontends/ts2020.c
@@ -525,7 +525,7 @@ struct dvb_frontend *ts2020_attach(struc
return fe;
}
-EXPORT_SYMBOL(ts2020_attach);
+EXPORT_SYMBOL_GPL(ts2020_attach);
/*
* We implement own regmap locking due to legacy DVB attach which uses frontend
--- a/drivers/media/dvb-frontends/tua6100.c
+++ b/drivers/media/dvb-frontends/tua6100.c
@@ -186,7 +186,7 @@ struct dvb_frontend *tua6100_attach(stru
fe->tuner_priv = priv;
return fe;
}
-EXPORT_SYMBOL(tua6100_attach);
+EXPORT_SYMBOL_GPL(tua6100_attach);
MODULE_DESCRIPTION("DVB tua6100 driver");
MODULE_AUTHOR("Andrew de Quincey");
--- a/drivers/media/dvb-frontends/ves1820.c
+++ b/drivers/media/dvb-frontends/ves1820.c
@@ -434,4 +434,4 @@ MODULE_DESCRIPTION("VLSI VES1820 DVB-C D
MODULE_AUTHOR("Ralph Metzler, Holger Waechtler");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(ves1820_attach);
+EXPORT_SYMBOL_GPL(ves1820_attach);
--- a/drivers/media/dvb-frontends/ves1x93.c
+++ b/drivers/media/dvb-frontends/ves1x93.c
@@ -540,4 +540,4 @@ MODULE_DESCRIPTION("VLSI VES1x93 DVB-S D
MODULE_AUTHOR("Ralph Metzler");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(ves1x93_attach);
+EXPORT_SYMBOL_GPL(ves1x93_attach);
--- a/drivers/media/dvb-frontends/zl10036.c
+++ b/drivers/media/dvb-frontends/zl10036.c
@@ -496,7 +496,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(zl10036_attach);
+EXPORT_SYMBOL_GPL(zl10036_attach);
module_param_named(debug, zl10036_debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/zl10039.c
+++ b/drivers/media/dvb-frontends/zl10039.c
@@ -295,7 +295,7 @@ error:
kfree(state);
return NULL;
}
-EXPORT_SYMBOL(zl10039_attach);
+EXPORT_SYMBOL_GPL(zl10039_attach);
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "Turn on/off frontend debugging (default:off).");
--- a/drivers/media/dvb-frontends/zl10353.c
+++ b/drivers/media/dvb-frontends/zl10353.c
@@ -665,4 +665,4 @@ MODULE_DESCRIPTION("Zarlink ZL10353 DVB-
MODULE_AUTHOR("Chris Pascoe");
MODULE_LICENSE("GPL");
-EXPORT_SYMBOL(zl10353_attach);
+EXPORT_SYMBOL_GPL(zl10353_attach);
--- a/drivers/media/pci/bt8xx/dst.c
+++ b/drivers/media/pci/bt8xx/dst.c
@@ -1722,7 +1722,7 @@ struct dst_state *dst_attach(struct dst_
return state; /* Manu (DST is a card not a frontend) */
}
-EXPORT_SYMBOL(dst_attach);
+EXPORT_SYMBOL_GPL(dst_attach);
static const struct dvb_frontend_ops dst_dvbt_ops = {
.delsys = { SYS_DVBT },
--- a/drivers/media/pci/bt8xx/dst_ca.c
+++ b/drivers/media/pci/bt8xx/dst_ca.c
@@ -668,7 +668,7 @@ struct dvb_device *dst_ca_attach(struct
return NULL;
}
-EXPORT_SYMBOL(dst_ca_attach);
+EXPORT_SYMBOL_GPL(dst_ca_attach);
MODULE_DESCRIPTION("DST DVB-S/T/C Combo CA driver");
MODULE_AUTHOR("Manu Abraham");
--- a/drivers/media/pci/ddbridge/ddbridge-dummy-fe.c
+++ b/drivers/media/pci/ddbridge/ddbridge-dummy-fe.c
@@ -112,7 +112,7 @@ struct dvb_frontend *ddbridge_dummy_fe_q
state->frontend.demodulator_priv = state;
return &state->frontend;
}
-EXPORT_SYMBOL(ddbridge_dummy_fe_qam_attach);
+EXPORT_SYMBOL_GPL(ddbridge_dummy_fe_qam_attach);
static const struct dvb_frontend_ops ddbridge_dummy_fe_qam_ops = {
.delsys = { SYS_DVBC_ANNEX_A },
--- a/drivers/media/tuners/fc0011.c
+++ b/drivers/media/tuners/fc0011.c
@@ -499,7 +499,7 @@ struct dvb_frontend *fc0011_attach(struc
return fe;
}
-EXPORT_SYMBOL(fc0011_attach);
+EXPORT_SYMBOL_GPL(fc0011_attach);
MODULE_DESCRIPTION("Fitipower FC0011 silicon tuner driver");
MODULE_AUTHOR("Michael Buesch <m@bues.ch>");
--- a/drivers/media/tuners/fc0012.c
+++ b/drivers/media/tuners/fc0012.c
@@ -495,7 +495,7 @@ err:
return fe;
}
-EXPORT_SYMBOL(fc0012_attach);
+EXPORT_SYMBOL_GPL(fc0012_attach);
MODULE_DESCRIPTION("Fitipower FC0012 silicon tuner driver");
MODULE_AUTHOR("Hans-Frieder Vogt <hfvogt@gmx.net>");
--- a/drivers/media/tuners/fc0013.c
+++ b/drivers/media/tuners/fc0013.c
@@ -608,7 +608,7 @@ struct dvb_frontend *fc0013_attach(struc
return fe;
}
-EXPORT_SYMBOL(fc0013_attach);
+EXPORT_SYMBOL_GPL(fc0013_attach);
MODULE_DESCRIPTION("Fitipower FC0013 silicon tuner driver");
MODULE_AUTHOR("Hans-Frieder Vogt <hfvogt@gmx.net>");
--- a/drivers/media/tuners/max2165.c
+++ b/drivers/media/tuners/max2165.c
@@ -410,7 +410,7 @@ struct dvb_frontend *max2165_attach(stru
return fe;
}
-EXPORT_SYMBOL(max2165_attach);
+EXPORT_SYMBOL_GPL(max2165_attach);
MODULE_AUTHOR("David T. L. Wong <davidtlwong@gmail.com>");
MODULE_DESCRIPTION("Maxim MAX2165 silicon tuner driver");
--- a/drivers/media/tuners/mc44s803.c
+++ b/drivers/media/tuners/mc44s803.c
@@ -356,7 +356,7 @@ error:
kfree(priv);
return NULL;
}
-EXPORT_SYMBOL(mc44s803_attach);
+EXPORT_SYMBOL_GPL(mc44s803_attach);
MODULE_AUTHOR("Jochen Friedrich");
MODULE_DESCRIPTION("Freescale MC44S803 silicon tuner driver");
--- a/drivers/media/tuners/mt2060.c
+++ b/drivers/media/tuners/mt2060.c
@@ -440,7 +440,7 @@ struct dvb_frontend * mt2060_attach(stru
return fe;
}
-EXPORT_SYMBOL(mt2060_attach);
+EXPORT_SYMBOL_GPL(mt2060_attach);
static int mt2060_probe(struct i2c_client *client,
const struct i2c_device_id *id)
--- a/drivers/media/tuners/mt2131.c
+++ b/drivers/media/tuners/mt2131.c
@@ -274,7 +274,7 @@ struct dvb_frontend * mt2131_attach(stru
fe->tuner_priv = priv;
return fe;
}
-EXPORT_SYMBOL(mt2131_attach);
+EXPORT_SYMBOL_GPL(mt2131_attach);
MODULE_AUTHOR("Steven Toth");
MODULE_DESCRIPTION("Microtune MT2131 silicon tuner driver");
--- a/drivers/media/tuners/mt2266.c
+++ b/drivers/media/tuners/mt2266.c
@@ -336,7 +336,7 @@ struct dvb_frontend * mt2266_attach(stru
mt2266_calibrate(priv);
return fe;
}
-EXPORT_SYMBOL(mt2266_attach);
+EXPORT_SYMBOL_GPL(mt2266_attach);
MODULE_AUTHOR("Olivier DANET");
MODULE_DESCRIPTION("Microtune MT2266 silicon tuner driver");
--- a/drivers/media/tuners/mxl5005s.c
+++ b/drivers/media/tuners/mxl5005s.c
@@ -4116,7 +4116,7 @@ struct dvb_frontend *mxl5005s_attach(str
fe->tuner_priv = state;
return fe;
}
-EXPORT_SYMBOL(mxl5005s_attach);
+EXPORT_SYMBOL_GPL(mxl5005s_attach);
MODULE_DESCRIPTION("MaxLinear MXL5005S silicon tuner driver");
MODULE_AUTHOR("Steven Toth");
--- a/drivers/media/tuners/qt1010.c
+++ b/drivers/media/tuners/qt1010.c
@@ -440,7 +440,7 @@ struct dvb_frontend * qt1010_attach(stru
fe->tuner_priv = priv;
return fe;
}
-EXPORT_SYMBOL(qt1010_attach);
+EXPORT_SYMBOL_GPL(qt1010_attach);
MODULE_DESCRIPTION("Quantek QT1010 silicon tuner driver");
MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
--- a/drivers/media/tuners/tda18218.c
+++ b/drivers/media/tuners/tda18218.c
@@ -336,7 +336,7 @@ struct dvb_frontend *tda18218_attach(str
return fe;
}
-EXPORT_SYMBOL(tda18218_attach);
+EXPORT_SYMBOL_GPL(tda18218_attach);
MODULE_DESCRIPTION("NXP TDA18218HN silicon tuner driver");
MODULE_AUTHOR("Antti Palosaari <crope@iki.fi>");
--- a/drivers/media/tuners/xc2028.c
+++ b/drivers/media/tuners/xc2028.c
@@ -1512,7 +1512,7 @@ fail:
return NULL;
}
-EXPORT_SYMBOL(xc2028_attach);
+EXPORT_SYMBOL_GPL(xc2028_attach);
MODULE_DESCRIPTION("Xceive xc2028/xc3028 tuner driver");
MODULE_AUTHOR("Michel Ludwig <michel.ludwig@gmail.com>");
--- a/drivers/media/tuners/xc4000.c
+++ b/drivers/media/tuners/xc4000.c
@@ -1742,7 +1742,7 @@ fail2:
xc4000_release(fe);
return NULL;
}
-EXPORT_SYMBOL(xc4000_attach);
+EXPORT_SYMBOL_GPL(xc4000_attach);
MODULE_AUTHOR("Steven Toth, Davide Ferri");
MODULE_DESCRIPTION("Xceive xc4000 silicon tuner driver");
--- a/drivers/media/tuners/xc5000.c
+++ b/drivers/media/tuners/xc5000.c
@@ -1460,7 +1460,7 @@ fail:
xc5000_release(fe);
return NULL;
}
-EXPORT_SYMBOL(xc5000_attach);
+EXPORT_SYMBOL_GPL(xc5000_attach);
MODULE_AUTHOR("Steven Toth");
MODULE_DESCRIPTION("Xceive xc5000 silicon tuner driver");
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 548/600] media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (546 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 547/600] media: dvb: symbol fixup for dvb_attach() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 549/600] Revert "scsi: qla2xxx: Fix buffer overrun" Greg Kroah-Hartman
` (62 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Konrad Dybcio, Stanimir Varbanov,
Hans Verkuil
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Konrad Dybcio <konrad.dybcio@linaro.org>
commit d74e481609808330b4625b3691cf01e1f56e255e upstream.
The startup procedure shouldn't be started with interrupts masked, as that
may entail silent failures.
Kick off initialization only after the interrupts are unmasked.
Cc: stable@vger.kernel.org # v4.12+
Fixes: d96d3f30c0f2 ("[media] media: venus: hfi: add Venus HFI files")
Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/media/platform/qcom/venus/hfi_venus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/media/platform/qcom/venus/hfi_venus.c
+++ b/drivers/media/platform/qcom/venus/hfi_venus.c
@@ -453,7 +453,6 @@ static int venus_boot_core(struct venus_
void __iomem *wrapper_base = hdev->core->wrapper_base;
int ret = 0;
- writel(BIT(VIDC_CTRL_INIT_CTRL_SHIFT), cpu_cs_base + VIDC_CTRL_INIT);
if (IS_V6(hdev->core)) {
mask_val = readl(wrapper_base + WRAPPER_INTR_MASK);
mask_val &= ~(WRAPPER_INTR_MASK_A2HWD_BASK_V6 |
@@ -464,6 +463,7 @@ static int venus_boot_core(struct venus_
writel(mask_val, wrapper_base + WRAPPER_INTR_MASK);
writel(1, cpu_cs_base + CPU_CS_SCIACMDARG3);
+ writel(BIT(VIDC_CTRL_INIT_CTRL_SHIFT), cpu_cs_base + VIDC_CTRL_INIT);
while (!ctrl_status && count < max_tries) {
ctrl_status = readl(cpu_cs_base + CPU_CS_SCIACMDARG0);
if ((ctrl_status & CPU_CS_SCIACMDARG0_ERROR_STATUS_MASK) == 4) {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 549/600] Revert "scsi: qla2xxx: Fix buffer overrun"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (547 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 548/600] media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 550/600] scsi: mpt3sas: Perform additional retries if doorbell read returns 0 Greg Kroah-Hartman
` (61 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nilesh Javali, Himanshu Madhani,
Martin K. Petersen
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nilesh Javali <njavali@marvell.com>
commit 641671d97b9199f1ba35ccc2222d4b189a6a5de5 upstream.
Revert due to Get PLOGI Template failed.
This reverts commit b68710a8094fdffe8dd4f7a82c82649f479bb453.
Cc: stable@vger.kernel.org
Signed-off-by: Nilesh Javali <njavali@marvell.com>
Link: https://lore.kernel.org/r/20230821130045.34850-9-njavali@marvell.com
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/scsi/qla2xxx/qla_init.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -5571,7 +5571,7 @@ static void qla_get_login_template(scsi_
__be32 *q;
memset(ha->init_cb, 0, ha->init_cb_size);
- sz = min_t(int, sizeof(struct fc_els_csp), ha->init_cb_size);
+ sz = min_t(int, sizeof(struct fc_els_flogi), ha->init_cb_size);
rval = qla24xx_get_port_login_templ(vha, ha->init_cb_dma,
ha->init_cb, sz);
if (rval != QLA_SUCCESS) {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 550/600] scsi: mpt3sas: Perform additional retries if doorbell read returns 0
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (548 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 549/600] Revert "scsi: qla2xxx: Fix buffer overrun" Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 551/600] PCI: Free released resource after coalescing Greg Kroah-Hartman
` (60 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Ranjan Kumar, Martin K. Petersen
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ranjan Kumar <ranjan.kumar@broadcom.com>
commit 4ca10f3e31745d35249a727ecd108eb58f0a8c5e upstream.
The driver retries certain register reads 3 times if the returned value is
0. This was done because the controller could return 0 for certain
registers if other registers were being accessed concurrently by the BMC.
In certain systems with increased BMC interactions, the register values
returned can be 0 for longer than 3 retries. Change the retry count from 3
to 30 for the affected registers to prevent problems with out-of-band
management.
Fixes: b899202901a8 ("scsi: mpt3sas: Add separate function for aero doorbell reads")
Cc: stable@vger.kernel.org
Signed-off-by: Ranjan Kumar <ranjan.kumar@broadcom.com>
Link: https://lore.kernel.org/r/20230829090020.5417-2-ranjan.kumar@broadcom.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/scsi/mpt3sas/mpt3sas_base.c | 46 +++++++++++++++++++++++++-----------
drivers/scsi/mpt3sas/mpt3sas_base.h | 1
2 files changed, 34 insertions(+), 13 deletions(-)
--- a/drivers/scsi/mpt3sas/mpt3sas_base.c
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.c
@@ -139,6 +139,9 @@ _base_get_ioc_facts(struct MPT3SAS_ADAPT
static void
_base_clear_outstanding_commands(struct MPT3SAS_ADAPTER *ioc);
+static u32
+_base_readl_ext_retry(const volatile void __iomem *addr);
+
/**
* mpt3sas_base_check_cmd_timeout - Function
* to check timeout and command termination due
@@ -214,6 +217,20 @@ _base_readl_aero(const volatile void __i
return ret_val;
}
+static u32
+_base_readl_ext_retry(const volatile void __iomem *addr)
+{
+ u32 i, ret_val;
+
+ for (i = 0 ; i < 30 ; i++) {
+ ret_val = readl(addr);
+ if (ret_val == 0)
+ continue;
+ }
+
+ return ret_val;
+}
+
static inline u32
_base_readl(const volatile void __iomem *addr)
{
@@ -941,7 +958,7 @@ mpt3sas_halt_firmware(struct MPT3SAS_ADA
dump_stack();
- doorbell = ioc->base_readl(&ioc->chip->Doorbell);
+ doorbell = ioc->base_readl_ext_retry(&ioc->chip->Doorbell);
if ((doorbell & MPI2_IOC_STATE_MASK) == MPI2_IOC_STATE_FAULT) {
mpt3sas_print_fault_code(ioc, doorbell &
MPI2_DOORBELL_DATA_MASK);
@@ -6697,7 +6714,7 @@ mpt3sas_base_get_iocstate(struct MPT3SAS
{
u32 s, sc;
- s = ioc->base_readl(&ioc->chip->Doorbell);
+ s = ioc->base_readl_ext_retry(&ioc->chip->Doorbell);
sc = s & MPI2_IOC_STATE_MASK;
return cooked ? sc : s;
}
@@ -6842,7 +6859,7 @@ _base_wait_for_doorbell_ack(struct MPT3S
__func__, count, timeout));
return 0;
} else if (int_status & MPI2_HIS_IOC2SYS_DB_STATUS) {
- doorbell = ioc->base_readl(&ioc->chip->Doorbell);
+ doorbell = ioc->base_readl_ext_retry(&ioc->chip->Doorbell);
if ((doorbell & MPI2_IOC_STATE_MASK) ==
MPI2_IOC_STATE_FAULT) {
mpt3sas_print_fault_code(ioc, doorbell);
@@ -6882,7 +6899,7 @@ _base_wait_for_doorbell_not_used(struct
count = 0;
cntdn = 1000 * timeout;
do {
- doorbell_reg = ioc->base_readl(&ioc->chip->Doorbell);
+ doorbell_reg = ioc->base_readl_ext_retry(&ioc->chip->Doorbell);
if (!(doorbell_reg & MPI2_DOORBELL_USED)) {
dhsprintk(ioc,
ioc_info(ioc, "%s: successful count(%d), timeout(%d)\n",
@@ -7030,7 +7047,7 @@ _base_handshake_req_reply_wait(struct MP
__le32 *mfp;
/* make sure doorbell is not in use */
- if ((ioc->base_readl(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
+ if ((ioc->base_readl_ext_retry(&ioc->chip->Doorbell) & MPI2_DOORBELL_USED)) {
ioc_err(ioc, "doorbell is in use (line=%d)\n", __LINE__);
return -EFAULT;
}
@@ -7079,7 +7096,7 @@ _base_handshake_req_reply_wait(struct MP
}
/* read the first two 16-bits, it gives the total length of the reply */
- reply[0] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
+ reply[0] = le16_to_cpu(ioc->base_readl_ext_retry(&ioc->chip->Doorbell)
& MPI2_DOORBELL_DATA_MASK);
writel(0, &ioc->chip->HostInterruptStatus);
if ((_base_wait_for_doorbell_int(ioc, 5))) {
@@ -7087,7 +7104,7 @@ _base_handshake_req_reply_wait(struct MP
__LINE__);
return -EFAULT;
}
- reply[1] = le16_to_cpu(ioc->base_readl(&ioc->chip->Doorbell)
+ reply[1] = le16_to_cpu(ioc->base_readl_ext_retry(&ioc->chip->Doorbell)
& MPI2_DOORBELL_DATA_MASK);
writel(0, &ioc->chip->HostInterruptStatus);
@@ -7098,10 +7115,10 @@ _base_handshake_req_reply_wait(struct MP
return -EFAULT;
}
if (i >= reply_bytes/2) /* overflow case */
- ioc->base_readl(&ioc->chip->Doorbell);
+ ioc->base_readl_ext_retry(&ioc->chip->Doorbell);
else
reply[i] = le16_to_cpu(
- ioc->base_readl(&ioc->chip->Doorbell)
+ ioc->base_readl_ext_retry(&ioc->chip->Doorbell)
& MPI2_DOORBELL_DATA_MASK);
writel(0, &ioc->chip->HostInterruptStatus);
}
@@ -7960,7 +7977,7 @@ _base_diag_reset(struct MPT3SAS_ADAPTER
goto out;
}
- host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
+ host_diagnostic = ioc->base_readl_ext_retry(&ioc->chip->HostDiagnostic);
drsprintk(ioc,
ioc_info(ioc, "wrote magic sequence: count(%d), host_diagnostic(0x%08x)\n",
count, host_diagnostic));
@@ -7980,7 +7997,7 @@ _base_diag_reset(struct MPT3SAS_ADAPTER
for (count = 0; count < (300000000 /
MPI2_HARD_RESET_PCIE_SECOND_READ_DELAY_MICRO_SEC); count++) {
- host_diagnostic = ioc->base_readl(&ioc->chip->HostDiagnostic);
+ host_diagnostic = ioc->base_readl_ext_retry(&ioc->chip->HostDiagnostic);
if (host_diagnostic == 0xFFFFFFFF) {
ioc_info(ioc,
@@ -8370,10 +8387,13 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPT
ioc->rdpq_array_enable_assigned = 0;
ioc->use_32bit_dma = false;
ioc->dma_mask = 64;
- if (ioc->is_aero_ioc)
+ if (ioc->is_aero_ioc) {
ioc->base_readl = &_base_readl_aero;
- else
+ ioc->base_readl_ext_retry = &_base_readl_ext_retry;
+ } else {
ioc->base_readl = &_base_readl;
+ ioc->base_readl_ext_retry = &_base_readl;
+ }
r = mpt3sas_base_map_resources(ioc);
if (r)
goto out_free_resources;
--- a/drivers/scsi/mpt3sas/mpt3sas_base.h
+++ b/drivers/scsi/mpt3sas/mpt3sas_base.h
@@ -1618,6 +1618,7 @@ struct MPT3SAS_ADAPTER {
u8 diag_trigger_active;
u8 atomic_desc_capable;
BASE_READ_REG base_readl;
+ BASE_READ_REG base_readl_ext_retry;
struct SL_WH_MASTER_TRIGGER_T diag_trigger_master;
struct SL_WH_EVENT_TRIGGERS_T diag_trigger_event;
struct SL_WH_SCSI_TRIGGERS_T diag_trigger_scsi;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 551/600] PCI: Free released resource after coalescing
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (549 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 550/600] scsi: mpt3sas: Perform additional retries if doorbell read returns 0 Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 552/600] PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation Greg Kroah-Hartman
` (59 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Kalle Valo, Ross Lagerwall,
Bjorn Helgaas
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ross Lagerwall <ross.lagerwall@citrix.com>
commit 8ec9c1d5d0a5a4744516adb483b97a238892f9d5 upstream.
release_resource() doesn't actually free the resource or resource list
entry so free the resource list entry to avoid a leak.
Closes: https://lore.kernel.org/r/878r9sga1t.fsf@kernel.org/
Fixes: e54223275ba1 ("PCI: Release resource invalidated by coalescing")
Link: https://lore.kernel.org/r/20230906110846.225369-1-ross.lagerwall@citrix.com
Reported-by: Kalle Valo <kvalo@kernel.org>
Tested-by: Kalle Valo <kvalo@kernel.org>
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: stable@vger.kernel.org # v5.16+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/probe.c | 1 +
1 file changed, 1 insertion(+)
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -996,6 +996,7 @@ static int pci_register_host_bridge(stru
res = window->res;
if (!res->flags && !res->start && !res->end) {
release_resource(res);
+ resource_list_destroy_entry(window);
continue;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 552/600] PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (550 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 551/600] PCI: Free released resource after coalescing Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 553/600] PCI/PM: Only read PCI_PM_CTRL register when available Greg Kroah-Hartman
` (58 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Dexuan Cui, Lorenzo Pieralisi,
sathyanarayanan.kuppuswamy, Michael Kelley
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dexuan Cui <decui@microsoft.com>
commit 04bbe863241a9be7d57fb4cf217ee4a72f480e70 upstream.
When a Linux VM with an assigned PCI device runs on Hyper-V, if the PCI
device driver is not loaded yet (i.e. MSI-X/MSI is not enabled on the
device yet), doing a VM hibernation triggers a panic in
hv_pci_restore_msi_msg() -> msi_lock_descs(&pdev->dev), because
pdev->dev.msi.data is still NULL.
Avoid the panic by checking if MSI-X/MSI is enabled.
Link: https://lore.kernel.org/r/20230816175939.21566-1-decui@microsoft.com
Fixes: dc2b453290c4 ("PCI: hv: Rework MSI handling")
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Reviewed-by: sathyanarayanan.kuppuswamy@linux.intel.com
Reviewed-by: Michael Kelley <mikelley@microsoft.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/controller/pci-hyperv.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/pci/controller/pci-hyperv.c
+++ b/drivers/pci/controller/pci-hyperv.c
@@ -3930,6 +3930,9 @@ static int hv_pci_restore_msi_msg(struct
struct msi_desc *entry;
int ret = 0;
+ if (!pdev->msi_enabled && !pdev->msix_enabled)
+ return 0;
+
msi_lock_descs(&pdev->dev);
msi_for_each_desc(entry, &pdev->dev, MSI_DESC_ASSOCIATED) {
irq_data = irq_get_irq_data(entry->irq);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 553/600] PCI/PM: Only read PCI_PM_CTRL register when available
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (551 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 552/600] PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 554/600] ntb: Drop packets when qp link is down Greg Kroah-Hartman
` (57 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Feiyang Chen, Bjorn Helgaas,
Rafael J. Wysocki
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Feiyang Chen <chenfeiyang@loongson.cn>
commit 5694ba13b004eea683c6d4faeb6d6e7a9636bda0 upstream.
For a device with no Power Management Capability, pci_power_up() previously
returned 0 (success) if the platform was able to put the device in D0,
which led to pci_set_full_power_state() trying to read PCI_PM_CTRL, even
though it doesn't exist.
Since dev->pm_cap == 0 in this case, pci_set_full_power_state() actually
read the wrong register, interpreted it as PCI_PM_CTRL, and corrupted
dev->current_state. This led to messages like this in some cases:
pci 0000:01:00.0: Refused to change power state from D3hot to D0
To prevent this, make pci_power_up() always return a negative failure code
if the device lacks a Power Management Capability, even if non-PCI platform
power management has been able to put the device in D0. The failure will
prevent pci_set_full_power_state() from trying to access PCI_PM_CTRL.
Fixes: e200904b275c ("PCI/PM: Split pci_power_up()")
Link: https://lore.kernel.org/r/20230824013738.1894965-1-chenfeiyang@loongson.cn
Signed-off-by: Feiyang Chen <chenfeiyang@loongson.cn>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: stable@vger.kernel.org # v5.19+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/pci.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -1193,6 +1193,10 @@ static int pci_dev_wait(struct pci_dev *
*
* On success, return 0 or 1, depending on whether or not it is necessary to
* restore the device's BARs subsequently (1 is returned in that case).
+ *
+ * On failure, return a negative error code. Always return failure if @dev
+ * lacks a Power Management Capability, even if the platform was able to
+ * put the device in D0 via non-PCI means.
*/
int pci_power_up(struct pci_dev *dev)
{
@@ -1209,9 +1213,6 @@ int pci_power_up(struct pci_dev *dev)
else
dev->current_state = state;
- if (state == PCI_D0)
- return 0;
-
return -EIO;
}
@@ -1269,8 +1270,12 @@ static int pci_set_full_power_state(stru
int ret;
ret = pci_power_up(dev);
- if (ret < 0)
+ if (ret < 0) {
+ if (dev->current_state == PCI_D0)
+ return 0;
+
return ret;
+ }
pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr);
dev->current_state = pmcsr & PCI_PM_CTRL_STATE_MASK;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 554/600] ntb: Drop packets when qp link is down
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (552 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 553/600] PCI/PM: Only read PCI_PM_CTRL register when available Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 555/600] ntb: Clean up tx tail index on link down Greg Kroah-Hartman
` (56 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yuan Y Lu, Logan Gunthorpe,
Dave Jiang, Jon Mason
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Jiang <dave.jiang@intel.com>
commit f195a1a6fe416882984f8bd6c61afc1383171860 upstream.
Currently when the transport receive packets after netdev has closed the
transport returns error and triggers tx errors to be incremented and
carrier to be stopped. There is no reason to return error if the device is
already closed. Drop the packet and return 0.
Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
Reported-by: Yuan Y Lu <yuan.y.lu@intel.com>
Tested-by: Yuan Y Lu <yuan.y.lu@intel.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/ntb/ntb_transport.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -2276,9 +2276,13 @@ int ntb_transport_tx_enqueue(struct ntb_
struct ntb_queue_entry *entry;
int rc;
- if (!qp || !qp->link_is_up || !len)
+ if (!qp || !len)
return -EINVAL;
+ /* If the qp link is down already, just ignore. */
+ if (!qp->link_is_up)
+ return 0;
+
entry = ntb_list_rm(&qp->ntb_tx_free_q_lock, &qp->tx_free_q);
if (!entry) {
qp->tx_err_no_buf++;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 555/600] ntb: Clean up tx tail index on link down
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (553 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 554/600] ntb: Drop packets when qp link is down Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 556/600] ntb: Fix calculation ntb_transport_tx_free_entry() Greg Kroah-Hartman
` (55 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yuan Y Lu, Logan Gunthorpe,
Dave Jiang, Jon Mason
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Jiang <dave.jiang@intel.com>
commit cc79bd2738c2d40aba58b2be6ce47dc0e471df0e upstream.
The tx tail index is not reset when the link goes down. This causes the
tail index to go out of sync when the link goes down and comes back up.
Refactor the ntb_qp_link_down_reset() and reset the tail index as well.
Fixes: 2849b5d70641 ("NTB: Reset transport QP link stats on down")
Reported-by: Yuan Y Lu <yuan.y.lu@intel.com>
Tested-by: Yuan Y Lu <yuan.y.lu@intel.com>
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/ntb/ntb_transport.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -909,7 +909,7 @@ static int ntb_set_mw(struct ntb_transpo
return 0;
}
-static void ntb_qp_link_down_reset(struct ntb_transport_qp *qp)
+static void ntb_qp_link_context_reset(struct ntb_transport_qp *qp)
{
qp->link_is_up = false;
qp->active = false;
@@ -932,6 +932,13 @@ static void ntb_qp_link_down_reset(struc
qp->tx_async = 0;
}
+static void ntb_qp_link_down_reset(struct ntb_transport_qp *qp)
+{
+ ntb_qp_link_context_reset(qp);
+ if (qp->remote_rx_info)
+ qp->remote_rx_info->entry = qp->rx_max_entry - 1;
+}
+
static void ntb_qp_link_cleanup(struct ntb_transport_qp *qp)
{
struct ntb_transport_ctx *nt = qp->transport;
@@ -1174,7 +1181,7 @@ static int ntb_transport_init_queue(stru
qp->ndev = nt->ndev;
qp->client_ready = false;
qp->event_handler = NULL;
- ntb_qp_link_down_reset(qp);
+ ntb_qp_link_context_reset(qp);
if (mw_num < qp_count % mw_count)
num_qps_mw = qp_count / mw_count + 1;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 556/600] ntb: Fix calculation ntb_transport_tx_free_entry()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (554 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 555/600] ntb: Clean up tx tail index on link down Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 557/600] Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" Greg Kroah-Hartman
` (54 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Logan Gunthorpe, renlonglong,
Dave Jiang, Jon Mason
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Jiang <dave.jiang@intel.com>
commit 5a7693e6bbf19b22fd6c1d2c4b7beb0a03969e2c upstream.
ntb_transport_tx_free_entry() never returns 0 with the current
calculation. If head == tail, then it would return qp->tx_max_entry.
Change compare to tail >= head and when they are equal, a 0 would be
returned.
Fixes: e74bfeedad08 ("NTB: Add flow control to the ntb_netdev")
Reviewed-by: Logan Gunthorpe <logang@deltatee.com>
Signed-off-by: renlonglong <ren.longlong@h3c.com>
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Jon Mason <jdmason@kudzu.us>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/ntb/ntb_transport.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/ntb/ntb_transport.c
+++ b/drivers/ntb/ntb_transport.c
@@ -2429,7 +2429,7 @@ unsigned int ntb_transport_tx_free_entry
unsigned int head = qp->tx_index;
unsigned int tail = qp->remote_rx_info->entry;
- return tail > head ? tail - head : qp->tx_max_entry + tail - head;
+ return tail >= head ? tail - head : qp->tx_max_entry + tail - head;
}
EXPORT_SYMBOL_GPL(ntb_transport_tx_free_entry);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 557/600] Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (555 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 556/600] ntb: Fix calculation ntb_transport_tx_free_entry() Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 558/600] block: dont add or resize partition on the disk with GENHD_FL_NO_PART Greg Kroah-Hartman
` (53 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Bjorn Helgaas
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bjorn Helgaas <bhelgaas@google.com>
commit 5260bd6d36c83c5b269c33baaaf8c78e520908b0 upstream.
This reverts commit d5af729dc2071273f14cbb94abbc60608142fd83.
d5af729dc207 ("PCI: Mark NVIDIA T4 GPUs to avoid bus reset") avoided
Secondary Bus Reset on the T4 because the reset seemed to not work when the
T4 was directly attached to a Root Port.
But NVIDIA thinks the issue is probably related to some issue with the Root
Port, not with the T4. The T4 provides neither PM nor FLR reset, so
masking bus reset compromises this device for assignment scenarios.
Revert d5af729dc207 as requested by Wu Zongyong. This will leave SBR
broken in the specific configuration Wu tested, as it was in v6.5, so Wu
will debug that further.
Link: https://lore.kernel.org/r/ZPqMCDWvITlOLHgJ@wuzongyong-alibaba
Link: https://lore.kernel.org/r/20230908201104.GA305023@bhelgaas
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/pci/quirks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3631,7 +3631,7 @@ static void quirk_no_bus_reset(struct pc
*/
static void quirk_nvidia_no_bus_reset(struct pci_dev *dev)
{
- if ((dev->device & 0xffc0) == 0x2340 || dev->device == 0x1eb8)
+ if ((dev->device & 0xffc0) == 0x2340)
quirk_no_bus_reset(dev);
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 558/600] block: dont add or resize partition on the disk with GENHD_FL_NO_PART
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (556 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 557/600] Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 559/600] procfs: block chmod on /proc/thread-self/comm Greg Kroah-Hartman
` (52 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Li Lingfeng, Christoph Hellwig,
Jens Axboe
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Li Lingfeng <lilingfeng3@huawei.com>
commit 1a721de8489fa559ff4471f73c58bb74ac5580d3 upstream.
Commit a33df75c6328 ("block: use an xarray for disk->part_tbl") remove
disk_expand_part_tbl() in add_partition(), which means all kinds of
devices will support extended dynamic `dev_t`.
However, some devices with GENHD_FL_NO_PART are not expected to add or
resize partition.
Fix this by adding check of GENHD_FL_NO_PART before add or resize
partition.
Fixes: a33df75c6328 ("block: use an xarray for disk->part_tbl")
Signed-off-by: Li Lingfeng <lilingfeng3@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20230831075900.1725842-1-lilingfeng@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
block/ioctl.c | 2 ++
1 file changed, 2 insertions(+)
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -20,6 +20,8 @@ static int blkpg_do_ioctl(struct block_d
struct blkpg_partition p;
long long start, length;
+ if (disk->flags & GENHD_FL_NO_PART)
+ return -EINVAL;
if (!capable(CAP_SYS_ADMIN))
return -EACCES;
if (copy_from_user(&p, upart, sizeof(struct blkpg_partition)))
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 559/600] procfs: block chmod on /proc/thread-self/comm
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (557 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 558/600] block: dont add or resize partition on the disk with GENHD_FL_NO_PART Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 560/600] parisc: Fix /proc/cpuinfo output for lscpu Greg Kroah-Hartman
` (51 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Aleksa Sarai, Christian Brauner
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Aleksa Sarai <cyphar@cyphar.com>
commit ccf61486fe1e1a48e18c638d1813cda77b3c0737 upstream.
Due to an oversight in commit 1b3044e39a89 ("procfs: fix pthread
cross-thread naming if !PR_DUMPABLE") in switching from REG to NOD,
chmod operations on /proc/thread-self/comm were no longer blocked as
they are on almost all other procfs files.
A very similar situation with /proc/self/environ was used to as a root
exploit a long time ago, but procfs has SB_I_NOEXEC so this is simply a
correctness issue.
Ref: https://lwn.net/Articles/191954/
Ref: 6d76fa58b050 ("Don't allow chmod() on the /proc/<pid>/ files")
Fixes: 1b3044e39a89 ("procfs: fix pthread cross-thread naming if !PR_DUMPABLE")
Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
Message-Id: <20230713141001.27046-1-cyphar@cyphar.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/proc/base.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -3581,7 +3581,8 @@ static int proc_tid_comm_permission(stru
}
static const struct inode_operations proc_tid_comm_inode_operations = {
- .permission = proc_tid_comm_permission,
+ .setattr = proc_setattr,
+ .permission = proc_tid_comm_permission,
};
/*
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 560/600] parisc: Fix /proc/cpuinfo output for lscpu
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (558 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 559/600] procfs: block chmod on /proc/thread-self/comm Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 561/600] drm/amd/display: Add smu write msg id fail retry process Greg Kroah-Hartman
` (50 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Helge Deller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Helge Deller <deller@gmx.de>
commit 9f5ba4b3e1b3c123eeca5d2d09161e8720048b5c upstream.
The lscpu command is broken since commit cab56b51ec0e ("parisc: Fix
device names in /proc/iomem") added the PA pathname to all PA
devices, includig the CPUs.
lscpu parses /proc/cpuinfo and now believes it found different CPU
types since every CPU is listed with an unique identifier (PA
pathname).
Fix this problem by simply dropping the PA pathname when listing the
CPUs in /proc/cpuinfo. There is no need to show the pathname in this
procfs file.
Fixes: cab56b51ec0e ("parisc: Fix device names in /proc/iomem")
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/parisc/kernel/processor.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -372,10 +372,18 @@ int
show_cpuinfo (struct seq_file *m, void *v)
{
unsigned long cpu;
+ char cpu_name[60], *p;
+
+ /* strip PA path from CPU name to not confuse lscpu */
+ strlcpy(cpu_name, per_cpu(cpu_data, 0).dev->name, sizeof(cpu_name));
+ p = strrchr(cpu_name, '[');
+ if (p)
+ *(--p) = 0;
for_each_online_cpu(cpu) {
- const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
#ifdef CONFIG_SMP
+ const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
+
if (0 == cpuinfo->hpa)
continue;
#endif
@@ -420,8 +428,7 @@ show_cpuinfo (struct seq_file *m, void *
seq_printf(m, "model\t\t: %s - %s\n",
boot_cpu_data.pdc.sys_model_name,
- cpuinfo->dev ?
- cpuinfo->dev->name : "Unknown");
+ cpu_name);
seq_printf(m, "hversion\t: 0x%08x\n"
"sversion\t: 0x%08x\n",
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 561/600] drm/amd/display: Add smu write msg id fail retry process
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (559 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 560/600] parisc: Fix /proc/cpuinfo output for lscpu Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks Greg Kroah-Hartman
` (49 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Charlene Liu, Hamza Mahfooz,
Fudong Wang, Alex Deucher
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Fudong Wang <fudong.wang@amd.com>
commit 72105dcfa3d12b5af49311f857e3490baa225135 upstream.
A benchmark stress test (12-40 machines x 48hours) found that DCN315 has
cases where DC writes to an indirect register to set the smu clock msg
id, but when we go to read the same indirect register the returned msg
id doesn't match with what we just set it to. So, to fix this retry the
write until the register's value matches with the requested value.
Cc: stable@vger.kernel.org # 6.1+
Fixes: f94903996140 ("drm/amd/display: Add DCN315 CLK_MGR")
Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Fudong Wang <fudong.wang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c | 20 ++++++++++---
1 file changed, 16 insertions(+), 4 deletions(-)
--- a/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c
+++ b/drivers/gpu/drm/amd/display/dc/clk_mgr/dcn315/dcn315_smu.c
@@ -32,6 +32,7 @@
#define MAX_INSTANCE 6
#define MAX_SEGMENT 6
+#define SMU_REGISTER_WRITE_RETRY_COUNT 5
struct IP_BASE_INSTANCE
{
@@ -134,6 +135,8 @@ static int dcn315_smu_send_msg_with_para
unsigned int msg_id, unsigned int param)
{
uint32_t result;
+ uint32_t i = 0;
+ uint32_t read_back_data;
result = dcn315_smu_wait_for_response(clk_mgr, 10, 200000);
@@ -150,10 +153,19 @@ static int dcn315_smu_send_msg_with_para
/* Set the parameter register for the SMU message, unit is Mhz */
REG_WRITE(MP1_SMN_C2PMSG_37, param);
- /* Trigger the message transaction by writing the message ID */
- generic_write_indirect_reg(CTX,
- REG_NBIO(RSMU_INDEX), REG_NBIO(RSMU_DATA),
- mmMP1_C2PMSG_3, msg_id);
+ for (i = 0; i < SMU_REGISTER_WRITE_RETRY_COUNT; i++) {
+ /* Trigger the message transaction by writing the message ID */
+ generic_write_indirect_reg(CTX,
+ REG_NBIO(RSMU_INDEX), REG_NBIO(RSMU_DATA),
+ mmMP1_C2PMSG_3, msg_id);
+ read_back_data = generic_read_indirect_reg(CTX,
+ REG_NBIO(RSMU_INDEX), REG_NBIO(RSMU_DATA),
+ mmMP1_C2PMSG_3);
+ if (read_back_data == msg_id)
+ break;
+ udelay(2);
+ smu_print("SMU msg id write fail %x times. \n", i + 1);
+ }
result = dcn315_smu_wait_for_response(clk_mgr, 10, 200000);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (560 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 561/600] drm/amd/display: Add smu write msg id fail retry process Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-14 8:51 ` Luis Gerhorst
2023-09-11 13:49 ` [PATCH 6.1 563/600] dlm: fix plock lookup when using multiple lockspaces Greg Kroah-Hartman
` (48 subsequent siblings)
610 siblings, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yonghong Song, Alexei Starovoitov,
Yafang Shao, Eduard Zingerman, Alexei Starovoitov
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yafang Shao <laoar.shao@gmail.com>
commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
After we converted the capabilities of our networking-bpf program from
cap_sys_admin to cap_net_admin+cap_bpf, our networking-bpf program
failed to start. Because it failed the bpf verifier, and the error log
is "R3 pointer comparison prohibited".
A simple reproducer as follows,
SEC("cls-ingress")
int ingress(struct __sk_buff *skb)
{
struct iphdr *iph = (void *)(long)skb->data + sizeof(struct ethhdr);
if ((long)(iph + 1) > (long)skb->data_end)
return TC_ACT_STOLEN;
return TC_ACT_OK;
}
Per discussion with Yonghong and Alexei [1], comparison of two packet
pointers is not a pointer leak. This patch fixes it.
Our local kernel is 6.1.y and we expect this fix to be backported to
6.1.y, so stable is CCed.
[1]. https://lore.kernel.org/bpf/CAADnVQ+Nmspr7Si+pxWn8zkE7hX-7s93ugwC+94aXSy4uQ9vBg@mail.gmail.com/
Suggested-by: Yonghong Song <yonghong.song@linux.dev>
Suggested-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230823020703.3790-2-laoar.shao@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/bpf/verifier.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -10401,6 +10401,12 @@ static int check_cond_jmp_op(struct bpf_
return -EINVAL;
}
+ /* check src2 operand */
+ err = check_reg_arg(env, insn->dst_reg, SRC_OP);
+ if (err)
+ return err;
+
+ dst_reg = ®s[insn->dst_reg];
if (BPF_SRC(insn->code) == BPF_X) {
if (insn->imm != 0) {
verbose(env, "BPF_JMP/JMP32 uses reserved fields\n");
@@ -10412,12 +10418,13 @@ static int check_cond_jmp_op(struct bpf_
if (err)
return err;
- if (is_pointer_value(env, insn->src_reg)) {
+ src_reg = ®s[insn->src_reg];
+ if (!(reg_is_pkt_pointer_any(dst_reg) && reg_is_pkt_pointer_any(src_reg)) &&
+ is_pointer_value(env, insn->src_reg)) {
verbose(env, "R%d pointer comparison prohibited\n",
insn->src_reg);
return -EACCES;
}
- src_reg = ®s[insn->src_reg];
} else {
if (insn->src_reg != BPF_REG_0) {
verbose(env, "BPF_JMP/JMP32 uses reserved fields\n");
@@ -10425,12 +10432,6 @@ static int check_cond_jmp_op(struct bpf_
}
}
- /* check src2 operand */
- err = check_reg_arg(env, insn->dst_reg, SRC_OP);
- if (err)
- return err;
-
- dst_reg = ®s[insn->dst_reg];
is_jmp32 = BPF_CLASS(insn->code) == BPF_JMP32;
if (BPF_SRC(insn->code) == BPF_K) {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 563/600] dlm: fix plock lookup when using multiple lockspaces
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (561 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 564/600] dccp: Fix out of bounds access in DCCP error handler Greg Kroah-Hartman
` (47 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Barry Marson, Alexander Aring,
David Teigland
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Aring <aahringo@redhat.com>
commit 7c53e847ff5e97f033fdd31f71949807633d506b upstream.
All posix lock ops, for all lockspaces (gfs2 file systems) are
sent to userspace (dlm_controld) through a single misc device.
The dlm_controld daemon reads the ops from the misc device
and sends them to other cluster nodes using separate, per-lockspace
cluster api communication channels. The ops for a single lockspace
are ordered at this level, so that the results are received in
the same sequence that the requests were sent. When the results
are sent back to the kernel via the misc device, they are again
funneled through the single misc device for all lockspaces. When
the dlm code in the kernel processes the results from the misc
device, these results will be returned in the same sequence that
the requests were sent, on a per-lockspace basis. A recent change
in this request/reply matching code missed the "per-lockspace"
check (fsid comparison) when matching request and reply, so replies
could be incorrectly matched to requests from other lockspaces.
Cc: stable@vger.kernel.org
Reported-by: Barry Marson <bmarson@redhat.com>
Fixes: 57e2c2f2d94c ("fs: dlm: fix mismatch of plock results from userspace")
Signed-off-by: Alexander Aring <aahringo@redhat.com>
Signed-off-by: David Teigland <teigland@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/dlm/plock.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--- a/fs/dlm/plock.c
+++ b/fs/dlm/plock.c
@@ -455,7 +455,8 @@ static ssize_t dev_write(struct file *fi
}
} else {
list_for_each_entry(iter, &recv_list, list) {
- if (!iter->info.wait) {
+ if (!iter->info.wait &&
+ iter->info.fsid == info.fsid) {
op = iter;
break;
}
@@ -467,8 +468,7 @@ static ssize_t dev_write(struct file *fi
if (info.wait)
WARN_ON(op->info.optype != DLM_PLOCK_OP_LOCK);
else
- WARN_ON(op->info.fsid != info.fsid ||
- op->info.number != info.number ||
+ WARN_ON(op->info.number != info.number ||
op->info.owner != info.owner ||
op->info.optype != info.optype);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 564/600] dccp: Fix out of bounds access in DCCP error handler
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (562 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 563/600] dlm: fix plock lookup when using multiple lockspaces Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 565/600] x86/sev: Make enc_dec_hypercall() accept a size instead of npages Greg Kroah-Hartman
` (46 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Jann Horn, Kuniyuki Iwashima,
David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jann Horn <jannh@google.com>
commit 977ad86c2a1bcaf58f01ab98df5cc145083c489c upstream.
There was a previous attempt to fix an out-of-bounds access in the DCCP
error handlers, but that fix assumed that the error handlers only want
to access the first 8 bytes of the DCCP header. Actually, they also look
at the DCCP sequence number, which is stored beyond 8 bytes, so an
explicit pskb_may_pull() is required.
Fixes: 6706a97fec96 ("dccp: fix out of bound access in dccp_v4_err()")
Fixes: 1aa9d1a0e7ee ("ipv6: dccp: fix out of bound access in dccp_v6_err()")
Cc: stable@vger.kernel.org
Signed-off-by: Jann Horn <jannh@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/dccp/ipv4.c | 13 +++++++++----
net/dccp/ipv6.c | 15 ++++++++++-----
2 files changed, 19 insertions(+), 9 deletions(-)
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -255,12 +255,17 @@ static int dccp_v4_err(struct sk_buff *s
int err;
struct net *net = dev_net(skb->dev);
- /* Only need dccph_dport & dccph_sport which are the first
- * 4 bytes in dccp header.
+ /* For the first __dccp_basic_hdr_len() check, we only need dh->dccph_x,
+ * which is in byte 7 of the dccp header.
* Our caller (icmp_socket_deliver()) already pulled 8 bytes for us.
+ *
+ * Later on, we want to access the sequence number fields, which are
+ * beyond 8 bytes, so we have to pskb_may_pull() ourselves.
*/
- BUILD_BUG_ON(offsetofend(struct dccp_hdr, dccph_sport) > 8);
- BUILD_BUG_ON(offsetofend(struct dccp_hdr, dccph_dport) > 8);
+ dh = (struct dccp_hdr *)(skb->data + offset);
+ if (!pskb_may_pull(skb, offset + __dccp_basic_hdr_len(dh)))
+ return -EINVAL;
+ iph = (struct iphdr *)skb->data;
dh = (struct dccp_hdr *)(skb->data + offset);
sk = __inet_lookup_established(net, &dccp_hashinfo,
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -74,7 +74,7 @@ static inline __u64 dccp_v6_init_sequenc
static int dccp_v6_err(struct sk_buff *skb, struct inet6_skb_parm *opt,
u8 type, u8 code, int offset, __be32 info)
{
- const struct ipv6hdr *hdr = (const struct ipv6hdr *)skb->data;
+ const struct ipv6hdr *hdr;
const struct dccp_hdr *dh;
struct dccp_sock *dp;
struct ipv6_pinfo *np;
@@ -83,12 +83,17 @@ static int dccp_v6_err(struct sk_buff *s
__u64 seq;
struct net *net = dev_net(skb->dev);
- /* Only need dccph_dport & dccph_sport which are the first
- * 4 bytes in dccp header.
+ /* For the first __dccp_basic_hdr_len() check, we only need dh->dccph_x,
+ * which is in byte 7 of the dccp header.
* Our caller (icmpv6_notify()) already pulled 8 bytes for us.
+ *
+ * Later on, we want to access the sequence number fields, which are
+ * beyond 8 bytes, so we have to pskb_may_pull() ourselves.
*/
- BUILD_BUG_ON(offsetofend(struct dccp_hdr, dccph_sport) > 8);
- BUILD_BUG_ON(offsetofend(struct dccp_hdr, dccph_dport) > 8);
+ dh = (struct dccp_hdr *)(skb->data + offset);
+ if (!pskb_may_pull(skb, offset + __dccp_basic_hdr_len(dh)))
+ return -EINVAL;
+ hdr = (const struct ipv6hdr *)skb->data;
dh = (struct dccp_hdr *)(skb->data + offset);
sk = __inet6_lookup_established(net, &dccp_hashinfo,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 565/600] x86/sev: Make enc_dec_hypercall() accept a size instead of npages
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (563 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 564/600] dccp: Fix out of bounds access in DCCP error handler Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 566/600] r8169: fix ASPM-related issues on a number of systems with NIC version from RTL8168h Greg Kroah-Hartman
` (45 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Steve Rutherford, Ingo Molnar,
Tom Lendacky, Pankaj Gupta, Ben Hillier
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steve Rutherford <srutherford@google.com>
commit ac3f9c9f1b37edaa7d1a9b908bc79d843955a1a2 upstream.
enc_dec_hypercall() accepted a page count instead of a size, which
forced its callers to round up. As a result, non-page aligned
vaddrs caused pages to be spuriously marked as decrypted via the
encryption status hypercall, which in turn caused consistent
corruption of pages during live migration. Live migration requires
accurate encryption status information to avoid migrating pages
from the wrong perspective.
Fixes: 064ce6c550a0 ("mm: x86: Invoke hypercall when page encryption status is changed")
Signed-off-by: Steve Rutherford <srutherford@google.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Pankaj Gupta <pankaj.gupta@amd.com>
Tested-by: Ben Hillier <bhillier@google.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230824223731.2055016-1-srutherford@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/include/asm/mem_encrypt.h | 6 +++---
arch/x86/kernel/kvm.c | 4 +---
arch/x86/mm/mem_encrypt_amd.c | 13 ++++++-------
3 files changed, 10 insertions(+), 13 deletions(-)
--- a/arch/x86/include/asm/mem_encrypt.h
+++ b/arch/x86/include/asm/mem_encrypt.h
@@ -50,8 +50,8 @@ void __init sme_enable(struct boot_param
int __init early_set_memory_decrypted(unsigned long vaddr, unsigned long size);
int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size);
-void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr, int npages,
- bool enc);
+void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr,
+ unsigned long size, bool enc);
void __init mem_encrypt_free_decrypted_mem(void);
@@ -84,7 +84,7 @@ early_set_memory_decrypted(unsigned long
static inline int __init
early_set_memory_encrypted(unsigned long vaddr, unsigned long size) { return 0; }
static inline void __init
-early_set_mem_enc_dec_hypercall(unsigned long vaddr, int npages, bool enc) {}
+early_set_mem_enc_dec_hypercall(unsigned long vaddr, unsigned long size, bool enc) {}
static inline void mem_encrypt_free_decrypted_mem(void) { }
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -972,10 +972,8 @@ static void __init kvm_init_platform(voi
* Ensure that _bss_decrypted section is marked as decrypted in the
* shared pages list.
*/
- nr_pages = DIV_ROUND_UP(__end_bss_decrypted - __start_bss_decrypted,
- PAGE_SIZE);
early_set_mem_enc_dec_hypercall((unsigned long)__start_bss_decrypted,
- nr_pages, 0);
+ __end_bss_decrypted - __start_bss_decrypted, 0);
/*
* If not booted using EFI, enable Live migration support.
--- a/arch/x86/mm/mem_encrypt_amd.c
+++ b/arch/x86/mm/mem_encrypt_amd.c
@@ -288,11 +288,10 @@ static bool amd_enc_cache_flush_required
return !cpu_feature_enabled(X86_FEATURE_SME_COHERENT);
}
-static void enc_dec_hypercall(unsigned long vaddr, int npages, bool enc)
+static void enc_dec_hypercall(unsigned long vaddr, unsigned long size, bool enc)
{
#ifdef CONFIG_PARAVIRT
- unsigned long sz = npages << PAGE_SHIFT;
- unsigned long vaddr_end = vaddr + sz;
+ unsigned long vaddr_end = vaddr + size;
while (vaddr < vaddr_end) {
int psize, pmask, level;
@@ -342,7 +341,7 @@ static bool amd_enc_status_change_finish
snp_set_memory_private(vaddr, npages);
if (!cc_platform_has(CC_ATTR_HOST_MEM_ENCRYPT))
- enc_dec_hypercall(vaddr, npages, enc);
+ enc_dec_hypercall(vaddr, npages << PAGE_SHIFT, enc);
return true;
}
@@ -466,7 +465,7 @@ static int __init early_set_memory_enc_d
ret = 0;
- early_set_mem_enc_dec_hypercall(start, PAGE_ALIGN(size) >> PAGE_SHIFT, enc);
+ early_set_mem_enc_dec_hypercall(start, size, enc);
out:
__flush_tlb_all();
return ret;
@@ -482,9 +481,9 @@ int __init early_set_memory_encrypted(un
return early_set_memory_enc_dec(vaddr, size, true);
}
-void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr, int npages, bool enc)
+void __init early_set_mem_enc_dec_hypercall(unsigned long vaddr, unsigned long size, bool enc)
{
- enc_dec_hypercall(vaddr, npages, enc);
+ enc_dec_hypercall(vaddr, size, enc);
}
void __init sme_early_init(void)
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 566/600] r8169: fix ASPM-related issues on a number of systems with NIC version from RTL8168h
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (564 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 565/600] x86/sev: Make enc_dec_hypercall() accept a size instead of npages Greg Kroah-Hartman
@ 2023-09-11 13:49 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 567/600] X.509: if signature is unsupported skip validation Greg Kroah-Hartman
` (44 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:49 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Heiner Kallweit, David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Heiner Kallweit <hkallweit1@gmail.com>
commit 90ca51e8c654699b672ba61aeaa418dfb3252e5e upstream.
This effectively reverts 4b5f82f6aaef. On a number of systems ASPM L1
causes tx timeouts with RTL8168h, see referenced bug report.
Fixes: 4b5f82f6aaef ("r8169: enable ASPM L1/L1.1 from RTL8168h")
Cc: stable@vger.kernel.org
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217814
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/realtek/r8169_main.c | 4 ----
1 file changed, 4 deletions(-)
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5201,13 +5201,9 @@ static int rtl_init_one(struct pci_dev *
/* Disable ASPM L1 as that cause random device stop working
* problems as well as full system hangs for some PCIe devices users.
- * Chips from RTL8168h partially have issues with L1.2, but seem
- * to work fine with L1 and L1.1.
*/
if (rtl_aspm_is_safe(tp))
rc = 0;
- else if (tp->mac_version >= RTL_GIGA_MAC_VER_46)
- rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
else
rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
tp->aspm_manageable = !rc;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 567/600] X.509: if signature is unsupported skip validation
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (565 preceding siblings ...)
2023-09-11 13:49 ` [PATCH 6.1 566/600] r8169: fix ASPM-related issues on a number of systems with NIC version from RTL8168h Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 568/600] net: handle ARPHRD_PPP in dev_is_mac_header_xmit() Greg Kroah-Hartman
` (43 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Thore Sommer, Herbert Xu
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thore Sommer <public@thson.de>
commit ef5b52a631f8c18353e80ccab8408b963305510c upstream.
When the hash algorithm for the signature is not available the digest size
is 0 and the signature in the certificate is marked as unsupported.
When validating a self-signed certificate, this needs to be checked,
because otherwise trying to validate the signature will fail with an
warning:
Loading compiled-in X.509 certificates
WARNING: CPU: 0 PID: 1 at crypto/rsa-pkcs1pad.c:537 \
pkcs1pad_verify+0x46/0x12c
...
Problem loading in-kernel X.509 certificate (-22)
Signed-off-by: Thore Sommer <public@thson.de>
Cc: stable@vger.kernel.org # v4.7+
Fixes: 6c2dc5ae4ab7 ("X.509: Extract signature digest and make self-signed cert checks earlier")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
crypto/asymmetric_keys/x509_public_key.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/crypto/asymmetric_keys/x509_public_key.c
+++ b/crypto/asymmetric_keys/x509_public_key.c
@@ -117,6 +117,11 @@ int x509_check_for_self_signed(struct x5
goto out;
}
+ if (cert->unsupported_sig) {
+ ret = 0;
+ goto out;
+ }
+
ret = public_key_verify_signature(cert->pub, cert->sig);
if (ret < 0) {
if (ret == -ENOPKG) {
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 568/600] net: handle ARPHRD_PPP in dev_is_mac_header_xmit()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (566 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 567/600] X.509: if signature is unsupported skip validation Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 569/600] fsverity: skip PKCS#7 parser when keyring is empty Greg Kroah-Hartman
` (42 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Nicolas Dichtel, Siwar Zitouni,
Guillaume Nault, David S. Miller
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nicolas Dichtel <nicolas.dichtel@6wind.com>
commit a4f39c9f14a634e4cd35fcd338c239d11fcc73fc upstream.
The goal is to support a bpf_redirect() from an ethernet device (ingress)
to a ppp device (egress).
The l2 header is added automatically by the ppp driver, thus the ethernet
header should be removed.
CC: stable@vger.kernel.org
Fixes: 27b29f63058d ("bpf: add bpf_redirect() helper")
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Tested-by: Siwar Zitouni <siwar.zitouni@6wind.com>
Reviewed-by: Guillaume Nault <gnault@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/if_arp.h | 4 ++++
1 file changed, 4 insertions(+)
--- a/include/linux/if_arp.h
+++ b/include/linux/if_arp.h
@@ -53,6 +53,10 @@ static inline bool dev_is_mac_header_xmi
case ARPHRD_NONE:
case ARPHRD_RAWIP:
case ARPHRD_PIMREG:
+ /* PPP adds its l2 header automatically in ppp_start_xmit().
+ * This makes it look like an l3 device to __bpf_redirect() and tcf_mirred_init().
+ */
+ case ARPHRD_PPP:
return false;
default:
return true;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 569/600] fsverity: skip PKCS#7 parser when keyring is empty
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (567 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 568/600] net: handle ARPHRD_PPP in dev_is_mac_header_xmit() Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 570/600] x86/MCE: Always save CS register on AMD Zen IF Poison errors Greg Kroah-Hartman
` (41 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Jarkko Sakkinen, Eric Biggers
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric Biggers <ebiggers@google.com>
commit 919dc320956ea353a7fb2d84265195ad5ef525ac upstream.
If an fsverity builtin signature is given for a file but the
".fs-verity" keyring is empty, there's no real reason to run the PKCS#7
parser. Skip this to avoid the PKCS#7 attack surface when builtin
signature support is configured into the kernel but is not being used.
This is a hardening improvement, not a fix per se, but I've added
Fixes and Cc stable to get it out to more users.
Fixes: 432434c9f8e1 ("fs-verity: support builtin file signatures")
Cc: stable@vger.kernel.org
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Link: https://lore.kernel.org/r/20230820173237.2579-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/verity/signature.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
--- a/fs/verity/signature.c
+++ b/fs/verity/signature.c
@@ -54,6 +54,22 @@ int fsverity_verify_signature(const stru
return 0;
}
+ if (fsverity_keyring->keys.nr_leaves_on_tree == 0) {
+ /*
+ * The ".fs-verity" keyring is empty, due to builtin signatures
+ * being supported by the kernel but not actually being used.
+ * In this case, verify_pkcs7_signature() would always return an
+ * error, usually ENOKEY. It could also be EBADMSG if the
+ * PKCS#7 is malformed, but that isn't very important to
+ * distinguish. So, just skip to ENOKEY to avoid the attack
+ * surface of the PKCS#7 parser, which would otherwise be
+ * reachable by any task able to execute FS_IOC_ENABLE_VERITY.
+ */
+ fsverity_err(inode,
+ "fs-verity keyring is empty, rejecting signed file!");
+ return -ENOKEY;
+ }
+
d = kzalloc(sizeof(*d) + hash_alg->digest_size, GFP_KERNEL);
if (!d)
return -ENOMEM;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 570/600] x86/MCE: Always save CS register on AMD Zen IF Poison errors
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (568 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 569/600] fsverity: skip PKCS#7 parser when keyring is empty Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 571/600] platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER Greg Kroah-Hartman
` (40 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yazen Ghannam, Borislav Petkov (AMD)
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yazen Ghannam <yazen.ghannam@amd.com>
commit 4240e2ebe67941ce2c4f5c866c3af4b5ac7a0c67 upstream.
The Instruction Fetch (IF) units on current AMD Zen-based systems do not
guarantee a synchronous #MC is delivered for poison consumption errors.
Therefore, MCG_STATUS[EIPV|RIPV] will not be set. However, the
microarchitecture does guarantee that the exception is delivered within
the same context. In other words, the exact rIP is not known, but the
context is known to not have changed.
There is no architecturally-defined method to determine this behavior.
The Code Segment (CS) register is always valid on such IF unit poison
errors regardless of the value of MCG_STATUS[EIPV|RIPV].
Add a quirk to save the CS register for poison consumption from the IF
unit banks.
This is needed to properly determine the context of the error.
Otherwise, the severity grading function will assume the context is
IN_KERNEL due to the m->cs value being 0 (the initialized value). This
leads to unnecessary kernel panics on data poison errors due to the
kernel believing the poison consumption occurred in kernel context.
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230814200853.29258-1-yazen.ghannam@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kernel/cpu/mce/core.c | 26 ++++++++++++++++++++++++++
arch/x86/kernel/cpu/mce/internal.h | 5 ++++-
2 files changed, 30 insertions(+), 1 deletion(-)
--- a/arch/x86/kernel/cpu/mce/core.c
+++ b/arch/x86/kernel/cpu/mce/core.c
@@ -857,6 +857,26 @@ static noinstr bool quirk_skylake_repmov
}
/*
+ * Some Zen-based Instruction Fetch Units set EIPV=RIPV=0 on poison consumption
+ * errors. This means mce_gather_info() will not save the "ip" and "cs" registers.
+ *
+ * However, the context is still valid, so save the "cs" register for later use.
+ *
+ * The "ip" register is truly unknown, so don't save it or fixup EIPV/RIPV.
+ *
+ * The Instruction Fetch Unit is at MCA bank 1 for all affected systems.
+ */
+static __always_inline void quirk_zen_ifu(int bank, struct mce *m, struct pt_regs *regs)
+{
+ if (bank != 1)
+ return;
+ if (!(m->status & MCI_STATUS_POISON))
+ return;
+
+ m->cs = regs->cs;
+}
+
+/*
* Do a quick check if any of the events requires a panic.
* This decides if we keep the events around or clear them.
*/
@@ -875,6 +895,9 @@ static __always_inline int mce_no_way_ou
if (mce_flags.snb_ifu_quirk)
quirk_sandybridge_ifu(i, m, regs);
+ if (mce_flags.zen_ifu_quirk)
+ quirk_zen_ifu(i, m, regs);
+
m->bank = i;
if (mce_severity(m, regs, &tmp, true) >= MCE_PANIC_SEVERITY) {
mce_read_aux(m, i);
@@ -1852,6 +1875,9 @@ static int __mcheck_cpu_apply_quirks(str
if (c->x86 == 0x15 && c->x86_model <= 0xf)
mce_flags.overflow_recov = 1;
+ if (c->x86 >= 0x17 && c->x86 <= 0x1A)
+ mce_flags.zen_ifu_quirk = 1;
+
}
if (c->x86_vendor == X86_VENDOR_INTEL) {
--- a/arch/x86/kernel/cpu/mce/internal.h
+++ b/arch/x86/kernel/cpu/mce/internal.h
@@ -157,6 +157,9 @@ struct mce_vendor_flags {
*/
smca : 1,
+ /* Zen IFU quirk */
+ zen_ifu_quirk : 1,
+
/* AMD-style error thresholding banks present. */
amd_threshold : 1,
@@ -172,7 +175,7 @@ struct mce_vendor_flags {
/* Skylake, Cascade Lake, Cooper Lake REP;MOVS* quirk */
skx_repmov_quirk : 1,
- __reserved_0 : 56;
+ __reserved_0 : 55;
};
extern struct mce_vendor_flags mce_flags;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 571/600] platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (569 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 570/600] x86/MCE: Always save CS register on AMD Zen IF Poison errors Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 572/600] mmc: renesas_sdhi: register irqs before registering controller Greg Kroah-Hartman
` (39 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Guenter Roeck, Tzung-Bi Shih
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Tzung-Bi Shih <tzungbi@kernel.org>
commit 0820debb7d489e9eb1f68b7bb69e6ae210699b3f upstream.
`element->buffer.pointer` should be binary blob. `%s` doesn't work
perfect for them.
Print hex string for ACPI_TYPE_BUFFER. Also update the documentation
to reflect this.
Fixes: 0a4cad9c11ad ("platform/chrome: Add ChromeOS ACPI device driver")
Cc: stable@vger.kernel.org
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230803011245.3773756-1-tzungbi@kernel.org
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
Documentation/ABI/testing/sysfs-driver-chromeos-acpi | 2 -
drivers/platform/chrome/chromeos_acpi.c | 31 ++++++++++++++++++-
2 files changed, 31 insertions(+), 2 deletions(-)
--- a/Documentation/ABI/testing/sysfs-driver-chromeos-acpi
+++ b/Documentation/ABI/testing/sysfs-driver-chromeos-acpi
@@ -134,4 +134,4 @@ KernelVersion: 5.19
Description:
Returns the verified boot data block shared between the
firmware verification step and the kernel verification step
- (binary).
+ (hex dump).
--- a/drivers/platform/chrome/chromeos_acpi.c
+++ b/drivers/platform/chrome/chromeos_acpi.c
@@ -90,7 +90,36 @@ static int chromeos_acpi_handle_package(
case ACPI_TYPE_STRING:
return sysfs_emit(buf, "%s\n", element->string.pointer);
case ACPI_TYPE_BUFFER:
- return sysfs_emit(buf, "%s\n", element->buffer.pointer);
+ {
+ int i, r, at, room_left;
+ const int byte_per_line = 16;
+
+ at = 0;
+ room_left = PAGE_SIZE - 1;
+ for (i = 0; i < element->buffer.length && room_left; i += byte_per_line) {
+ r = hex_dump_to_buffer(element->buffer.pointer + i,
+ element->buffer.length - i,
+ byte_per_line, 1, buf + at, room_left,
+ false);
+ if (r > room_left)
+ goto truncating;
+ at += r;
+ room_left -= r;
+
+ r = sysfs_emit_at(buf, at, "\n");
+ if (!r)
+ goto truncating;
+ at += r;
+ room_left -= r;
+ }
+
+ buf[at] = 0;
+ return at;
+truncating:
+ dev_info_once(dev, "truncating sysfs content for %s\n", name);
+ sysfs_emit_at(buf, PAGE_SIZE - 4, "..\n");
+ return PAGE_SIZE - 1;
+ }
default:
dev_err(dev, "element type %d not supported\n", element->type);
return -EINVAL;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 572/600] mmc: renesas_sdhi: register irqs before registering controller
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (570 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 571/600] platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 573/600] pstore/ram: Check start of empty przs during init Greg Kroah-Hartman
` (38 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Wolfram Sang, Biju Das,
Geert Uytterhoeven, Ulf Hansson
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
commit 74f45de394d979cc7770271f92fafa53e1ed3119 upstream.
IRQs should be ready to serve when we call mmc_add_host() via
tmio_mmc_host_probe(). To achieve that, ensure that all irqs are masked
before registering the handlers.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230712140011.18602-1-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/mmc/host/renesas_sdhi_core.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
--- a/drivers/mmc/host/renesas_sdhi_core.c
+++ b/drivers/mmc/host/renesas_sdhi_core.c
@@ -1006,6 +1006,8 @@ int renesas_sdhi_probe(struct platform_d
host->sdcard_irq_setbit_mask = TMIO_STAT_ALWAYS_SET_27;
host->sdcard_irq_mask_all = TMIO_MASK_ALL_RCAR2;
host->reset = renesas_sdhi_reset;
+ } else {
+ host->sdcard_irq_mask_all = TMIO_MASK_ALL;
}
/* Orginally registers were 16 bit apart, could be 32 or 64 nowadays */
@@ -1102,9 +1104,7 @@ int renesas_sdhi_probe(struct platform_d
host->ops.hs400_complete = renesas_sdhi_hs400_complete;
}
- ret = tmio_mmc_host_probe(host);
- if (ret < 0)
- goto edisclk;
+ sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host->sdcard_irq_mask_all);
num_irqs = platform_irq_count(pdev);
if (num_irqs < 0) {
@@ -1131,6 +1131,10 @@ int renesas_sdhi_probe(struct platform_d
goto eirq;
}
+ ret = tmio_mmc_host_probe(host);
+ if (ret < 0)
+ goto edisclk;
+
dev_info(&pdev->dev, "%s base at %pa, max clock rate %u MHz\n",
mmc_hostname(host->mmc), &res->start, host->mmc->f_max / 1000000);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 573/600] pstore/ram: Check start of empty przs during init
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (571 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 572/600] mmc: renesas_sdhi: register irqs before registering controller Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 574/600] arm64: sdei: abort running SDEI handlers during crash Greg Kroah-Hartman
` (37 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yunlong Xing, Enlin Mu, Kees Cook
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Enlin Mu <enlin.mu@unisoc.com>
commit fe8c3623ab06603eb760444a032d426542212021 upstream.
After commit 30696378f68a ("pstore/ram: Do not treat empty buffers as
valid"), initialization would assume a prz was valid after seeing that
the buffer_size is zero (regardless of the buffer start position). This
unchecked start value means it could be outside the bounds of the buffer,
leading to future access panics when written to:
sysdump_panic_event+0x3b4/0x5b8
atomic_notifier_call_chain+0x54/0x90
panic+0x1c8/0x42c
die+0x29c/0x2a8
die_kernel_fault+0x68/0x78
__do_kernel_fault+0x1c4/0x1e0
do_bad_area+0x40/0x100
do_translation_fault+0x68/0x80
do_mem_abort+0x68/0xf8
el1_da+0x1c/0xc0
__raw_writeb+0x38/0x174
__memcpy_toio+0x40/0xac
persistent_ram_update+0x44/0x12c
persistent_ram_write+0x1a8/0x1b8
ramoops_pstore_write+0x198/0x1e8
pstore_console_write+0x94/0xe0
...
To avoid this, also check if the prz start is 0 during the initialization
phase. If not, the next prz sanity check case will discover it (start >
size) and zap the buffer back to a sane state.
Fixes: 30696378f68a ("pstore/ram: Do not treat empty buffers as valid")
Cc: Yunlong Xing <yunlong.xing@unisoc.com>
Cc: stable@vger.kernel.org
Signed-off-by: Enlin Mu <enlin.mu@unisoc.com>
Link: https://lore.kernel.org/r/20230801060432.1307717-1-yunlong.xing@unisoc.com
[kees: update commit log with backtrace and clarifications]
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/pstore/ram_core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/fs/pstore/ram_core.c
+++ b/fs/pstore/ram_core.c
@@ -518,7 +518,7 @@ static int persistent_ram_post_init(stru
sig ^= PERSISTENT_RAM_SIG;
if (prz->buffer->sig == sig) {
- if (buffer_size(prz) == 0) {
+ if (buffer_size(prz) == 0 && buffer_start(prz) == 0) {
pr_debug("found existing empty buffer\n");
return 0;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 574/600] arm64: sdei: abort running SDEI handlers during crash
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (572 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 573/600] pstore/ram: Check start of empty przs during init Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 575/600] s390/dcssblk: fix kernel crash with list_add corruption Greg Kroah-Hartman
` (36 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, D Scott Phillips, James Morse,
Mihai Carabas, Will Deacon
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: D Scott Phillips <scott@os.amperecomputing.com>
commit 5cd474e57368f0957c343bb21e309cf82826b1ef upstream.
Interrupts are blocked in SDEI context, per the SDEI spec: "The client
interrupts cannot preempt the event handler." If we crashed in the SDEI
handler-running context (as with ACPI's AGDI) then we need to clean up the
SDEI state before proceeding to the crash kernel so that the crash kernel
can have working interrupts.
Track the active SDEI handler per-cpu so that we can COMPLETE_AND_RESUME
the handler, discarding the interrupted context.
Fixes: f5df26961853 ("arm64: kernel: Add arch-specific SDEI entry code and CPU masking")
Signed-off-by: D Scott Phillips <scott@os.amperecomputing.com>
Cc: stable@vger.kernel.org
Reviewed-by: James Morse <james.morse@arm.com>
Tested-by: Mihai Carabas <mihai.carabas@oracle.com>
Link: https://lore.kernel.org/r/20230627002939.2758-1-scott@os.amperecomputing.com
Signed-off-by: Will Deacon <will@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm64/include/asm/sdei.h | 6 ++++++
arch/arm64/kernel/entry.S | 27 +++++++++++++++++++++++++--
arch/arm64/kernel/sdei.c | 3 +++
arch/arm64/kernel/smp.c | 8 ++++----
drivers/firmware/arm_sdei.c | 19 +++++++++++++++++++
include/linux/arm_sdei.h | 2 ++
6 files changed, 59 insertions(+), 6 deletions(-)
--- a/arch/arm64/include/asm/sdei.h
+++ b/arch/arm64/include/asm/sdei.h
@@ -17,6 +17,9 @@
#include <asm/virt.h>
+DECLARE_PER_CPU(struct sdei_registered_event *, sdei_active_normal_event);
+DECLARE_PER_CPU(struct sdei_registered_event *, sdei_active_critical_event);
+
extern unsigned long sdei_exit_mode;
/* Software Delegated Exception entry point from firmware*/
@@ -29,6 +32,9 @@ asmlinkage void __sdei_asm_entry_trampol
unsigned long pc,
unsigned long pstate);
+/* Abort a running handler. Context is discarded. */
+void __sdei_handler_abort(void);
+
/*
* The above entry point does the minimum to call C code. This function does
* anything else, before calling the driver.
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -993,9 +993,13 @@ SYM_CODE_START(__sdei_asm_handler)
mov x19, x1
-#if defined(CONFIG_VMAP_STACK) || defined(CONFIG_SHADOW_CALL_STACK)
+ /* Store the registered-event for crash_smp_send_stop() */
ldrb w4, [x19, #SDEI_EVENT_PRIORITY]
-#endif
+ cbnz w4, 1f
+ adr_this_cpu dst=x5, sym=sdei_active_normal_event, tmp=x6
+ b 2f
+1: adr_this_cpu dst=x5, sym=sdei_active_critical_event, tmp=x6
+2: str x19, [x5]
#ifdef CONFIG_VMAP_STACK
/*
@@ -1062,6 +1066,14 @@ SYM_CODE_START(__sdei_asm_handler)
ldr_l x2, sdei_exit_mode
+ /* Clear the registered-event seen by crash_smp_send_stop() */
+ ldrb w3, [x4, #SDEI_EVENT_PRIORITY]
+ cbnz w3, 1f
+ adr_this_cpu dst=x5, sym=sdei_active_normal_event, tmp=x6
+ b 2f
+1: adr_this_cpu dst=x5, sym=sdei_active_critical_event, tmp=x6
+2: str xzr, [x5]
+
alternative_if_not ARM64_UNMAP_KERNEL_AT_EL0
sdei_handler_exit exit_mode=x2
alternative_else_nop_endif
@@ -1072,4 +1084,15 @@ alternative_else_nop_endif
#endif
SYM_CODE_END(__sdei_asm_handler)
NOKPROBE(__sdei_asm_handler)
+
+SYM_CODE_START(__sdei_handler_abort)
+ mov_q x0, SDEI_1_0_FN_SDEI_EVENT_COMPLETE_AND_RESUME
+ adr x1, 1f
+ ldr_l x2, sdei_exit_mode
+ sdei_handler_exit exit_mode=x2
+ // exit the handler and jump to the next instruction.
+ // Exit will stomp x0-x17, PSTATE, ELR_ELx, and SPSR_ELx.
+1: ret
+SYM_CODE_END(__sdei_handler_abort)
+NOKPROBE(__sdei_handler_abort)
#endif /* CONFIG_ARM_SDE_INTERFACE */
--- a/arch/arm64/kernel/sdei.c
+++ b/arch/arm64/kernel/sdei.c
@@ -47,6 +47,9 @@ DEFINE_PER_CPU(unsigned long *, sdei_sha
DEFINE_PER_CPU(unsigned long *, sdei_shadow_call_stack_critical_ptr);
#endif
+DEFINE_PER_CPU(struct sdei_registered_event *, sdei_active_normal_event);
+DEFINE_PER_CPU(struct sdei_registered_event *, sdei_active_critical_event);
+
static void _free_sdei_stack(unsigned long * __percpu *ptr, int cpu)
{
unsigned long *p;
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -1047,10 +1047,8 @@ void crash_smp_send_stop(void)
* If this cpu is the only one alive at this point in time, online or
* not, there are no stop messages to be sent around, so just back out.
*/
- if (num_other_online_cpus() == 0) {
- sdei_mask_local_cpu();
- return;
- }
+ if (num_other_online_cpus() == 0)
+ goto skip_ipi;
cpumask_copy(&mask, cpu_online_mask);
cpumask_clear_cpu(smp_processor_id(), &mask);
@@ -1069,7 +1067,9 @@ void crash_smp_send_stop(void)
pr_warn("SMP: failed to stop secondary CPUs %*pbl\n",
cpumask_pr_args(&mask));
+skip_ipi:
sdei_mask_local_cpu();
+ sdei_handler_abort();
}
bool smp_crash_stop_failed(void)
--- a/drivers/firmware/arm_sdei.c
+++ b/drivers/firmware/arm_sdei.c
@@ -1095,3 +1095,22 @@ int sdei_event_handler(struct pt_regs *r
return err;
}
NOKPROBE_SYMBOL(sdei_event_handler);
+
+void sdei_handler_abort(void)
+{
+ /*
+ * If the crash happened in an SDEI event handler then we need to
+ * finish the handler with the firmware so that we can have working
+ * interrupts in the crash kernel.
+ */
+ if (__this_cpu_read(sdei_active_critical_event)) {
+ pr_warn("still in SDEI critical event context, attempting to finish handler.\n");
+ __sdei_handler_abort();
+ __this_cpu_write(sdei_active_critical_event, NULL);
+ }
+ if (__this_cpu_read(sdei_active_normal_event)) {
+ pr_warn("still in SDEI normal event context, attempting to finish handler.\n");
+ __sdei_handler_abort();
+ __this_cpu_write(sdei_active_normal_event, NULL);
+ }
+}
--- a/include/linux/arm_sdei.h
+++ b/include/linux/arm_sdei.h
@@ -47,10 +47,12 @@ int sdei_unregister_ghes(struct ghes *gh
int sdei_mask_local_cpu(void);
int sdei_unmask_local_cpu(void);
void __init sdei_init(void);
+void sdei_handler_abort(void);
#else
static inline int sdei_mask_local_cpu(void) { return 0; }
static inline int sdei_unmask_local_cpu(void) { return 0; }
static inline void sdei_init(void) { }
+static inline void sdei_handler_abort(void) { }
#endif /* CONFIG_ARM_SDE_INTERFACE */
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 575/600] s390/dcssblk: fix kernel crash with list_add corruption
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (573 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 574/600] arm64: sdei: abort running SDEI handlers during crash Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 576/600] s390/ipl: add missing secure/has_secure file to ipl type unknown Greg Kroah-Hartman
` (35 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Heiko Carstens, Gerald Schaefer
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
commit c8f40a0bccefd613748d080147469a4652d6e74c upstream.
Commit fb08a1908cb1 ("dax: simplify the dax_device <-> gendisk
association") introduced new logic for gendisk association, requiring
drivers to explicitly call dax_add_host() and dax_remove_host().
For dcssblk driver, some dax_remove_host() calls were missing, e.g. in
device remove path. The commit also broke error handling for out_dax case
in device add path, resulting in an extra put_device() w/o the previous
get_device() in that case.
This lead to stale xarray entries after device add / remove cycles. In the
case when a previously used struct gendisk pointer (xarray index) would be
used again, because blk_alloc_disk() happened to return such a pointer, the
xa_insert() in dax_add_host() would fail and go to out_dax, doing the extra
put_device() in the error path. In combination with an already flawed error
handling in dcssblk (device_register() cleanup), which needs to be
addressed in a separate patch, this resulted in a missing device_del() /
klist_del(), and eventually in the kernel crash with list_add corruption on
a subsequent device_add() / klist_add().
Fix this by adding the missing dax_remove_host() calls, and also move the
put_device() in the error path to restore the previous logic.
Fixes: fb08a1908cb1 ("dax: simplify the dax_device <-> gendisk association")
Cc: <stable@vger.kernel.org> # 5.17+
Acked-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/s390/block/dcssblk.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
--- a/drivers/s390/block/dcssblk.c
+++ b/drivers/s390/block/dcssblk.c
@@ -411,6 +411,7 @@ removeseg:
}
list_del(&dev_info->lh);
+ dax_remove_host(dev_info->gd);
kill_dax(dev_info->dax_dev);
put_dax(dev_info->dax_dev);
del_gendisk(dev_info->gd);
@@ -706,9 +707,9 @@ dcssblk_add_store(struct device *dev, st
goto out;
out_dax_host:
+ put_device(&dev_info->dev);
dax_remove_host(dev_info->gd);
out_dax:
- put_device(&dev_info->dev);
kill_dax(dev_info->dax_dev);
put_dax(dev_info->dax_dev);
put_dev:
@@ -788,6 +789,7 @@ dcssblk_remove_store(struct device *dev,
}
list_del(&dev_info->lh);
+ dax_remove_host(dev_info->gd);
kill_dax(dev_info->dax_dev);
put_dax(dev_info->dax_dev);
del_gendisk(dev_info->gd);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 576/600] s390/ipl: add missing secure/has_secure file to ipl type unknown
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (574 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 575/600] s390/dcssblk: fix kernel crash with list_add corruption Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 577/600] s390/dasd: fix string length handling Greg Kroah-Hartman
` (34 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Sven Schnelle, Heiko Carstens
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sven Schnelle <svens@linux.ibm.com>
commit ea5717cb13468323a7c3dd394748301802991f39 upstream.
OS installers are relying on /sys/firmware/ipl/has_secure to be
present on machines supporting secure boot. This file is present
for all IPL types, but not the unknown type, which prevents a secure
installation when an LPAR is booted in HMC via FTP(s), because
this is an unknown IPL type in linux. While at it, also add the secure
file.
Fixes: c9896acc7851 ("s390/ipl: Provide has_secure sysfs attribute")
Cc: stable@vger.kernel.org
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/s390/kernel/ipl.c | 2 ++
1 file changed, 2 insertions(+)
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -503,6 +503,8 @@ static struct attribute_group ipl_ccw_at
static struct attribute *ipl_unknown_attrs[] = {
&sys_ipl_type_attr.attr,
+ &sys_ipl_secure_attr.attr,
+ &sys_ipl_has_secure_attr.attr,
NULL,
};
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 577/600] s390/dasd: fix string length handling
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (575 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 576/600] s390/ipl: add missing secure/has_secure file to ipl type unknown Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 578/600] crypto: stm32 - fix loop iterating through scatterlist for DMA Greg Kroah-Hartman
` (33 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Peter Oberparleiter, Heiko Carstens,
Nathan Chancellor, Nick Desaulniers, Jens Axboe
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Heiko Carstens <hca@linux.ibm.com>
commit f7cf22424665043787a96a66a048ff6b2cfd473c upstream.
Building dasd_eckd.o with latest clang reveals this bug:
CC drivers/s390/block/dasd_eckd.o
drivers/s390/block/dasd_eckd.c:1082:3: warning: 'snprintf' will always be truncated;
specified size is 1, but format string expands to at least 11 [-Wfortify-source]
1082 | snprintf(print_uid, sizeof(*print_uid),
| ^
drivers/s390/block/dasd_eckd.c:1087:3: warning: 'snprintf' will always be truncated;
specified size is 1, but format string expands to at least 10 [-Wfortify-source]
1087 | snprintf(print_uid, sizeof(*print_uid),
| ^
Fix this by moving and using the existing UID_STRLEN for the arrays
that are being written to. Also rename UID_STRLEN to DASD_UID_STRLEN
to clarify its scope.
Fixes: 23596961b437 ("s390/dasd: split up dasd_eckd_read_conf")
Reviewed-by: Peter Oberparleiter <oberpar@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Tested-by: Nick Desaulniers <ndesaulniers@google.com> # build
Reported-by: Nathan Chancellor <nathan@kernel.org>
Closes: https://github.com/ClangBuiltLinux/linux/issues/1923
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/r/20230828153142.2843753-2-hca@linux.ibm.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/s390/block/dasd_devmap.c | 6 +-----
drivers/s390/block/dasd_eckd.c | 10 +++++-----
drivers/s390/block/dasd_int.h | 4 ++++
3 files changed, 10 insertions(+), 10 deletions(-)
--- a/drivers/s390/block/dasd_devmap.c
+++ b/drivers/s390/block/dasd_devmap.c
@@ -1377,16 +1377,12 @@ static ssize_t dasd_vendor_show(struct d
static DEVICE_ATTR(vendor, 0444, dasd_vendor_show, NULL);
-#define UID_STRLEN ( /* vendor */ 3 + 1 + /* serial */ 14 + 1 +\
- /* SSID */ 4 + 1 + /* unit addr */ 2 + 1 +\
- /* vduit */ 32 + 1)
-
static ssize_t
dasd_uid_show(struct device *dev, struct device_attribute *attr, char *buf)
{
+ char uid_string[DASD_UID_STRLEN];
struct dasd_device *device;
struct dasd_uid uid;
- char uid_string[UID_STRLEN];
char ua_string[3];
device = dasd_device_from_cdev(to_ccwdev(dev));
--- a/drivers/s390/block/dasd_eckd.c
+++ b/drivers/s390/block/dasd_eckd.c
@@ -1079,12 +1079,12 @@ static void dasd_eckd_get_uid_string(str
create_uid(conf, &uid);
if (strlen(uid.vduit) > 0)
- snprintf(print_uid, sizeof(*print_uid),
+ snprintf(print_uid, DASD_UID_STRLEN,
"%s.%s.%04x.%02x.%s",
uid.vendor, uid.serial, uid.ssid,
uid.real_unit_addr, uid.vduit);
else
- snprintf(print_uid, sizeof(*print_uid),
+ snprintf(print_uid, DASD_UID_STRLEN,
"%s.%s.%04x.%02x",
uid.vendor, uid.serial, uid.ssid,
uid.real_unit_addr);
@@ -1093,8 +1093,8 @@ static void dasd_eckd_get_uid_string(str
static int dasd_eckd_check_cabling(struct dasd_device *device,
void *conf_data, __u8 lpm)
{
+ char print_path_uid[DASD_UID_STRLEN], print_device_uid[DASD_UID_STRLEN];
struct dasd_eckd_private *private = device->private;
- char print_path_uid[60], print_device_uid[60];
struct dasd_conf path_conf;
path_conf.data = conf_data;
@@ -1293,9 +1293,9 @@ static void dasd_eckd_path_available_act
__u8 path_rcd_buf[DASD_ECKD_RCD_DATA_SIZE];
__u8 lpm, opm, npm, ppm, epm, hpfpm, cablepm;
struct dasd_conf_data *conf_data;
+ char print_uid[DASD_UID_STRLEN];
struct dasd_conf path_conf;
unsigned long flags;
- char print_uid[60];
int rc, pos;
opm = 0;
@@ -5856,8 +5856,8 @@ static void dasd_eckd_dump_sense(struct
static int dasd_eckd_reload_device(struct dasd_device *device)
{
struct dasd_eckd_private *private = device->private;
+ char print_uid[DASD_UID_STRLEN];
int rc, old_base;
- char print_uid[60];
struct dasd_uid uid;
unsigned long flags;
--- a/drivers/s390/block/dasd_int.h
+++ b/drivers/s390/block/dasd_int.h
@@ -259,6 +259,10 @@ struct dasd_uid {
char vduit[33];
};
+#define DASD_UID_STRLEN ( /* vendor */ 3 + 1 + /* serial */ 14 + 1 + \
+ /* SSID */ 4 + 1 + /* unit addr */ 2 + 1 + \
+ /* vduit */ 32 + 1)
+
/*
* PPRC Status data
*/
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 578/600] crypto: stm32 - fix loop iterating through scatterlist for DMA
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (576 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 577/600] s390/dasd: fix string length handling Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 579/600] cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug Greg Kroah-Hartman
` (32 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Thomas Bourgoin, Herbert Xu
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Bourgoin <thomas.bourgoin@foss.st.com>
commit d9c83f71eeceed2cb54bb78be84f2d4055fd9a1f upstream.
We were reading the length of the scatterlist sg after copying value of
tsg inside.
So we are using the size of the previous scatterlist and for the first
one we are using an unitialised value.
Fix this by copying tsg in sg[0] before reading the size.
Fixes : 8a1012d3f2ab ("crypto: stm32 - Support for STM32 HASH module")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Bourgoin <thomas.bourgoin@foss.st.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/crypto/stm32/stm32-hash.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/crypto/stm32/stm32-hash.c
+++ b/drivers/crypto/stm32/stm32-hash.c
@@ -565,9 +565,9 @@ static int stm32_hash_dma_send(struct st
}
for_each_sg(rctx->sg, tsg, rctx->nents, i) {
+ sg[0] = *tsg;
len = sg->length;
- sg[0] = *tsg;
if (sg_is_last(sg)) {
if (hdev->dma_mode == 1) {
len = (ALIGN(sg->length, 16) - 16);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 579/600] cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (577 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 578/600] crypto: stm32 - fix loop iterating through scatterlist for DMA Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 580/600] of: property: fw_devlink: Add a devlink for panel followers Greg Kroah-Hartman
` (31 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Gustavo A. R. Silva,
Florian Fainelli, Viresh Kumar
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gustavo A. R. Silva <gustavoars@kernel.org>
commit e520d0b6be950ce3738cf4b9bd3b392be818f1dc upstream.
Allocate extra space for terminating element at:
drivers/cpufreq/brcmstb-avs-cpufreq.c:
449 table[i].frequency = CPUFREQ_TABLE_END;
and add code comment to make this clear.
This fixes the following -Warray-bounds warning seen after building
ARM with multi_v7_defconfig (GCC 13):
In function 'brcm_avs_get_freq_table',
inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15:
drivers/cpufreq/brcmstb-avs-cpufreq.c:449:28: warning: array subscript 5 is outside array bounds of 'void[60]' [-Warray-bounds=]
449 | table[i].frequency = CPUFREQ_TABLE_END;
In file included from include/linux/node.h:18,
from include/linux/cpu.h:17,
from include/linux/cpufreq.h:12,
from drivers/cpufreq/brcmstb-avs-cpufreq.c:44:
In function 'devm_kmalloc_array',
inlined from 'devm_kcalloc' at include/linux/device.h:328:9,
inlined from 'brcm_avs_get_freq_table' at drivers/cpufreq/brcmstb-avs-cpufreq.c:437:10,
inlined from 'brcm_avs_cpufreq_init' at drivers/cpufreq/brcmstb-avs-cpufreq.c:623:15:
include/linux/device.h:323:16: note: at offset 60 into object of size 60 allocated by 'devm_kmalloc'
323 | return devm_kmalloc(dev, bytes, flags);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This helps with the ongoing efforts to tighten the FORTIFY_SOURCE
routines on memcpy() and help us make progress towards globally
enabling -Warray-bounds.
Link: https://github.com/KSPP/linux/issues/324
Fixes: de322e085995 ("cpufreq: brcmstb-avs-cpufreq: AVS CPUfreq driver for Broadcom STB SoCs")
Cc: stable@vger.kernel.org
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/cpufreq/brcmstb-avs-cpufreq.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
--- a/drivers/cpufreq/brcmstb-avs-cpufreq.c
+++ b/drivers/cpufreq/brcmstb-avs-cpufreq.c
@@ -434,7 +434,11 @@ brcm_avs_get_freq_table(struct device *d
if (ret)
return ERR_PTR(ret);
- table = devm_kcalloc(dev, AVS_PSTATE_MAX + 1, sizeof(*table),
+ /*
+ * We allocate space for the 5 different P-STATES AVS,
+ * plus extra space for a terminating element.
+ */
+ table = devm_kcalloc(dev, AVS_PSTATE_MAX + 1 + 1, sizeof(*table),
GFP_KERNEL);
if (!table)
return ERR_PTR(-ENOMEM);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 580/600] of: property: fw_devlink: Add a devlink for panel followers
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (578 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 579/600] cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 581/600] usb: typec: tcpm: set initial svdm version based on pd revision Greg Kroah-Hartman
` (30 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Rob Herring, Maxime Ripard,
Douglas Anderson, Adam Ford
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Douglas Anderson <dianders@chromium.org>
commit fbf0ea2da3c7cd0b33ed7ae53a67ab1c24838cba upstream.
Inform fw_devlink of the fact that a panel follower (like a
touchscreen) is effectively a consumer of the panel from the purposes
of fw_devlink.
NOTE: this patch isn't required for correctness but instead optimizes
probe order / helps avoid deferrals.
Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230727101636.v4.4.Ibf8e1342b5b7906279db2365aca45e6253857bb3@changeid
Cc: Adam Ford <aford173@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/of/property.c | 2 ++
1 file changed, 2 insertions(+)
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -1266,6 +1266,7 @@ DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-c
DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")
DEFINE_SIMPLE_PROP(leds, "leds", NULL)
DEFINE_SIMPLE_PROP(backlight, "backlight", NULL)
+DEFINE_SIMPLE_PROP(panel, "panel", NULL)
DEFINE_SUFFIX_PROP(regulators, "-supply", NULL)
DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells")
@@ -1354,6 +1355,7 @@ static const struct supplier_bindings of
{ .parse_prop = parse_resets, },
{ .parse_prop = parse_leds, },
{ .parse_prop = parse_backlight, },
+ { .parse_prop = parse_panel, },
{ .parse_prop = parse_gpio_compat, },
{ .parse_prop = parse_interrupts, },
{ .parse_prop = parse_regulators, },
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 581/600] usb: typec: tcpm: set initial svdm version based on pd revision
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (579 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 580/600] of: property: fw_devlink: Add a devlink for panel followers Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 582/600] usb: typec: bus: verify partner exists in typec_altmode_attention Greg Kroah-Hartman
` (29 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, RD Babiera, Heikki Krogerus
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: RD Babiera <rdbabiera@google.com>
commit c97cd0b4b54eb42aed7f6c3c295a2d137f6d2416 upstream.
When sending Discover Identity messages to a Port Partner that uses Power
Delivery v2 and SVDM v1, we currently send PD v2 messages with SVDM v2.0,
expecting the port partner to respond with its highest supported SVDM
version as stated in Section 6.4.4.2.3 in the Power Delivery v3
specification. However, sending SVDM v2 to some Power Delivery v2 port
partners results in a NAK whereas sending SVDM v1 does not.
NAK messages can be handled by the initiator (PD v3 section 6.4.4.2.5.1),
and one solution could be to resend Discover Identity on a lower SVDM
version if possible. But, Section 6.4.4.3 of PD v2 states that "A NAK
response Should be taken as an indication not to retry that particular
Command."
Instead, we can set the SVDM version to the maximum one supported by the
negotiated PD revision. When operating in PD v2, this obeys Section
6.4.4.2.3, which states the SVDM field "Shall be set to zero to indicate
Version 1.0." In PD v3, the SVDM field "Shall be set to 01b to indicate
Version 2.0."
Fixes: c34e85fa69b9 ("usb: typec: tcpm: Send DISCOVER_IDENTITY from dedicated work")
Cc: stable@vger.kernel.org
Signed-off-by: RD Babiera <rdbabiera@google.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20230731165926.1815338-1-rdbabiera@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/typec/tcpm/tcpm.c | 35 +++++++++++++++++++++++++++++++----
1 file changed, 31 insertions(+), 4 deletions(-)
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -3929,6 +3929,29 @@ static enum typec_cc_status tcpm_pwr_opm
}
}
+static void tcpm_set_initial_svdm_version(struct tcpm_port *port)
+{
+ switch (port->negotiated_rev) {
+ case PD_REV30:
+ break;
+ /*
+ * 6.4.4.2.3 Structured VDM Version
+ * 2.0 states "At this time, there is only one version (1.0) defined.
+ * This field Shall be set to zero to indicate Version 1.0."
+ * 3.0 states "This field Shall be set to 01b to indicate Version 2.0."
+ * To ensure that we follow the Power Delivery revision we are currently
+ * operating on, downgrade the SVDM version to the highest one supported
+ * by the Power Delivery revision.
+ */
+ case PD_REV20:
+ typec_partner_set_svdm_version(port->partner, SVDM_VER_1_0);
+ break;
+ default:
+ typec_partner_set_svdm_version(port->partner, SVDM_VER_1_0);
+ break;
+ }
+}
+
static void run_state_machine(struct tcpm_port *port)
{
int ret;
@@ -4153,10 +4176,12 @@ static void run_state_machine(struct tcp
* For now, this driver only supports SOP for DISCOVER_IDENTITY, thus using
* port->explicit_contract to decide whether to send the command.
*/
- if (port->explicit_contract)
+ if (port->explicit_contract) {
+ tcpm_set_initial_svdm_version(port);
mod_send_discover_delayed_work(port, 0);
- else
+ } else {
port->send_discover = false;
+ }
/*
* 6.3.5
@@ -4439,10 +4464,12 @@ static void run_state_machine(struct tcp
* For now, this driver only supports SOP for DISCOVER_IDENTITY, thus using
* port->explicit_contract.
*/
- if (port->explicit_contract)
+ if (port->explicit_contract) {
+ tcpm_set_initial_svdm_version(port);
mod_send_discover_delayed_work(port, 0);
- else
+ } else {
port->send_discover = false;
+ }
power_supply_changed(port->psy);
break;
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 582/600] usb: typec: bus: verify partner exists in typec_altmode_attention
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (580 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 581/600] usb: typec: tcpm: set initial svdm version based on pd revision Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 583/600] USB: core: Unite old scheme and new scheme descriptor reads Greg Kroah-Hartman
` (28 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, RD Babiera, Heikki Krogerus,
Guenter Roeck
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: RD Babiera <rdbabiera@google.com>
commit f23643306430f86e2f413ee2b986e0773e79da31 upstream.
Some usb hubs will negotiate DisplayPort Alt mode with the device
but will then negotiate a data role swap after entering the alt
mode. The data role swap causes the device to unregister all alt
modes, however the usb hub will still send Attention messages
even after failing to reregister the Alt Mode. type_altmode_attention
currently does not verify whether or not a device's altmode partner
exists, which results in a NULL pointer error when dereferencing
the typec_altmode and typec_altmode_ops belonging to the altmode
partner.
Verify the presence of a device's altmode partner before sending
the Attention message to the Alt Mode driver.
Fixes: 8a37d87d72f0 ("usb: typec: Bus type for alternate modes")
Cc: stable@vger.kernel.org
Signed-off-by: RD Babiera <rdbabiera@google.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20230814180559.923475-1-rdbabiera@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/typec/bus.c | 12 ++++++++++--
drivers/usb/typec/tcpm/tcpm.c | 3 ++-
include/linux/usb/typec_altmode.h | 2 +-
3 files changed, 13 insertions(+), 4 deletions(-)
--- a/drivers/usb/typec/bus.c
+++ b/drivers/usb/typec/bus.c
@@ -154,12 +154,20 @@ EXPORT_SYMBOL_GPL(typec_altmode_exit);
*
* Notifies the partner of @adev about Attention command.
*/
-void typec_altmode_attention(struct typec_altmode *adev, u32 vdo)
+int typec_altmode_attention(struct typec_altmode *adev, u32 vdo)
{
- struct typec_altmode *pdev = &to_altmode(adev)->partner->adev;
+ struct altmode *partner = to_altmode(adev)->partner;
+ struct typec_altmode *pdev;
+
+ if (!partner)
+ return -ENODEV;
+
+ pdev = &partner->adev;
if (pdev->ops && pdev->ops->attention)
pdev->ops->attention(pdev, vdo);
+
+ return 0;
}
EXPORT_SYMBOL_GPL(typec_altmode_attention);
--- a/drivers/usb/typec/tcpm/tcpm.c
+++ b/drivers/usb/typec/tcpm/tcpm.c
@@ -1871,7 +1871,8 @@ static void tcpm_handle_vdm_request(stru
}
break;
case ADEV_ATTENTION:
- typec_altmode_attention(adev, p[1]);
+ if (typec_altmode_attention(adev, p[1]))
+ tcpm_log(port, "typec_altmode_attention no port partner altmode");
break;
}
}
--- a/include/linux/usb/typec_altmode.h
+++ b/include/linux/usb/typec_altmode.h
@@ -67,7 +67,7 @@ struct typec_altmode_ops {
int typec_altmode_enter(struct typec_altmode *altmode, u32 *vdo);
int typec_altmode_exit(struct typec_altmode *altmode);
-void typec_altmode_attention(struct typec_altmode *altmode, u32 vdo);
+int typec_altmode_attention(struct typec_altmode *altmode, u32 vdo);
int typec_altmode_vdm(struct typec_altmode *altmode,
const u32 header, const u32 *vdo, int count);
int typec_altmode_notify(struct typec_altmode *altmode, unsigned long conf,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 583/600] USB: core: Unite old scheme and new scheme descriptor reads
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (581 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 582/600] usb: typec: bus: verify partner exists in typec_altmode_attention Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 584/600] USB: core: Change usb_get_device_descriptor() API Greg Kroah-Hartman
` (27 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Alan Stern, Oliver Neukum
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit 85d07c55621676d47d873d2749b88f783cd4d5a1 upstream.
In preparation for reworking the usb_get_device_descriptor() routine,
it is desirable to unite the two different code paths responsible for
initially determining endpoint 0's maximum packet size in a newly
discovered USB device. Making this determination presents a
chicken-and-egg sort of problem, in that the only way to learn the
maxpacket value is to get it from the device descriptor retrieved from
the device, but communicating with the device to retrieve a descriptor
requires us to know beforehand the ep0 maxpacket size.
In practice this problem is solved in two different ways, referred to
in hub.c as the "old scheme" and the "new scheme". The old scheme
(which is the approach recommended by the USB-2 spec) involves asking
the device to send just the first eight bytes of its device
descriptor. Such a transfer uses packets containing no more than
eight bytes each, and every USB device must have an ep0 maxpacket size
>= 8, so this should succeed. Since the bMaxPacketSize0 field of the
device descriptor lies within the first eight bytes, this is all we
need.
The new scheme is an imitation of the technique used in an early
Windows USB implementation, giving it the happy advantage of working
with a wide variety of devices (some of them at the time would not
work with the old scheme, although that's probably less true now). It
involves making an initial guess of the ep0 maxpacket size, asking the
device to send up to 64 bytes worth of its device descriptor (which is
only 18 bytes long), and then resetting the device to clear any error
condition that might have resulted from the guess being wrong. The
initial guess is determined by the connection speed; it should be
correct in all cases other than full speed, for which the allowed
values are 8, 16, 32, and 64 (in this case the initial guess is 64).
The reason for this patch is that the old- and new-scheme parts of
hub_port_init() use different code paths, one involving
usb_get_device_descriptor() and one not, for their initial reads of
the device descriptor. Since these reads have essentially the same
purpose and are made under essentially the same circumstances, this is
illogical. It makes more sense to have both of them use a common
subroutine.
This subroutine does basically what the new scheme's code did, because
that approach is more general than the one used by the old scheme. It
only needs to know how many bytes to transfer and whether or not it is
being called for the first iteration of a retry loop (in case of
certain time-out errors). There are two main differences from the
former code:
We initialize the bDescriptorType field of the transfer buffer
to 0 before performing the transfer, to avoid possibly
accessing an uninitialized value afterward.
We read the device descriptor into a temporary buffer rather
than storing it directly into udev->descriptor, which the old
scheme implementation used to do.
Since the whole point of this first read of the device descriptor is
to determine the bMaxPacketSize0 value, that is what the new routine
returns (or an error code). The value is stored in a local variable
rather than in udev->descriptor. As a side effect, this necessitates
moving a section of code that checks the bcdUSB field for SuperSpeed
devices until after the full device descriptor has been retrieved.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: Oliver Neukum <oneukum@suse.com>
Link: https://lore.kernel.org/r/495cb5d4-f956-4f4a-a875-1e67e9489510@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hub.c | 173 ++++++++++++++++++++++++++-----------------------
1 file changed, 94 insertions(+), 79 deletions(-)
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4661,6 +4661,67 @@ static int hub_enable_device(struct usb_
return hcd->driver->enable_device(hcd, udev);
}
+/*
+ * Get the bMaxPacketSize0 value during initialization by reading the
+ * device's device descriptor. Since we don't already know this value,
+ * the transfer is unsafe and it ignores I/O errors, only testing for
+ * reasonable received values.
+ *
+ * For "old scheme" initialization, size will be 8 so we read just the
+ * start of the device descriptor, which should work okay regardless of
+ * the actual bMaxPacketSize0 value. For "new scheme" initialization,
+ * size will be 64 (and buf will point to a sufficiently large buffer),
+ * which might not be kosher according to the USB spec but it's what
+ * Windows does and what many devices expect.
+ *
+ * Returns: bMaxPacketSize0 or a negative error code.
+ */
+static int get_bMaxPacketSize0(struct usb_device *udev,
+ struct usb_device_descriptor *buf, int size, bool first_time)
+{
+ int i, rc;
+
+ /*
+ * Retry on all errors; some devices are flakey.
+ * 255 is for WUSB devices, we actually need to use
+ * 512 (WUSB1.0[4.8.1]).
+ */
+ for (i = 0; i < GET_MAXPACKET0_TRIES; ++i) {
+ /* Start with invalid values in case the transfer fails */
+ buf->bDescriptorType = buf->bMaxPacketSize0 = 0;
+ rc = usb_control_msg(udev, usb_rcvaddr0pipe(),
+ USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
+ USB_DT_DEVICE << 8, 0,
+ buf, size,
+ initial_descriptor_timeout);
+ switch (buf->bMaxPacketSize0) {
+ case 8: case 16: case 32: case 64: case 255:
+ if (buf->bDescriptorType == USB_DT_DEVICE) {
+ rc = buf->bMaxPacketSize0;
+ break;
+ }
+ fallthrough;
+ default:
+ if (rc >= 0)
+ rc = -EPROTO;
+ break;
+ }
+
+ /*
+ * Some devices time out if they are powered on
+ * when already connected. They need a second
+ * reset, so return early. But only on the first
+ * attempt, lest we get into a time-out/reset loop.
+ */
+ if (rc > 0 || (rc == -ETIMEDOUT && first_time &&
+ udev->speed > USB_SPEED_FULL))
+ break;
+ }
+ return rc;
+}
+
+#define GET_DESCRIPTOR_BUFSIZE 64
+
/* Reset device, (re)assign address, get device descriptor.
* Device connection must be stable, no more debouncing needed.
* Returns device in USB_STATE_ADDRESS, except on error.
@@ -4685,6 +4746,12 @@ hub_port_init(struct usb_hub *hub, struc
int devnum = udev->devnum;
const char *driver_name;
bool do_new_scheme;
+ int maxp0;
+ struct usb_device_descriptor *buf;
+
+ buf = kmalloc(GET_DESCRIPTOR_BUFSIZE, GFP_NOIO);
+ if (!buf)
+ return -ENOMEM;
/* root hub ports have a slightly longer reset period
* (from USB 2.0 spec, section 7.1.7.5)
@@ -4799,9 +4866,6 @@ hub_port_init(struct usb_hub *hub, struc
for (retries = 0; retries < GET_DESCRIPTOR_TRIES; (++retries, msleep(100))) {
if (do_new_scheme) {
- struct usb_device_descriptor *buf;
- int r = 0;
-
retval = hub_enable_device(udev);
if (retval < 0) {
dev_err(&udev->dev,
@@ -4810,52 +4874,8 @@ hub_port_init(struct usb_hub *hub, struc
goto fail;
}
-#define GET_DESCRIPTOR_BUFSIZE 64
- buf = kmalloc(GET_DESCRIPTOR_BUFSIZE, GFP_NOIO);
- if (!buf) {
- retval = -ENOMEM;
- continue;
- }
-
- /* Retry on all errors; some devices are flakey.
- * 255 is for WUSB devices, we actually need to use
- * 512 (WUSB1.0[4.8.1]).
- */
- for (operations = 0; operations < GET_MAXPACKET0_TRIES;
- ++operations) {
- buf->bMaxPacketSize0 = 0;
- r = usb_control_msg(udev, usb_rcvaddr0pipe(),
- USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
- USB_DT_DEVICE << 8, 0,
- buf, GET_DESCRIPTOR_BUFSIZE,
- initial_descriptor_timeout);
- switch (buf->bMaxPacketSize0) {
- case 8: case 16: case 32: case 64: case 255:
- if (buf->bDescriptorType ==
- USB_DT_DEVICE) {
- r = 0;
- break;
- }
- fallthrough;
- default:
- if (r == 0)
- r = -EPROTO;
- break;
- }
- /*
- * Some devices time out if they are powered on
- * when already connected. They need a second
- * reset. But only on the first attempt,
- * lest we get into a time out/reset loop
- */
- if (r == 0 || (r == -ETIMEDOUT &&
- retries == 0 &&
- udev->speed > USB_SPEED_FULL))
- break;
- }
- udev->descriptor.bMaxPacketSize0 =
- buf->bMaxPacketSize0;
- kfree(buf);
+ maxp0 = get_bMaxPacketSize0(udev, buf,
+ GET_DESCRIPTOR_BUFSIZE, retries == 0);
retval = hub_port_reset(hub, port1, udev, delay, false);
if (retval < 0) /* error or disconnect */
@@ -4866,14 +4886,13 @@ hub_port_init(struct usb_hub *hub, struc
retval = -ENODEV;
goto fail;
}
- if (r) {
- if (r != -ENODEV)
+ if (maxp0 < 0) {
+ if (maxp0 != -ENODEV)
dev_err(&udev->dev, "device descriptor read/64, error %d\n",
- r);
- retval = -EMSGSIZE;
+ maxp0);
+ retval = maxp0;
continue;
}
-#undef GET_DESCRIPTOR_BUFSIZE
}
/*
@@ -4919,19 +4938,17 @@ hub_port_init(struct usb_hub *hub, struc
break;
}
- retval = usb_get_device_descriptor(udev, 8);
- if (retval < 8) {
+ /* !do_new_scheme || wusb */
+ maxp0 = get_bMaxPacketSize0(udev, buf, 8, retries == 0);
+ if (maxp0 < 0) {
+ retval = maxp0;
if (retval != -ENODEV)
dev_err(&udev->dev,
"device descriptor read/8, error %d\n",
retval);
- if (retval >= 0)
- retval = -EMSGSIZE;
} else {
u32 delay;
- retval = 0;
-
delay = udev->parent->hub_delay;
udev->hub_delay = min_t(u32, delay,
USB_TP_TRANSMISSION_DELAY_MAX);
@@ -4948,27 +4965,10 @@ hub_port_init(struct usb_hub *hub, struc
if (retval)
goto fail;
- /*
- * Some superspeed devices have finished the link training process
- * and attached to a superspeed hub port, but the device descriptor
- * got from those devices show they aren't superspeed devices. Warm
- * reset the port attached by the devices can fix them.
- */
- if ((udev->speed >= USB_SPEED_SUPER) &&
- (le16_to_cpu(udev->descriptor.bcdUSB) < 0x0300)) {
- dev_err(&udev->dev, "got a wrong device descriptor, "
- "warm reset device\n");
- hub_port_reset(hub, port1, udev,
- HUB_BH_RESET_TIME, true);
- retval = -EINVAL;
- goto fail;
- }
-
- if (udev->descriptor.bMaxPacketSize0 == 0xff ||
- udev->speed >= USB_SPEED_SUPER)
+ if (maxp0 == 0xff || udev->speed >= USB_SPEED_SUPER)
i = 512;
else
- i = udev->descriptor.bMaxPacketSize0;
+ i = maxp0;
if (usb_endpoint_maxp(&udev->ep0.desc) != i) {
if (udev->speed == USB_SPEED_LOW ||
!(i == 8 || i == 16 || i == 32 || i == 64)) {
@@ -4994,6 +4994,20 @@ hub_port_init(struct usb_hub *hub, struc
goto fail;
}
+ /*
+ * Some superspeed devices have finished the link training process
+ * and attached to a superspeed hub port, but the device descriptor
+ * got from those devices show they aren't superspeed devices. Warm
+ * reset the port attached by the devices can fix them.
+ */
+ if ((udev->speed >= USB_SPEED_SUPER) &&
+ (le16_to_cpu(udev->descriptor.bcdUSB) < 0x0300)) {
+ dev_err(&udev->dev, "got a wrong device descriptor, warm reset device\n");
+ hub_port_reset(hub, port1, udev, HUB_BH_RESET_TIME, true);
+ retval = -EINVAL;
+ goto fail;
+ }
+
usb_detect_quirks(udev);
if (udev->wusb == 0 && le16_to_cpu(udev->descriptor.bcdUSB) >= 0x0201) {
@@ -5016,6 +5030,7 @@ fail:
hub_port_disable(hub, port1, 0);
update_devnum(udev, devnum); /* for disconnect processing */
}
+ kfree(buf);
return retval;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 584/600] USB: core: Change usb_get_device_descriptor() API
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (582 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 583/600] USB: core: Unite old scheme and new scheme descriptor reads Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 585/600] USB: core: Fix race by not overwriting udev->descriptor in hub_port_init() Greg Kroah-Hartman
` (26 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Alan Stern
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit de28e469da75359a2bb8cd8778b78aa64b1be1f4 upstream.
The usb_get_device_descriptor() routine reads the device descriptor
from the udev device and stores it directly in udev->descriptor. This
interface is error prone, because the USB subsystem expects in-memory
copies of a device's descriptors to be immutable once the device has
been initialized.
The interface is changed so that the device descriptor is left in a
kmalloc-ed buffer, not copied into the usb_device structure. A
pointer to the buffer is returned to the caller, who is then
responsible for kfree-ing it. The corresponding changes needed in the
various callers are fairly small.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/d0111bb6-56c1-4f90-adf2-6cfe152f6561@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hcd.c | 10 +++++++---
drivers/usb/core/hub.c | 44 +++++++++++++++++++++++---------------------
drivers/usb/core/message.c | 29 ++++++++++++-----------------
drivers/usb/core/usb.h | 4 ++--
4 files changed, 44 insertions(+), 43 deletions(-)
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -983,6 +983,7 @@ static int register_root_hub(struct usb_
{
struct device *parent_dev = hcd->self.controller;
struct usb_device *usb_dev = hcd->self.root_hub;
+ struct usb_device_descriptor *descr;
const int devnum = 1;
int retval;
@@ -994,13 +995,16 @@ static int register_root_hub(struct usb_
mutex_lock(&usb_bus_idr_lock);
usb_dev->ep0.desc.wMaxPacketSize = cpu_to_le16(64);
- retval = usb_get_device_descriptor(usb_dev, USB_DT_DEVICE_SIZE);
- if (retval != sizeof usb_dev->descriptor) {
+ descr = usb_get_device_descriptor(usb_dev);
+ if (IS_ERR(descr)) {
+ retval = PTR_ERR(descr);
mutex_unlock(&usb_bus_idr_lock);
dev_dbg (parent_dev, "can't read %s device descriptor %d\n",
dev_name(&usb_dev->dev), retval);
- return (retval < 0) ? retval : -EMSGSIZE;
+ return retval;
}
+ usb_dev->descriptor = *descr;
+ kfree(descr);
if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) {
retval = usb_get_bos_descriptor(usb_dev);
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -2656,12 +2656,17 @@ int usb_authorize_device(struct usb_devi
}
if (usb_dev->wusb) {
- result = usb_get_device_descriptor(usb_dev, sizeof(usb_dev->descriptor));
- if (result < 0) {
+ struct usb_device_descriptor *descr;
+
+ descr = usb_get_device_descriptor(usb_dev);
+ if (IS_ERR(descr)) {
+ result = PTR_ERR(descr);
dev_err(&usb_dev->dev, "can't re-read device descriptor for "
"authorization: %d\n", result);
goto error_device_descriptor;
}
+ usb_dev->descriptor = *descr;
+ kfree(descr);
}
usb_dev->authorized = 1;
@@ -4747,7 +4752,7 @@ hub_port_init(struct usb_hub *hub, struc
const char *driver_name;
bool do_new_scheme;
int maxp0;
- struct usb_device_descriptor *buf;
+ struct usb_device_descriptor *buf, *descr;
buf = kmalloc(GET_DESCRIPTOR_BUFSIZE, GFP_NOIO);
if (!buf)
@@ -4984,15 +4989,16 @@ hub_port_init(struct usb_hub *hub, struc
usb_ep0_reinit(udev);
}
- retval = usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE);
- if (retval < (signed)sizeof(udev->descriptor)) {
+ descr = usb_get_device_descriptor(udev);
+ if (IS_ERR(descr)) {
+ retval = PTR_ERR(descr);
if (retval != -ENODEV)
dev_err(&udev->dev, "device descriptor read/all, error %d\n",
retval);
- if (retval >= 0)
- retval = -ENOMSG;
goto fail;
}
+ udev->descriptor = *descr;
+ kfree(descr);
/*
* Some superspeed devices have finished the link training process
@@ -5111,7 +5117,7 @@ hub_power_remaining(struct usb_hub *hub)
static int descriptors_changed(struct usb_device *udev,
- struct usb_device_descriptor *old_device_descriptor,
+ struct usb_device_descriptor *new_device_descriptor,
struct usb_host_bos *old_bos)
{
int changed = 0;
@@ -5122,8 +5128,8 @@ static int descriptors_changed(struct us
int length;
char *buf;
- if (memcmp(&udev->descriptor, old_device_descriptor,
- sizeof(*old_device_descriptor)) != 0)
+ if (memcmp(&udev->descriptor, new_device_descriptor,
+ sizeof(*new_device_descriptor)) != 0)
return 1;
if ((old_bos && !udev->bos) || (!old_bos && udev->bos))
@@ -5443,9 +5449,8 @@ static void hub_port_connect_change(stru
{
struct usb_port *port_dev = hub->ports[port1 - 1];
struct usb_device *udev = port_dev->child;
- struct usb_device_descriptor descriptor;
+ struct usb_device_descriptor *descr;
int status = -ENODEV;
- int retval;
dev_dbg(&port_dev->dev, "status %04x, change %04x, %s\n", portstatus,
portchange, portspeed(hub, portstatus));
@@ -5472,23 +5477,20 @@ static void hub_port_connect_change(stru
* changed device descriptors before resuscitating the
* device.
*/
- descriptor = udev->descriptor;
- retval = usb_get_device_descriptor(udev,
- sizeof(udev->descriptor));
- if (retval < 0) {
+ descr = usb_get_device_descriptor(udev);
+ if (IS_ERR(descr)) {
dev_dbg(&udev->dev,
- "can't read device descriptor %d\n",
- retval);
+ "can't read device descriptor %ld\n",
+ PTR_ERR(descr));
} else {
- if (descriptors_changed(udev, &descriptor,
+ if (descriptors_changed(udev, descr,
udev->bos)) {
dev_dbg(&udev->dev,
"device descriptor has changed\n");
- /* for disconnect() calls */
- udev->descriptor = descriptor;
} else {
status = 0; /* Nothing to do */
}
+ kfree(descr);
}
#ifdef CONFIG_PM
} else if (udev->state == USB_STATE_SUSPENDED &&
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1039,40 +1039,35 @@ char *usb_cache_string(struct usb_device
}
/*
- * usb_get_device_descriptor - (re)reads the device descriptor (usbcore)
- * @dev: the device whose device descriptor is being updated
- * @size: how much of the descriptor to read
+ * usb_get_device_descriptor - read the device descriptor
+ * @udev: the device whose device descriptor should be read
*
* Context: task context, might sleep.
*
- * Updates the copy of the device descriptor stored in the device structure,
- * which dedicates space for this purpose.
- *
* Not exported, only for use by the core. If drivers really want to read
* the device descriptor directly, they can call usb_get_descriptor() with
* type = USB_DT_DEVICE and index = 0.
*
- * This call is synchronous, and may not be used in an interrupt context.
- *
- * Return: The number of bytes received on success, or else the status code
- * returned by the underlying usb_control_msg() call.
+ * Returns: a pointer to a dynamically allocated usb_device_descriptor
+ * structure (which the caller must deallocate), or an ERR_PTR value.
*/
-int usb_get_device_descriptor(struct usb_device *dev, unsigned int size)
+struct usb_device_descriptor *usb_get_device_descriptor(struct usb_device *udev)
{
struct usb_device_descriptor *desc;
int ret;
- if (size > sizeof(*desc))
- return -EINVAL;
desc = kmalloc(sizeof(*desc), GFP_NOIO);
if (!desc)
- return -ENOMEM;
+ return ERR_PTR(-ENOMEM);
+
+ ret = usb_get_descriptor(udev, USB_DT_DEVICE, 0, desc, sizeof(*desc));
+ if (ret == sizeof(*desc))
+ return desc;
- ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, size);
if (ret >= 0)
- memcpy(&dev->descriptor, desc, size);
+ ret = -EMSGSIZE;
kfree(desc);
- return ret;
+ return ERR_PTR(ret);
}
/*
--- a/drivers/usb/core/usb.h
+++ b/drivers/usb/core/usb.h
@@ -42,8 +42,8 @@ extern bool usb_endpoint_is_ignored(stru
struct usb_endpoint_descriptor *epd);
extern int usb_remove_device(struct usb_device *udev);
-extern int usb_get_device_descriptor(struct usb_device *dev,
- unsigned int size);
+extern struct usb_device_descriptor *usb_get_device_descriptor(
+ struct usb_device *udev);
extern int usb_set_isoch_delay(struct usb_device *dev);
extern int usb_get_bos_descriptor(struct usb_device *dev);
extern void usb_release_bos_descriptor(struct usb_device *dev);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 585/600] USB: core: Fix race by not overwriting udev->descriptor in hub_port_init()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (583 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 584/600] USB: core: Change usb_get_device_descriptor() API Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 586/600] USB: core: Fix oversight in SuperSpeed initialization Greg Kroah-Hartman
` (25 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Alan Stern, Khazhy Kumykov,
syzbot+18996170f8096c6174d0
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit ff33299ec8bb80cdcc073ad9c506bd79bb2ed20b upstream.
Syzbot reported an out-of-bounds read in sysfs.c:read_descriptors():
BUG: KASAN: slab-out-of-bounds in read_descriptors+0x263/0x280 drivers/usb/core/sysfs.c:883
Read of size 8 at addr ffff88801e78b8c8 by task udevd/5011
CPU: 0 PID: 5011 Comm: udevd Not tainted 6.4.0-rc6-syzkaller-00195-g40f71e7cd3c6 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/27/2023
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xd9/0x150 lib/dump_stack.c:106
print_address_description.constprop.0+0x2c/0x3c0 mm/kasan/report.c:351
print_report mm/kasan/report.c:462 [inline]
kasan_report+0x11c/0x130 mm/kasan/report.c:572
read_descriptors+0x263/0x280 drivers/usb/core/sysfs.c:883
...
Allocated by task 758:
...
__do_kmalloc_node mm/slab_common.c:966 [inline]
__kmalloc+0x5e/0x190 mm/slab_common.c:979
kmalloc include/linux/slab.h:563 [inline]
kzalloc include/linux/slab.h:680 [inline]
usb_get_configuration+0x1f7/0x5170 drivers/usb/core/config.c:887
usb_enumerate_device drivers/usb/core/hub.c:2407 [inline]
usb_new_device+0x12b0/0x19d0 drivers/usb/core/hub.c:2545
As analyzed by Khazhy Kumykov, the cause of this bug is a race between
read_descriptors() and hub_port_init(): The first routine uses a field
in udev->descriptor, not expecting it to change, while the second
overwrites it.
Prior to commit 45bf39f8df7f ("USB: core: Don't hold device lock while
reading the "descriptors" sysfs file") this race couldn't occur,
because the routines were mutually exclusive thanks to the device
locking. Removing that locking from read_descriptors() exposed it to
the race.
The best way to fix the bug is to keep hub_port_init() from changing
udev->descriptor once udev has been initialized and registered.
Drivers expect the descriptors stored in the kernel to be immutable;
we should not undermine this expectation. In fact, this change should
have been made long ago.
So now hub_port_init() will take an additional argument, specifying a
buffer in which to store the device descriptor it reads. (If udev has
not yet been initialized, the buffer pointer will be NULL and then
hub_port_init() will store the device descriptor in udev as before.)
This eliminates the data race responsible for the out-of-bounds read.
The changes to hub_port_init() appear more extensive than they really
are, because of indentation changes resulting from an attempt to avoid
writing to other parts of the usb_device structure after it has been
initialized. Similar changes should be made to the code that reads
the BOS descriptor, but that can be handled in a separate patch later
on. This patch is sufficient to fix the bug found by syzbot.
Reported-and-tested-by: syzbot+18996170f8096c6174d0@syzkaller.appspotmail.com
Closes: https://lore.kernel.org/linux-usb/000000000000c0ffe505fe86c9ca@google.com/#r
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Cc: Khazhy Kumykov <khazhy@google.com>
Fixes: 45bf39f8df7f ("USB: core: Don't hold device lock while reading the "descriptors" sysfs file")
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/b958b47a-9a46-4c22-a9f9-e42e42c31251@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hub.c | 114 ++++++++++++++++++++++++++++++-------------------
1 file changed, 70 insertions(+), 44 deletions(-)
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4736,10 +4736,17 @@ static int get_bMaxPacketSize0(struct us
* the port lock. For a newly detected device that is not accessible
* through any global pointers, it's not necessary to lock the device,
* but it is still necessary to lock the port.
+ *
+ * For a newly detected device, @dev_descr must be NULL. The device
+ * descriptor retrieved from the device will then be stored in
+ * @udev->descriptor. For an already existing device, @dev_descr
+ * must be non-NULL. The device descriptor will be stored there,
+ * not in @udev->descriptor, because descriptors for registered
+ * devices are meant to be immutable.
*/
static int
hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
- int retry_counter)
+ int retry_counter, struct usb_device_descriptor *dev_descr)
{
struct usb_device *hdev = hub->hdev;
struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
@@ -4751,6 +4758,7 @@ hub_port_init(struct usb_hub *hub, struc
int devnum = udev->devnum;
const char *driver_name;
bool do_new_scheme;
+ const bool initial = !dev_descr;
int maxp0;
struct usb_device_descriptor *buf, *descr;
@@ -4789,32 +4797,34 @@ hub_port_init(struct usb_hub *hub, struc
}
oldspeed = udev->speed;
- /* USB 2.0 section 5.5.3 talks about ep0 maxpacket ...
- * it's fixed size except for full speed devices.
- * For Wireless USB devices, ep0 max packet is always 512 (tho
- * reported as 0xff in the device descriptor). WUSB1.0[4.8.1].
- */
- switch (udev->speed) {
- case USB_SPEED_SUPER_PLUS:
- case USB_SPEED_SUPER:
- case USB_SPEED_WIRELESS: /* fixed at 512 */
- udev->ep0.desc.wMaxPacketSize = cpu_to_le16(512);
- break;
- case USB_SPEED_HIGH: /* fixed at 64 */
- udev->ep0.desc.wMaxPacketSize = cpu_to_le16(64);
- break;
- case USB_SPEED_FULL: /* 8, 16, 32, or 64 */
- /* to determine the ep0 maxpacket size, try to read
- * the device descriptor to get bMaxPacketSize0 and
- * then correct our initial guess.
+ if (initial) {
+ /* USB 2.0 section 5.5.3 talks about ep0 maxpacket ...
+ * it's fixed size except for full speed devices.
+ * For Wireless USB devices, ep0 max packet is always 512 (tho
+ * reported as 0xff in the device descriptor). WUSB1.0[4.8.1].
*/
- udev->ep0.desc.wMaxPacketSize = cpu_to_le16(64);
- break;
- case USB_SPEED_LOW: /* fixed at 8 */
- udev->ep0.desc.wMaxPacketSize = cpu_to_le16(8);
- break;
- default:
- goto fail;
+ switch (udev->speed) {
+ case USB_SPEED_SUPER_PLUS:
+ case USB_SPEED_SUPER:
+ case USB_SPEED_WIRELESS: /* fixed at 512 */
+ udev->ep0.desc.wMaxPacketSize = cpu_to_le16(512);
+ break;
+ case USB_SPEED_HIGH: /* fixed at 64 */
+ udev->ep0.desc.wMaxPacketSize = cpu_to_le16(64);
+ break;
+ case USB_SPEED_FULL: /* 8, 16, 32, or 64 */
+ /* to determine the ep0 maxpacket size, try to read
+ * the device descriptor to get bMaxPacketSize0 and
+ * then correct our initial guess.
+ */
+ udev->ep0.desc.wMaxPacketSize = cpu_to_le16(64);
+ break;
+ case USB_SPEED_LOW: /* fixed at 8 */
+ udev->ep0.desc.wMaxPacketSize = cpu_to_le16(8);
+ break;
+ default:
+ goto fail;
+ }
}
if (udev->speed == USB_SPEED_WIRELESS)
@@ -4837,22 +4847,24 @@ hub_port_init(struct usb_hub *hub, struc
if (udev->speed < USB_SPEED_SUPER)
dev_info(&udev->dev,
"%s %s USB device number %d using %s\n",
- (udev->config) ? "reset" : "new", speed,
+ (initial ? "new" : "reset"), speed,
devnum, driver_name);
- /* Set up TT records, if needed */
- if (hdev->tt) {
- udev->tt = hdev->tt;
- udev->ttport = hdev->ttport;
- } else if (udev->speed != USB_SPEED_HIGH
- && hdev->speed == USB_SPEED_HIGH) {
- if (!hub->tt.hub) {
- dev_err(&udev->dev, "parent hub has no TT\n");
- retval = -EINVAL;
- goto fail;
+ if (initial) {
+ /* Set up TT records, if needed */
+ if (hdev->tt) {
+ udev->tt = hdev->tt;
+ udev->ttport = hdev->ttport;
+ } else if (udev->speed != USB_SPEED_HIGH
+ && hdev->speed == USB_SPEED_HIGH) {
+ if (!hub->tt.hub) {
+ dev_err(&udev->dev, "parent hub has no TT\n");
+ retval = -EINVAL;
+ goto fail;
+ }
+ udev->tt = &hub->tt;
+ udev->ttport = port1;
}
- udev->tt = &hub->tt;
- udev->ttport = port1;
}
/* Why interleave GET_DESCRIPTOR and SET_ADDRESS this way?
@@ -4881,6 +4893,12 @@ hub_port_init(struct usb_hub *hub, struc
maxp0 = get_bMaxPacketSize0(udev, buf,
GET_DESCRIPTOR_BUFSIZE, retries == 0);
+ if (maxp0 > 0 && !initial &&
+ maxp0 != udev->descriptor.bMaxPacketSize0) {
+ dev_err(&udev->dev, "device reset changed ep0 maxpacket size!\n");
+ retval = -ENODEV;
+ goto fail;
+ }
retval = hub_port_reset(hub, port1, udev, delay, false);
if (retval < 0) /* error or disconnect */
@@ -4954,6 +4972,12 @@ hub_port_init(struct usb_hub *hub, struc
} else {
u32 delay;
+ if (!initial && maxp0 != udev->descriptor.bMaxPacketSize0) {
+ dev_err(&udev->dev, "device reset changed ep0 maxpacket size!\n");
+ retval = -ENODEV;
+ goto fail;
+ }
+
delay = udev->parent->hub_delay;
udev->hub_delay = min_t(u32, delay,
USB_TP_TRANSMISSION_DELAY_MAX);
@@ -4997,7 +5021,10 @@ hub_port_init(struct usb_hub *hub, struc
retval);
goto fail;
}
- udev->descriptor = *descr;
+ if (initial)
+ udev->descriptor = *descr;
+ else
+ *dev_descr = *descr;
kfree(descr);
/*
@@ -5302,7 +5329,7 @@ static void hub_port_connect(struct usb_
}
/* reset (non-USB 3.0 devices) and get descriptor */
- status = hub_port_init(hub, udev, port1, i);
+ status = hub_port_init(hub, udev, port1, i, NULL);
if (status < 0)
goto loop;
@@ -5928,7 +5955,7 @@ static int usb_reset_and_verify_device(s
struct usb_device *parent_hdev = udev->parent;
struct usb_hub *parent_hub;
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
- struct usb_device_descriptor descriptor = udev->descriptor;
+ struct usb_device_descriptor descriptor;
struct usb_host_bos *bos;
int i, j, ret = 0;
int port1 = udev->portnum;
@@ -5960,7 +5987,7 @@ static int usb_reset_and_verify_device(s
/* ep0 maxpacket size may change; let the HCD know about it.
* Other endpoints will be handled by re-enumeration. */
usb_ep0_reinit(udev);
- ret = hub_port_init(parent_hub, udev, port1, i);
+ ret = hub_port_init(parent_hub, udev, port1, i, &descriptor);
if (ret >= 0 || ret == -ENOTCONN || ret == -ENODEV)
break;
}
@@ -5972,7 +5999,6 @@ static int usb_reset_and_verify_device(s
/* Device might have changed firmware (DFU or similar) */
if (descriptors_changed(udev, &descriptor, bos)) {
dev_info(&udev->dev, "device firmware changed\n");
- udev->descriptor = descriptor; /* for disconnect() calls */
goto re_enumerate;
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 586/600] USB: core: Fix oversight in SuperSpeed initialization
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (584 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 585/600] USB: core: Fix race by not overwriting udev->descriptor in hub_port_init() Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 587/600] x86/sgx: Break up long non-preemptible delays in sgx_vepc_release() Greg Kroah-Hartman
` (24 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Alan Stern, Thinh Nguyen
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alan Stern <stern@rowland.harvard.edu>
commit 59cf445754566984fd55af19ba7146c76e6627bc upstream.
Commit 85d07c556216 ("USB: core: Unite old scheme and new scheme
descriptor reads") altered the way USB devices are enumerated
following detection, and in the process it messed up the
initialization of SuperSpeed (or faster) devices:
[ 31.650759] usb 2-1: new SuperSpeed Plus Gen 2x1 USB device number 2 using xhci_hcd
[ 31.663107] usb 2-1: device descriptor read/8, error -71
[ 31.952697] usb 2-1: new SuperSpeed Plus Gen 2x1 USB device number 3 using xhci_hcd
[ 31.965122] usb 2-1: device descriptor read/8, error -71
[ 32.080991] usb usb2-port1: attempt power cycle
...
The problem was caused by the commit forgetting that in SuperSpeed or
faster devices, the device descriptor uses a logarithmic encoding of
the bMaxPacketSize0 value. (For some reason I thought the 255 case in
the switch statement was meant for these devices, but it isn't -- it
was meant for Wireless USB and is no longer needed.)
We can fix the oversight by testing for buf->bMaxPacketSize0 = 9
(meaning 512, the actual maxpacket size for ep0 on all SuperSpeed
devices) and straightening out the logic that checks and adjusts our
initial guesses of the maxpacket value.
Reported-and-tested-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Closes: https://lore.kernel.org/linux-usb/20230810002257.nadxmfmrobkaxgnz@synopsys.com/
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Fixes: 85d07c556216 ("USB: core: Unite old scheme and new scheme descriptor reads")
Link: https://lore.kernel.org/r/8809e6c5-59d5-4d2d-ac8f-6d106658ad73@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/usb/core/hub.c | 36 ++++++++++++++++++++++++------------
1 file changed, 24 insertions(+), 12 deletions(-)
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4700,7 +4700,7 @@ static int get_bMaxPacketSize0(struct us
buf, size,
initial_descriptor_timeout);
switch (buf->bMaxPacketSize0) {
- case 8: case 16: case 32: case 64: case 255:
+ case 8: case 16: case 32: case 64: case 9:
if (buf->bDescriptorType == USB_DT_DEVICE) {
rc = buf->bMaxPacketSize0;
break;
@@ -4994,23 +4994,35 @@ hub_port_init(struct usb_hub *hub, struc
if (retval)
goto fail;
- if (maxp0 == 0xff || udev->speed >= USB_SPEED_SUPER)
- i = 512;
- else
- i = maxp0;
- if (usb_endpoint_maxp(&udev->ep0.desc) != i) {
- if (udev->speed == USB_SPEED_LOW ||
- !(i == 8 || i == 16 || i == 32 || i == 64)) {
- dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", i);
- retval = -EMSGSIZE;
- goto fail;
- }
+ /*
+ * Check the ep0 maxpacket guess and correct it if necessary.
+ * maxp0 is the value stored in the device descriptor;
+ * i is the value it encodes (logarithmic for SuperSpeed or greater).
+ */
+ i = maxp0;
+ if (udev->speed >= USB_SPEED_SUPER) {
+ if (maxp0 <= 16)
+ i = 1 << maxp0;
+ else
+ i = 0; /* Invalid */
+ }
+ if (usb_endpoint_maxp(&udev->ep0.desc) == i) {
+ ; /* Initial ep0 maxpacket guess is right */
+ } else if ((udev->speed == USB_SPEED_FULL ||
+ udev->speed == USB_SPEED_HIGH) &&
+ (i == 8 || i == 16 || i == 32 || i == 64)) {
+ /* Initial guess is wrong; use the descriptor's value */
if (udev->speed == USB_SPEED_FULL)
dev_dbg(&udev->dev, "ep0 maxpacket = %d\n", i);
else
dev_warn(&udev->dev, "Using ep0 maxpacket: %d\n", i);
udev->ep0.desc.wMaxPacketSize = cpu_to_le16(i);
usb_ep0_reinit(udev);
+ } else {
+ /* Initial guess is wrong and descriptor's value is invalid */
+ dev_err(&udev->dev, "Invalid ep0 maxpacket: %d\n", maxp0);
+ retval = -EMSGSIZE;
+ goto fail;
}
descr = usb_get_device_descriptor(udev);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 587/600] x86/sgx: Break up long non-preemptible delays in sgx_vepc_release()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (585 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 586/600] USB: core: Fix oversight in SuperSpeed initialization Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 588/600] perf/x86/uncore: Correct the number of CHAs on EMR Greg Kroah-Hartman
` (23 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Yu Zhang, Jack Wang, Ingo Molnar,
Jarkko Sakkinen, Kai Huang, Haitao Huang
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jack Wang <jinpu.wang@ionos.com>
commit 3d7d72a34e05b23e21bafc8bfb861e73c86b31f3 upstream.
On large enclaves we hit the softlockup warning with following call trace:
xa_erase()
sgx_vepc_release()
__fput()
task_work_run()
do_exit()
The latency issue is similar to the one fixed in:
8795359e35bc ("x86/sgx: Silence softlockup detection when releasing large enclaves")
The test system has 64GB of enclave memory, and all is assigned to a single VM.
Release of 'vepc' takes a longer time and causes long latencies, which triggers
the softlockup warning.
Add cond_resched() to give other tasks a chance to run and reduce
latencies, which also avoids the softlockup detector.
[ mingo: Rewrote the changelog. ]
Fixes: 540745ddbc70 ("x86/sgx: Introduce virtual EPC for use by KVM guests")
Reported-by: Yu Zhang <yu.zhang@ionos.com>
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Yu Zhang <yu.zhang@ionos.com>
Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org>
Reviewed-by: Kai Huang <kai.huang@intel.com>
Acked-by: Haitao Huang <haitao.huang@linux.intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kernel/cpu/sgx/virt.c | 3 +++
1 file changed, 3 insertions(+)
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -204,6 +204,7 @@ static int sgx_vepc_release(struct inode
continue;
xa_erase(&vepc->page_array, index);
+ cond_resched();
}
/*
@@ -222,6 +223,7 @@ static int sgx_vepc_release(struct inode
list_add_tail(&epc_page->list, &secs_pages);
xa_erase(&vepc->page_array, index);
+ cond_resched();
}
/*
@@ -243,6 +245,7 @@ static int sgx_vepc_release(struct inode
if (sgx_vepc_free_page(epc_page))
list_add_tail(&epc_page->list, &secs_pages);
+ cond_resched();
}
if (!list_empty(&secs_pages))
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 588/600] perf/x86/uncore: Correct the number of CHAs on EMR
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (586 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 587/600] x86/sgx: Break up long non-preemptible delays in sgx_vepc_release() Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 589/600] serial: sc16is7xx: remove obsolete out_thread label Greg Kroah-Hartman
` (22 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Stephane Eranian, Yunying Sun,
Kan Liang, Ingo Molnar
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Kan Liang <kan.liang@linux.intel.com>
commit 6f7f984fa85b305799076a1bcec941b9377587de upstream.
Starting from SPR, the basic uncore PMON information is retrieved from
the discovery table (resides in an MMIO space populated by BIOS). It is
called the discovery method. The existing value of the type->num_boxes
is from the discovery table.
On some SPR variants, there is a firmware bug that makes the value from the
discovery table incorrect. We use the value from the
SPR_MSR_UNC_CBO_CONFIG MSR to replace the one from the discovery table:
38776cc45eb7 ("perf/x86/uncore: Correct the number of CHAs on SPR")
Unfortunately, the SPR_MSR_UNC_CBO_CONFIG isn't available for the EMR
XCC (Always returns 0), but the above firmware bug doesn't impact the
EMR XCC.
Don't let the value from the MSR replace the existing value from the
discovery table.
Fixes: 38776cc45eb7 ("perf/x86/uncore: Correct the number of CHAs on SPR")
Reported-by: Stephane Eranian <eranian@google.com>
Reported-by: Yunying Sun <yunying.sun@intel.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Tested-by: Yunying Sun <yunying.sun@intel.com>
Link: https://lore.kernel.org/r/20230905134248.496114-1-kan.liang@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/events/intel/uncore_snbep.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -6078,8 +6078,18 @@ void spr_uncore_cpu_init(void)
type = uncore_find_type_by_id(uncore_msr_uncores, UNCORE_SPR_CHA);
if (type) {
+ /*
+ * The value from the discovery table (stored in the type->num_boxes
+ * of UNCORE_SPR_CHA) is incorrect on some SPR variants because of a
+ * firmware bug. Using the value from SPR_MSR_UNC_CBO_CONFIG to replace it.
+ */
rdmsrl(SPR_MSR_UNC_CBO_CONFIG, num_cbo);
- type->num_boxes = num_cbo;
+ /*
+ * The MSR doesn't work on the EMR XCC, but the firmware bug doesn't impact
+ * the EMR XCC. Don't let the value from the MSR replace the existing value.
+ */
+ if (num_cbo)
+ type->num_boxes = num_cbo;
}
spr_uncore_iio_free_running.num_boxes = uncore_type_max_boxes(uncore_msr_uncores, UNCORE_SPR_IIO);
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 589/600] serial: sc16is7xx: remove obsolete out_thread label
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (587 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 588/600] perf/x86/uncore: Correct the number of CHAs on EMR Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 590/600] serial: sc16is7xx: fix regression with GPIO configuration Greg Kroah-Hartman
` (21 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hugo Villeneuve, Lech Perczak,
Andy Shevchenko, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
[ Upstream commit dabc54a45711fe77674a6c0348231e00e66bd567 ]
Commit c8f71b49ee4d ("serial: sc16is7xx: setup GPIO controller later
in probe") moved GPIO setup code later in probe function. Doing so
also required to move ports cleanup code (out_ports label) after the
GPIO cleanup code.
After these moves, the out_thread label becomes misplaced and makes
part of the cleanup code illogical.
This patch remove the now obsolete out_thread label and make GPIO
setup code jump to out_ports label if it fails.
Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com>
Tested-by: Lech Perczak <lech.perczak@camlingroup.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20230807214556.540627-3-hugo@hugovil.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: 049994292834 ("serial: sc16is7xx: fix regression with GPIO configuration")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/sc16is7xx.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index 8411a0f312db0..c481c84019f4a 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -1532,7 +1532,7 @@ static int sc16is7xx_probe(struct device *dev,
s->gpio.can_sleep = 1;
ret = gpiochip_add_data(&s->gpio, s);
if (ret)
- goto out_thread;
+ goto out_ports;
}
#endif
@@ -1558,8 +1558,6 @@ static int sc16is7xx_probe(struct device *dev,
#ifdef CONFIG_GPIOLIB
if (devtype->nr_gpio)
gpiochip_remove(&s->gpio);
-
-out_thread:
#endif
out_ports:
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 590/600] serial: sc16is7xx: fix regression with GPIO configuration
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (588 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 589/600] serial: sc16is7xx: remove obsolete out_thread label Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 591/600] net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn Greg Kroah-Hartman
` (20 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Hugo Villeneuve, Andy Shevchenko,
Lech Perczak, Rob Herring, Sasha Levin
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hugo Villeneuve <hvilleneuve@dimonoff.com>
[ Upstream commit 0499942928341d572a42199580433c2b0725211e ]
Commit 679875d1d880 ("sc16is7xx: Separate GPIOs from modem control lines")
and commit 21144bab4f11 ("sc16is7xx: Handle modem status lines")
changed the function of the GPIOs pins to act as modem control
lines without any possibility of selecting GPIO function.
As a consequence, applications that depends on GPIO lines configured
by default as GPIO pins no longer work as expected.
Also, the change to select modem control lines function was done only
for channel A of dual UART variants (752/762). This was not documented
in the log message.
Allow to specify GPIO or modem control line function in the device
tree, and for each of the ports (A or B).
Do so by using the new device-tree property named
"nxp,modem-control-line-ports" (property added in separate patch).
When registering GPIO chip controller, mask-out GPIO pins declared as
modem control lines according to this new DT property.
Fixes: 679875d1d880 ("sc16is7xx: Separate GPIOs from modem control lines")
Fixes: 21144bab4f11 ("sc16is7xx: Handle modem status lines")
Cc: stable@vger.kernel.org
Signed-off-by: Hugo Villeneuve <hvilleneuve@dimonoff.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Lech Perczak <lech.perczak@camlingroup.com>
Tested-by: Lech Perczak <lech.perczak@camlingroup.com>
Acked-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20230807214556.540627-5-hugo@hugovil.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
drivers/tty/serial/sc16is7xx.c | 143 +++++++++++++++++++++++++--------
1 file changed, 108 insertions(+), 35 deletions(-)
diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index c481c84019f4a..21145eb8f2a9c 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -236,7 +236,8 @@
/* IOControl register bits (Only 750/760) */
#define SC16IS7XX_IOCONTROL_LATCH_BIT (1 << 0) /* Enable input latching */
-#define SC16IS7XX_IOCONTROL_MODEM_BIT (1 << 1) /* Enable GPIO[7:4] as modem pins */
+#define SC16IS7XX_IOCONTROL_MODEM_A_BIT (1 << 1) /* Enable GPIO[7:4] as modem A pins */
+#define SC16IS7XX_IOCONTROL_MODEM_B_BIT (1 << 2) /* Enable GPIO[3:0] as modem B pins */
#define SC16IS7XX_IOCONTROL_SRESET_BIT (1 << 3) /* Software Reset */
/* EFCR register bits */
@@ -301,12 +302,12 @@
/* Misc definitions */
#define SC16IS7XX_FIFO_SIZE (64)
#define SC16IS7XX_REG_SHIFT 2
+#define SC16IS7XX_GPIOS_PER_BANK 4
struct sc16is7xx_devtype {
char name[10];
int nr_gpio;
int nr_uart;
- int has_mctrl;
};
#define SC16IS7XX_RECONF_MD (1 << 0)
@@ -336,7 +337,9 @@ struct sc16is7xx_port {
struct clk *clk;
#ifdef CONFIG_GPIOLIB
struct gpio_chip gpio;
+ unsigned long gpio_valid_mask;
#endif
+ u8 mctrl_mask;
unsigned char buf[SC16IS7XX_FIFO_SIZE];
struct kthread_worker kworker;
struct task_struct *kworker_task;
@@ -447,35 +450,30 @@ static const struct sc16is7xx_devtype sc16is74x_devtype = {
.name = "SC16IS74X",
.nr_gpio = 0,
.nr_uart = 1,
- .has_mctrl = 0,
};
static const struct sc16is7xx_devtype sc16is750_devtype = {
.name = "SC16IS750",
- .nr_gpio = 4,
+ .nr_gpio = 8,
.nr_uart = 1,
- .has_mctrl = 1,
};
static const struct sc16is7xx_devtype sc16is752_devtype = {
.name = "SC16IS752",
- .nr_gpio = 0,
+ .nr_gpio = 8,
.nr_uart = 2,
- .has_mctrl = 1,
};
static const struct sc16is7xx_devtype sc16is760_devtype = {
.name = "SC16IS760",
- .nr_gpio = 4,
+ .nr_gpio = 8,
.nr_uart = 1,
- .has_mctrl = 1,
};
static const struct sc16is7xx_devtype sc16is762_devtype = {
.name = "SC16IS762",
- .nr_gpio = 0,
+ .nr_gpio = 8,
.nr_uart = 2,
- .has_mctrl = 1,
};
static bool sc16is7xx_regmap_volatile(struct device *dev, unsigned int reg)
@@ -1360,8 +1358,98 @@ static int sc16is7xx_gpio_direction_output(struct gpio_chip *chip,
return 0;
}
+
+static int sc16is7xx_gpio_init_valid_mask(struct gpio_chip *chip,
+ unsigned long *valid_mask,
+ unsigned int ngpios)
+{
+ struct sc16is7xx_port *s = gpiochip_get_data(chip);
+
+ *valid_mask = s->gpio_valid_mask;
+
+ return 0;
+}
+
+static int sc16is7xx_setup_gpio_chip(struct sc16is7xx_port *s)
+{
+ struct device *dev = s->p[0].port.dev;
+
+ if (!s->devtype->nr_gpio)
+ return 0;
+
+ switch (s->mctrl_mask) {
+ case 0:
+ s->gpio_valid_mask = GENMASK(7, 0);
+ break;
+ case SC16IS7XX_IOCONTROL_MODEM_A_BIT:
+ s->gpio_valid_mask = GENMASK(3, 0);
+ break;
+ case SC16IS7XX_IOCONTROL_MODEM_B_BIT:
+ s->gpio_valid_mask = GENMASK(7, 4);
+ break;
+ default:
+ break;
+ }
+
+ if (s->gpio_valid_mask == 0)
+ return 0;
+
+ s->gpio.owner = THIS_MODULE;
+ s->gpio.parent = dev;
+ s->gpio.label = dev_name(dev);
+ s->gpio.init_valid_mask = sc16is7xx_gpio_init_valid_mask;
+ s->gpio.direction_input = sc16is7xx_gpio_direction_input;
+ s->gpio.get = sc16is7xx_gpio_get;
+ s->gpio.direction_output = sc16is7xx_gpio_direction_output;
+ s->gpio.set = sc16is7xx_gpio_set;
+ s->gpio.base = -1;
+ s->gpio.ngpio = s->devtype->nr_gpio;
+ s->gpio.can_sleep = 1;
+
+ return gpiochip_add_data(&s->gpio, s);
+}
#endif
+/*
+ * Configure ports designated to operate as modem control lines.
+ */
+static int sc16is7xx_setup_mctrl_ports(struct sc16is7xx_port *s)
+{
+ int i;
+ int ret;
+ int count;
+ u32 mctrl_port[2];
+ struct device *dev = s->p[0].port.dev;
+
+ count = device_property_count_u32(dev, "nxp,modem-control-line-ports");
+ if (count < 0 || count > ARRAY_SIZE(mctrl_port))
+ return 0;
+
+ ret = device_property_read_u32_array(dev, "nxp,modem-control-line-ports",
+ mctrl_port, count);
+ if (ret)
+ return ret;
+
+ s->mctrl_mask = 0;
+
+ for (i = 0; i < count; i++) {
+ /* Use GPIO lines as modem control lines */
+ if (mctrl_port[i] == 0)
+ s->mctrl_mask |= SC16IS7XX_IOCONTROL_MODEM_A_BIT;
+ else if (mctrl_port[i] == 1)
+ s->mctrl_mask |= SC16IS7XX_IOCONTROL_MODEM_B_BIT;
+ }
+
+ if (s->mctrl_mask)
+ regmap_update_bits(
+ s->regmap,
+ SC16IS7XX_IOCONTROL_REG << SC16IS7XX_REG_SHIFT,
+ SC16IS7XX_IOCONTROL_MODEM_A_BIT |
+ SC16IS7XX_IOCONTROL_MODEM_B_BIT, s->mctrl_mask);
+
+ return 0;
+}
+
static const struct serial_rs485 sc16is7xx_rs485_supported = {
.flags = SER_RS485_ENABLED | SER_RS485_RTS_AFTER_SEND,
.delay_rts_before_send = 1,
@@ -1474,12 +1562,6 @@ static int sc16is7xx_probe(struct device *dev,
SC16IS7XX_EFCR_RXDISABLE_BIT |
SC16IS7XX_EFCR_TXDISABLE_BIT);
- /* Use GPIO lines as modem status registers */
- if (devtype->has_mctrl)
- sc16is7xx_port_write(&s->p[i].port,
- SC16IS7XX_IOCONTROL_REG,
- SC16IS7XX_IOCONTROL_MODEM_BIT);
-
/* Initialize kthread work structs */
kthread_init_work(&s->p[i].tx_work, sc16is7xx_tx_proc);
kthread_init_work(&s->p[i].reg_work, sc16is7xx_reg_proc);
@@ -1517,23 +1599,14 @@ static int sc16is7xx_probe(struct device *dev,
s->p[u].irda_mode = true;
}
+ ret = sc16is7xx_setup_mctrl_ports(s);
+ if (ret)
+ goto out_ports;
+
#ifdef CONFIG_GPIOLIB
- if (devtype->nr_gpio) {
- /* Setup GPIO cotroller */
- s->gpio.owner = THIS_MODULE;
- s->gpio.parent = dev;
- s->gpio.label = dev_name(dev);
- s->gpio.direction_input = sc16is7xx_gpio_direction_input;
- s->gpio.get = sc16is7xx_gpio_get;
- s->gpio.direction_output = sc16is7xx_gpio_direction_output;
- s->gpio.set = sc16is7xx_gpio_set;
- s->gpio.base = -1;
- s->gpio.ngpio = devtype->nr_gpio;
- s->gpio.can_sleep = 1;
- ret = gpiochip_add_data(&s->gpio, s);
- if (ret)
- goto out_ports;
- }
+ ret = sc16is7xx_setup_gpio_chip(s);
+ if (ret)
+ goto out_ports;
#endif
/*
@@ -1556,7 +1629,7 @@ static int sc16is7xx_probe(struct device *dev,
return 0;
#ifdef CONFIG_GPIOLIB
- if (devtype->nr_gpio)
+ if (s->gpio_valid_mask)
gpiochip_remove(&s->gpio);
#endif
@@ -1580,7 +1653,7 @@ static void sc16is7xx_remove(struct device *dev)
int i;
#ifdef CONFIG_GPIOLIB
- if (s->devtype->nr_gpio)
+ if (s->gpio_valid_mask)
gpiochip_remove(&s->gpio);
#endif
--
2.40.1
^ permalink raw reply related [flat|nested] 631+ messages in thread
* [PATCH 6.1 591/600] net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (589 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 590/600] serial: sc16is7xx: fix regression with GPIO configuration Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 592/600] tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY Greg Kroah-Hartman
` (19 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Martin Lau, Lorenz Bauer,
Kuniyuki Iwashima, Martin KaFai Lau
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenz Bauer <lmb@isovalent.com>
commit 74bdfab4fd7c641e55f7fe9d1be9687eeb01df67 upstream.
There are already INDIRECT_CALLABLE_DECLARE in the hashtable
headers, no need to declare them again.
Fixes: 0f495f761722 ("net: remove duplicate reuseport_lookup functions")
Suggested-by: Martin Lau <martin.lau@linux.dev>
Signed-off-by: Lorenz Bauer <lmb@isovalent.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://lore.kernel.org/r/20230731-indir-call-v1-1-4cd0aeaee64f@isovalent.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ipv4/inet_hashtables.c | 2 --
net/ipv6/inet6_hashtables.c | 2 --
2 files changed, 4 deletions(-)
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -333,8 +333,6 @@ static inline int compute_score(struct s
return score;
}
-INDIRECT_CALLABLE_DECLARE(inet_ehashfn_t udp_ehashfn);
-
struct sock *inet_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
__be32 saddr, __be16 sport,
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -112,8 +112,6 @@ static inline int compute_score(struct s
return score;
}
-INDIRECT_CALLABLE_DECLARE(inet6_ehashfn_t udp6_ehashfn);
-
struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk,
struct sk_buff *skb, int doff,
const struct in6_addr *saddr,
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 592/600] tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (590 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 591/600] net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 593/600] Revert "drm/amd/display: Do not set drr on pipe commit" Greg Kroah-Hartman
` (18 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Zheng Yejian,
Masami Hiramatsu (Google), Brian Foster, Steven Rostedt (Google)
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Brian Foster <bfoster@redhat.com>
commit 3d07fa1dd19035eb0b13ae6697efd5caa9033e74 upstream.
The pipe cpumask used to serialize opens between the main and percpu
trace pipes is not zeroed or initialized. This can result in
spurious -EBUSY returns if underlying memory is not fully zeroed.
This has been observed by immediate failure to read the main
trace_pipe file on an otherwise newly booted and idle system:
# cat /sys/kernel/debug/tracing/trace_pipe
cat: /sys/kernel/debug/tracing/trace_pipe: Device or resource busy
Zero the allocation of pipe_cpumask to avoid the problem.
Link: https://lore.kernel.org/linux-trace-kernel/20230831125500.986862-1-bfoster@redhat.com
Cc: stable@vger.kernel.org
Fixes: c2489bb7e6be ("tracing: Introduce pipe_cpumask to avoid race on trace_pipes")
Reviewed-by: Zheng Yejian <zhengyejian1@huawei.com>
Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
kernel/trace/trace.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -9395,7 +9395,7 @@ static struct trace_array *trace_array_c
if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL))
goto out_free_tr;
- if (!alloc_cpumask_var(&tr->pipe_cpumask, GFP_KERNEL))
+ if (!zalloc_cpumask_var(&tr->pipe_cpumask, GFP_KERNEL))
goto out_free_tr;
tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS;
@@ -10267,7 +10267,7 @@ __init static int tracer_alloc_buffers(v
if (trace_create_savedcmd() < 0)
goto out_free_temp_buffer;
- if (!alloc_cpumask_var(&global_trace.pipe_cpumask, GFP_KERNEL))
+ if (!zalloc_cpumask_var(&global_trace.pipe_cpumask, GFP_KERNEL))
goto out_free_savedcmd;
/* TODO: make the number of buffers hot pluggable with CPUS */
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 593/600] Revert "drm/amd/display: Do not set drr on pipe commit"
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (591 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 592/600] tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 594/600] md: Free resources in __md_stop Greg Kroah-Hartman
` (17 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Aurabindo Pillai, Alex Deucher,
Michel Dänzer, Hamza Mahfooz
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michel Dänzer <mdaenzer@redhat.com>
commit 360930985ec9f394c82ba0b235403b4a366d1560 upstream.
This reverts commit e101bf95ea87ccc03ac2f48dfc0757c6364ff3c7.
Caused a regression:
Samsung Odyssey Neo G9, running at 5120x1440@240/VRR, connected to Navi
21 via DisplayPort, blanks and the GPU hangs while starting the Steam
game Assetto Corsa Competizione (via Proton 7.0).
Example dmesg excerpt:
amdgpu 0000:0c:00.0: [drm] ERROR [CRTC:82:crtc-0] flip_done timed out
NMI watchdog: Watchdog detected hard LOCKUP on cpu 6
[...]
RIP: 0010:amdgpu_device_rreg.part.0+0x2f/0xf0 [amdgpu]
Code: 41 54 44 8d 24 b5 00 00 00 00 55 89 f5 53 48 89 fb 4c 3b a7 60 0b 00 00 73 6a 83 e2 02 74 29 4c 03 a3 68 0b 00 00 45 8b 24 24 <48> 8b 43 08 0f b7 70 3e 66 90 44 89 e0 5b 5d 41 5c 31 d2 31 c9 31
RSP: 0000:ffffb39a119dfb88 EFLAGS: 00000086
RAX: ffffffffc0eb96a0 RBX: ffff9e7963dc0000 RCX: 0000000000007fff
RDX: 0000000000000000 RSI: 0000000000004ff6 RDI: ffff9e7963dc0000
RBP: 0000000000004ff6 R08: ffffb39a119dfc40 R09: 0000000000000010
R10: ffffb39a119dfc40 R11: ffffb39a119dfc44 R12: 00000000000e05ae
R13: 0000000000000000 R14: ffff9e7963dc0010 R15: 0000000000000000
FS: 000000001012f6c0(0000) GS:ffff9e805eb80000(0000) knlGS:000000007fd40000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000461ca000 CR3: 00000002a8a20000 CR4: 0000000000350ee0
Call Trace:
<TASK>
dm_read_reg_func+0x37/0xc0 [amdgpu]
generic_reg_get2+0x22/0x60 [amdgpu]
optc1_get_crtc_scanoutpos+0x6a/0xc0 [amdgpu]
dc_stream_get_scanoutpos+0x74/0x90 [amdgpu]
dm_crtc_get_scanoutpos+0x82/0xf0 [amdgpu]
amdgpu_display_get_crtc_scanoutpos+0x91/0x190 [amdgpu]
? dm_read_reg_func+0x37/0xc0 [amdgpu]
amdgpu_get_vblank_counter_kms+0xb4/0x1a0 [amdgpu]
dm_pflip_high_irq+0x213/0x2f0 [amdgpu]
amdgpu_dm_irq_handler+0x8a/0x200 [amdgpu]
amdgpu_irq_dispatch+0xd4/0x220 [amdgpu]
amdgpu_ih_process+0x7f/0x110 [amdgpu]
amdgpu_irq_handler+0x1f/0x70 [amdgpu]
__handle_irq_event_percpu+0x46/0x1b0
handle_irq_event+0x34/0x80
handle_edge_irq+0x9f/0x240
__common_interrupt+0x66/0x110
common_interrupt+0x5c/0xd0
asm_common_interrupt+0x22/0x40
Reviewed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 6 ------
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 7 -------
2 files changed, 13 deletions(-)
--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c
@@ -2032,12 +2032,6 @@ void dcn20_optimize_bandwidth(
if (hubbub->funcs->program_compbuf_size)
hubbub->funcs->program_compbuf_size(hubbub, context->bw_ctx.bw.dcn.compbuf_size_kb, true);
- if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {
- dc_dmub_srv_p_state_delegate(dc,
- true, context);
- context->bw_ctx.bw.dcn.clk.p_state_change_support = true;
- }
-
dc->clk_mgr->funcs->update_clocks(
dc->clk_mgr,
context,
--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
@@ -987,18 +987,11 @@ void dcn30_set_disp_pattern_generator(co
void dcn30_prepare_bandwidth(struct dc *dc,
struct dc_state *context)
{
- if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) {
- dc->optimized_required = true;
- context->bw_ctx.bw.dcn.clk.p_state_change_support = false;
- }
-
if (dc->clk_mgr->dc_mode_softmax_enabled)
if (dc->clk_mgr->clks.dramclk_khz <= dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000 &&
context->bw_ctx.bw.dcn.clk.dramclk_khz > dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000)
dc->clk_mgr->funcs->set_max_memclk(dc->clk_mgr, dc->clk_mgr->bw_params->clk_table.entries[dc->clk_mgr->bw_params->clk_table.num_entries - 1].memclk_mhz);
dcn20_prepare_bandwidth(dc, context);
-
- dc_dmub_srv_p_state_delegate(dc, false, context);
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 594/600] md: Free resources in __md_stop
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (592 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 593/600] Revert "drm/amd/display: Do not set drr on pipe commit" Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 595/600] NFSv4.2: Fix a potential double free with READ_PLUS Greg Kroah-Hartman
` (16 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Xiao Ni, Song Liu, Yu Kuai
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiao Ni <xni@redhat.com>
commit 3e453522593d74a87cf68a38e14aa36ebca1dbcd upstream.
If md_run() fails after ->active_io is initialized, then percpu_ref_exit
is called in error path. However, later md_free_disk will call
percpu_ref_exit again which leads to a panic because of null pointer
dereference. It can also trigger this bug when resources are initialized
but are freed in error path, then will be freed again in md_free_disk.
BUG: kernel NULL pointer dereference, address: 0000000000000038
Oops: 0000 [#1] PREEMPT SMP
Workqueue: md_misc mddev_delayed_delete
RIP: 0010:free_percpu+0x110/0x630
Call Trace:
<TASK>
__percpu_ref_exit+0x44/0x70
percpu_ref_exit+0x16/0x90
md_free_disk+0x2f/0x80
disk_release+0x101/0x180
device_release+0x84/0x110
kobject_put+0x12a/0x380
kobject_put+0x160/0x380
mddev_delayed_delete+0x19/0x30
process_one_work+0x269/0x680
worker_thread+0x266/0x640
kthread+0x151/0x1b0
ret_from_fork+0x1f/0x30
For creating raid device, md raid calls do_md_run->md_run, dm raid calls
md_run. We alloc those memory in md_run. For stopping raid device, md raid
calls do_md_stop->__md_stop, dm raid calls md_stop->__md_stop. So we can
free those memory resources in __md_stop.
Fixes: 72adae23a72c ("md: Change active_io to percpu")
Reported-and-tested-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/md/md.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -6277,6 +6277,11 @@ static void __md_stop(struct mddev *mdde
mddev->to_remove = &md_redundancy_group;
module_put(pers->owner);
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
+
+ percpu_ref_exit(&mddev->writes_pending);
+ percpu_ref_exit(&mddev->active_io);
+ bioset_exit(&mddev->bio_set);
+ bioset_exit(&mddev->sync_set);
}
void md_stop(struct mddev *mddev)
@@ -6288,9 +6293,6 @@ void md_stop(struct mddev *mddev)
*/
__md_stop_writes(mddev);
__md_stop(mddev);
- percpu_ref_exit(&mddev->active_io);
- bioset_exit(&mddev->bio_set);
- bioset_exit(&mddev->sync_set);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -7857,11 +7859,6 @@ static void md_free_disk(struct gendisk
{
struct mddev *mddev = disk->private_data;
- percpu_ref_exit(&mddev->writes_pending);
- percpu_ref_exit(&mddev->active_io);
- bioset_exit(&mddev->bio_set);
- bioset_exit(&mddev->sync_set);
-
mddev_free(mddev);
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 595/600] NFSv4.2: Fix a potential double free with READ_PLUS
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (593 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 594/600] md: Free resources in __md_stop Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 596/600] NFSv4.2: Rework scratch handling for READ_PLUS (again) Greg Kroah-Hartman
` (15 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Anna Schumaker
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
commit 43439d858bbae244a510de47f9a55f667ca4ed52 upstream.
kfree()-ing the scratch page isn't enough, we also need to set the pointer
back to NULL to avoid a double-free in the case of a resend.
Fixes: fbd2a05f29a9 (NFSv4.2: Rework scratch handling for READ_PLUS)
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/nfs/nfs4proc.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5444,10 +5444,18 @@ static bool nfs4_read_plus_not_supported
return false;
}
-static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
+static inline void nfs4_read_plus_scratch_free(struct nfs_pgio_header *hdr)
{
- if (hdr->res.scratch)
+ if (hdr->res.scratch) {
kfree(hdr->res.scratch);
+ hdr->res.scratch = NULL;
+ }
+}
+
+static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
+{
+ nfs4_read_plus_scratch_free(hdr);
+
if (!nfs4_sequence_done(task, &hdr->res.seq_res))
return -EAGAIN;
if (nfs4_read_stateid_changed(task, &hdr->args))
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 596/600] NFSv4.2: Rework scratch handling for READ_PLUS (again)
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (594 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 595/600] NFSv4.2: Fix a potential double free with READ_PLUS Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 597/600] md: fix regression for null-ptr-deference in __md_stop() Greg Kroah-Hartman
` (14 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Anna Schumaker
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anna Schumaker <Anna.Schumaker@Netapp.com>
commit 303a78052091c81e9003915c521fdca1c7e117af upstream.
I found that the read code might send multiple requests using the same
nfs_pgio_header, but nfs4_proc_read_setup() is only called once. This is
how we ended up occasionally double-freeing the scratch buffer, but also
means we set a NULL pointer but non-zero length to the xdr scratch
buffer. This results in an oops the first time decoding needs to copy
something to scratch, which frequently happens when decoding READ_PLUS
hole segments.
I fix this by moving scratch handling into the pageio read code. I
provide a function to allocate scratch space for decoding read replies,
and free the scratch buffer when the nfs_pgio_header is freed.
Fixes: fbd2a05f29a9 (NFSv4.2: Rework scratch handling for READ_PLUS)
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/nfs/internal.h | 1 +
fs/nfs/nfs42.h | 1 +
fs/nfs/nfs42xdr.c | 2 +-
fs/nfs/nfs4proc.c | 13 +------------
fs/nfs/read.c | 10 ++++++++++
5 files changed, 14 insertions(+), 13 deletions(-)
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -484,6 +484,7 @@ struct nfs_pgio_completion_ops;
extern void nfs_pageio_init_read(struct nfs_pageio_descriptor *pgio,
struct inode *inode, bool force_mds,
const struct nfs_pgio_completion_ops *compl_ops);
+extern bool nfs_read_alloc_scratch(struct nfs_pgio_header *hdr, size_t size);
extern void nfs_read_prepare(struct rpc_task *task, void *calldata);
extern void nfs_pageio_reset_read_mds(struct nfs_pageio_descriptor *pgio);
--- a/fs/nfs/nfs42.h
+++ b/fs/nfs/nfs42.h
@@ -13,6 +13,7 @@
* more? Need to consider not to pre-alloc too much for a compound.
*/
#define PNFS_LAYOUTSTATS_MAXDEV (4)
+#define READ_PLUS_SCRATCH_SIZE (16)
/* nfs4.2proc.c */
#ifdef CONFIG_NFS_V4_2
--- a/fs/nfs/nfs42xdr.c
+++ b/fs/nfs/nfs42xdr.c
@@ -1351,7 +1351,7 @@ static int nfs4_xdr_dec_read_plus(struct
struct compound_hdr hdr;
int status;
- xdr_set_scratch_buffer(xdr, res->scratch, sizeof(res->scratch));
+ xdr_set_scratch_buffer(xdr, res->scratch, READ_PLUS_SCRATCH_SIZE);
status = decode_compound_hdr(xdr, &hdr);
if (status)
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -5444,18 +5444,8 @@ static bool nfs4_read_plus_not_supported
return false;
}
-static inline void nfs4_read_plus_scratch_free(struct nfs_pgio_header *hdr)
-{
- if (hdr->res.scratch) {
- kfree(hdr->res.scratch);
- hdr->res.scratch = NULL;
- }
-}
-
static int nfs4_read_done(struct rpc_task *task, struct nfs_pgio_header *hdr)
{
- nfs4_read_plus_scratch_free(hdr);
-
if (!nfs4_sequence_done(task, &hdr->res.seq_res))
return -EAGAIN;
if (nfs4_read_stateid_changed(task, &hdr->args))
@@ -5475,8 +5465,7 @@ static bool nfs42_read_plus_support(stru
/* Note: We don't use READ_PLUS with pNFS yet */
if (nfs_server_capable(hdr->inode, NFS_CAP_READ_PLUS) && !hdr->ds_clp) {
msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ_PLUS];
- hdr->res.scratch = kmalloc(32, GFP_KERNEL);
- return hdr->res.scratch != NULL;
+ return nfs_read_alloc_scratch(hdr, READ_PLUS_SCRATCH_SIZE);
}
return false;
}
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -47,6 +47,8 @@ static struct nfs_pgio_header *nfs_readh
static void nfs_readhdr_free(struct nfs_pgio_header *rhdr)
{
+ if (rhdr->res.scratch != NULL)
+ kfree(rhdr->res.scratch);
kmem_cache_free(nfs_rdata_cachep, rhdr);
}
@@ -109,6 +111,14 @@ void nfs_pageio_reset_read_mds(struct nf
}
EXPORT_SYMBOL_GPL(nfs_pageio_reset_read_mds);
+bool nfs_read_alloc_scratch(struct nfs_pgio_header *hdr, size_t size)
+{
+ WARN_ON(hdr->res.scratch != NULL);
+ hdr->res.scratch = kmalloc(size, GFP_KERNEL);
+ return hdr->res.scratch != NULL;
+}
+EXPORT_SYMBOL_GPL(nfs_read_alloc_scratch);
+
static void nfs_readpage_release(struct nfs_page *req, int error)
{
struct inode *inode = d_inode(nfs_req_openctx(req)->dentry);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 597/600] md: fix regression for null-ptr-deference in __md_stop()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (595 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 596/600] NFSv4.2: Rework scratch handling for READ_PLUS (again) Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 598/600] clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro Greg Kroah-Hartman
` (13 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable; +Cc: Greg Kroah-Hartman, patches, Yu Kuai, Xiao Ni, Song Liu
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Yu Kuai <yukuai3@huawei.com>
commit 433279beba1d4872da10b7b60a539e0cb828b32b upstream.
Commit 3e453522593d ("md: Free resources in __md_stop") tried to fix
null-ptr-deference for 'active_io' by moving percpu_ref_exit() to
__md_stop(), however, the commit also moving 'writes_pending' to
__md_stop(), and this will cause mdadm tests broken:
BUG: kernel NULL pointer dereference, address: 0000000000000038
Oops: 0000 [#1] PREEMPT SMP
CPU: 15 PID: 17830 Comm: mdadm Not tainted 6.3.0-rc3-next-20230324-00009-g520d37
RIP: 0010:free_percpu+0x465/0x670
Call Trace:
<TASK>
__percpu_ref_exit+0x48/0x70
percpu_ref_exit+0x1a/0x90
__md_stop+0xe9/0x170
do_md_stop+0x1e1/0x7b0
md_ioctl+0x90c/0x1aa0
blkdev_ioctl+0x19b/0x400
vfs_ioctl+0x20/0x50
__x64_sys_ioctl+0xba/0xe0
do_syscall_64+0x6c/0xe0
entry_SYSCALL_64_after_hwframe+0x63/0xcd
And the problem can be reporduced 100% by following test:
mdadm -CR /dev/md0 -l1 -n1 /dev/sda --force
echo inactive > /sys/block/md0/md/array_state
echo read-auto > /sys/block/md0/md/array_state
echo inactive > /sys/block/md0/md/array_state
Root cause:
// start raid
raid1_run
mddev_init_writes_pending
percpu_ref_init
// inactive raid
array_state_store
do_md_stop
__md_stop
percpu_ref_exit
// start raid again
array_state_store
do_md_run
raid1_run
mddev_init_writes_pending
if (mddev->writes_pending.percpu_count_ptr)
// won't reinit
// inactive raid again
...
percpu_ref_exit
-> null-ptr-deference
Before the commit, 'writes_pending' is exited when mddev is freed, and
it's safe to restart raid because mddev_init_writes_pending() already make
sure that 'writes_pending' will only be initialized once.
Fix the prblem by moving 'writes_pending' back, it's a litter hard to find
the relationship between alloc memory and free memory, however, code
changes is much less and we lived with this for a long time already.
Fixes: 3e453522593d ("md: Free resources in __md_stop")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Xiao Ni <xni@redhat.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20230328094400.1448955-1-yukuai1@huaweicloud.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/md/md.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -6278,7 +6278,6 @@ static void __md_stop(struct mddev *mdde
module_put(pers->owner);
clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
- percpu_ref_exit(&mddev->writes_pending);
percpu_ref_exit(&mddev->active_io);
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
@@ -6293,6 +6292,7 @@ void md_stop(struct mddev *mddev)
*/
__md_stop_writes(mddev);
__md_stop(mddev);
+ percpu_ref_exit(&mddev->writes_pending);
}
EXPORT_SYMBOL_GPL(md_stop);
@@ -7859,6 +7859,7 @@ static void md_free_disk(struct gendisk
{
struct mddev *mddev = disk->private_data;
+ percpu_ref_exit(&mddev->writes_pending);
mddev_free(mddev);
}
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 598/600] clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (596 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 597/600] md: fix regression for null-ptr-deference in __md_stop() Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 599/600] treewide: Fix probing of devices in DT overlays Greg Kroah-Hartman
` (12 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Linus Walleij, Saravana Kannan,
Stephen Boyd
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Saravana Kannan <saravanak@google.com>
commit c28cd1f3433c7e339315d1ddacaeacf0fdfbe252 upstream.
We already mark fwnodes as initialized when they are registered as clock
providers. We do this so that fw_devlink can tell when a clock driver
doesn't use the driver core framework to probe/initialize its device.
This ensures fw_devlink doesn't block the consumers of such a clock
provider indefinitely.
However, some users of CLK_OF_DECLARE() macros don't use the same node
that matches the macro as the node for the clock provider, but they
initialize the entire node. To cover these cases, also mark the nodes
that match the macros as initialized when the init callback function is
called.
An example of this is "stericsson,u8500-clks" that's handled using
CLK_OF_DECLARE() and looks something like this:
clocks {
compatible = "stericsson,u8500-clks";
prcmu_clk: prcmu-clock {
#clock-cells = <1>;
};
prcc_pclk: prcc-periph-clock {
#clock-cells = <2>;
};
prcc_kclk: prcc-kernel-clock {
#clock-cells = <2>;
};
prcc_reset: prcc-reset-controller {
#reset-cells = <2>;
};
...
};
This patch makes sure that "clocks" is marked as initialized so that
fw_devlink knows that all nodes under it have been initialized. If the
driver creates struct devices for some of the subnodes, fw_devlink is
smart enough to know to wait for those devices to probe, so no special
handling is required for those cases.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reported-by: Linus Walleij <linus.walleij@linaro.org>
Link: https://lore.kernel.org/lkml/CACRpkdamxDX6EBVjKX5=D3rkHp17f5pwGdBVhzFU90-0MHY6dQ@mail.gmail.com/
Fixes: 4a032827daa8 ("of: property: Simplify of_link_to_phandle()")
Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20230302014639.297514-1-saravanak@google.com
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/clk-provider.h | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -1361,7 +1361,13 @@ struct clk_hw_onecell_data {
struct clk_hw *hws[];
};
-#define CLK_OF_DECLARE(name, compat, fn) OF_DECLARE_1(clk, name, compat, fn)
+#define CLK_OF_DECLARE(name, compat, fn) \
+ static void __init name##_of_clk_init_declare(struct device_node *np) \
+ { \
+ fn(np); \
+ fwnode_dev_initialized(of_fwnode_handle(np), true); \
+ } \
+ OF_DECLARE_1(clk, name, compat, name##_of_clk_init_declare)
/*
* Use this macro when you have a driver that requires two initialization
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 599/600] treewide: Fix probing of devices in DT overlays
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (597 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 598/600] clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 600/600] clk: Avoid invalid function names in CLK_OF_DECLARE() Greg Kroah-Hartman
` (11 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Geert Uytterhoeven, Mark Brown,
Shawn Guo, Saravana Kannan, Ivan Bornyakov, Rob Herring,
Wolfram Sang
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Geert Uytterhoeven <geert+renesas@glider.be>
commit 1a50d9403fb90cbe4dea0ec9fd0351d2ecbd8924 upstream.
When loading a DT overlay that creates a device, the device is not
probed, unless the DT overlay is unloaded and reloaded again.
After the recent refactoring to improve fw_devlink, it no longer depends
on the "compatible" property to identify which device tree nodes will
become struct devices. fw_devlink now picks up dangling consumers
(consumers pointing to descendent device tree nodes of a device that
aren't converted to child devices) when a device is successfully bound
to a driver. See __fw_devlink_pickup_dangling_consumers().
However, during DT overlay, a device's device tree node can have
sub-nodes added/removed without unbinding/rebinding the driver. This
difference in behavior between the normal device instantiation and
probing flow vs. the DT overlay flow has a bunch of implications that
are pointed out elsewhere[1]. One of them is that the fw_devlink logic
to pick up dangling consumers is never exercised.
This patch solves the fw_devlink issue by marking all DT nodes added by
DT overlays with FWNODE_FLAG_NOT_DEVICE (fwnode that won't become
device), and by clearing the flag when a struct device is actually
created for the DT node. This way, fw_devlink knows not to have
consumers waiting on these newly added DT nodes, and to propagate the
dependency to an ancestor DT node that has the corresponding struct
device.
Based on a patch by Saravana Kannan, which covered only platform and spi
devices.
[1] https://lore.kernel.org/r/CAGETcx_bkuFaLCiPrAWCPQz+w79ccDp6=9e881qmK=vx3hBMyg@mail.gmail.com
Fixes: 4a032827daa89350 ("of: property: Simplify of_link_to_phandle()")
Link: https://lore.kernel.org/r/CAGETcx_+rhHvaC_HJXGrr5_WAd2+k5f=rWYnkCZ6z5bGX-wj4w@mail.gmail.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Mark Brown <broonie@kernel.org>
Acked-by: Wolfram Sang <wsa@kernel.org> # for I2C
Acked-by: Shawn Guo <shawnguo@kernel.org>
Acked-by: Saravana Kannan <saravanak@google.com>
Tested-by: Ivan Bornyakov <i.bornyakov@metrotek.ru>
Link: https://lore.kernel.org/r/e1fa546682ea4c8474ff997ab6244c5e11b6f8bc.1680182615.git.geert+renesas@glider.be
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/bus/imx-weim.c | 6 ++++++
drivers/i2c/i2c-core-of.c | 5 +++++
drivers/of/dynamic.c | 1 +
drivers/of/platform.c | 5 +++++
drivers/spi/spi.c | 5 +++++
5 files changed, 22 insertions(+)
--- a/drivers/bus/imx-weim.c
+++ b/drivers/bus/imx-weim.c
@@ -331,6 +331,12 @@ static int of_weim_notify(struct notifie
"Failed to setup timing for '%pOF'\n", rd->dn);
if (!of_node_check_flag(rd->dn, OF_POPULATED)) {
+ /*
+ * Clear the flag before adding the device so that
+ * fw_devlink doesn't skip adding consumers to this
+ * device.
+ */
+ rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE;
if (!of_platform_device_create(rd->dn, NULL, &pdev->dev)) {
dev_err(&pdev->dev,
"Failed to create child device '%pOF'\n",
--- a/drivers/i2c/i2c-core-of.c
+++ b/drivers/i2c/i2c-core-of.c
@@ -244,6 +244,11 @@ static int of_i2c_notify(struct notifier
return NOTIFY_OK;
}
+ /*
+ * Clear the flag before adding the device so that fw_devlink
+ * doesn't skip adding consumers to this device.
+ */
+ rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE;
client = of_i2c_register_device(adap, rd->dn);
if (IS_ERR(client)) {
dev_err(&adap->dev, "failed to create client for '%pOF'\n",
--- a/drivers/of/dynamic.c
+++ b/drivers/of/dynamic.c
@@ -225,6 +225,7 @@ static void __of_attach_node(struct devi
np->sibling = np->parent->child;
np->parent->child = np;
of_node_clear_flag(np, OF_DETACHED);
+ np->fwnode.flags |= FWNODE_FLAG_NOT_DEVICE;
}
/**
--- a/drivers/of/platform.c
+++ b/drivers/of/platform.c
@@ -741,6 +741,11 @@ static int of_platform_notify(struct not
if (of_node_check_flag(rd->dn, OF_POPULATED))
return NOTIFY_OK;
+ /*
+ * Clear the flag before adding the device so that fw_devlink
+ * doesn't skip adding consumers to this device.
+ */
+ rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE;
/* pdev_parent may be NULL when no bus platform device */
pdev_parent = of_find_device_by_node(rd->dn->parent);
pdev = of_platform_device_create(rd->dn, NULL,
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -4370,6 +4370,11 @@ static int of_spi_notify(struct notifier
return NOTIFY_OK;
}
+ /*
+ * Clear the flag before adding the device so that fw_devlink
+ * doesn't skip adding consumers to this device.
+ */
+ rd->dn->fwnode.flags &= ~FWNODE_FLAG_NOT_DEVICE;
spi = of_register_spi_device(ctlr, rd->dn);
put_device(&ctlr->dev);
^ permalink raw reply [flat|nested] 631+ messages in thread
* [PATCH 6.1 600/600] clk: Avoid invalid function names in CLK_OF_DECLARE()
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (598 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 599/600] treewide: Fix probing of devices in DT overlays Greg Kroah-Hartman
@ 2023-09-11 13:50 ` Greg Kroah-Hartman
2023-09-11 20:13 ` [PATCH 6.1 000/600] 6.1.53-rc1 review Shuah Khan
` (10 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-11 13:50 UTC (permalink / raw)
To: stable
Cc: Greg Kroah-Hartman, patches, Saravana Kannan, Nathan Chancellor,
Naresh Kamboju, Stephen Boyd
6.1-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nathan Chancellor <nathan@kernel.org>
commit 5cf9d015be160e2d90d29ae74ef1364390e8fce8 upstream.
After commit c28cd1f3433c ("clk: Mark a fwnode as initialized when using
CLK_OF_DECLARE() macro"), drivers/clk/mvebu/kirkwood.c fails to build:
drivers/clk/mvebu/kirkwood.c:358:1: error: expected identifier or '('
CLK_OF_DECLARE(98dx1135_clk, "marvell,mv98dx1135-core-clock",
^
include/linux/clk-provider.h:1367:21: note: expanded from macro 'CLK_OF_DECLARE'
static void __init name##_of_clk_init_declare(struct device_node *np) \
^
<scratch space>:124:1: note: expanded from here
98dx1135_clk_of_clk_init_declare
^
drivers/clk/mvebu/kirkwood.c:358:1: error: invalid digit 'd' in decimal constant
include/linux/clk-provider.h:1372:34: note: expanded from macro 'CLK_OF_DECLARE'
OF_DECLARE_1(clk, name, compat, name##_of_clk_init_declare)
^
<scratch space>:125:3: note: expanded from here
98dx1135_clk_of_clk_init_declare
^
drivers/clk/mvebu/kirkwood.c:358:1: error: invalid digit 'd' in decimal constant
include/linux/clk-provider.h:1372:34: note: expanded from macro 'CLK_OF_DECLARE'
OF_DECLARE_1(clk, name, compat, name##_of_clk_init_declare)
^
<scratch space>:125:3: note: expanded from here
98dx1135_clk_of_clk_init_declare
^
drivers/clk/mvebu/kirkwood.c:358:1: error: invalid digit 'd' in decimal constant
include/linux/clk-provider.h:1372:34: note: expanded from macro 'CLK_OF_DECLARE'
OF_DECLARE_1(clk, name, compat, name##_of_clk_init_declare)
^
<scratch space>:125:3: note: expanded from here
98dx1135_clk_of_clk_init_declare
^
C function names must start with either an alphabetic letter or an
underscore. To avoid generating invalid function names from clock names,
add two underscores to the beginning of the identifier.
Fixes: c28cd1f3433c ("clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro")
Suggested-by: Saravana Kannan <saravanak@google.com>
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Link: https://lore.kernel.org/r/20230308-clk_of_declare-fix-v1-1-317b741e2532@kernel.org
Reviewed-by: Saravana Kannan <saravanak@google.com>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/clk-provider.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -1362,12 +1362,12 @@ struct clk_hw_onecell_data {
};
#define CLK_OF_DECLARE(name, compat, fn) \
- static void __init name##_of_clk_init_declare(struct device_node *np) \
+ static void __init __##name##_of_clk_init_declare(struct device_node *np) \
{ \
fn(np); \
fwnode_dev_initialized(of_fwnode_handle(np), true); \
} \
- OF_DECLARE_1(clk, name, compat, name##_of_clk_init_declare)
+ OF_DECLARE_1(clk, name, compat, __##name##_of_clk_init_declare)
/*
* Use this macro when you have a driver that requires two initialization
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller
2023-09-11 13:44 ` [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller Greg Kroah-Hartman
@ 2023-09-11 15:49 ` Ondřej Jirman
2023-09-12 10:34 ` Greg Kroah-Hartman
0 siblings, 1 reply; 631+ messages in thread
From: Ondřej Jirman @ 2023-09-11 15:49 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, Sam Ravnborg, Robert Foss, Sasha Levin
On Mon, Sep 11, 2023 at 03:44:06PM +0200, Greg Kroah-Hartman wrote:
>
> 6.1-stable review patch. If anyone has any objections, please let me know.
See patch message comment:
(But depends on functionality intorduced in Linux 6.3, so this patch will
not build on older kernels when applied to older stable branches.)
kind regards,
o.
> ------------------
>
> From: Ondrej Jirman <megi@xff.cz>
>
> [ Upstream commit 05aa61334592adb230749ff465b103ee10e63936 ]
>
> Before this patch, booting to Linux VT and doing a simple:
>
> echo 2 > /sys/class/graphics/fb0/blank
> echo 0 > /sys/class/graphics/fb0/blank
>
> would result in failures to re-enable the panel. Mode set callback is
> called only once during boot in this scenario, while calls to
> enable/disable callbacks are balanced afterwards. The driver doesn't
> work unless userspace calls modeset before enabling the CRTC/connector.
>
> This patch moves enabling of the DSI host from mode_set into pre_enable
> callback, and removes some old hacks where this bridge driver is
> directly calling into other bridge driver's callbacks.
>
> pre_enable_prev_first flag is set on the panel's bridge so that panel
> drivers will get their prepare function called between DSI host's
> pre_enable and enable callbacks, so that they get a chance to
> perform panel setup while DSI host is already enabled in command
> mode. Otherwise panel's prepare would be called before DSI host
> is enabled, and any DSI communication used in prepare callback
> would fail.
>
> With all these changes, the enable/disable sequence is now well
> balanced, and host's and panel's callbacks are called in proper order
> documented in the drm_panel API documentation without needing the old
> hacks. (Mainly that panel->prepare is called when DSI host is ready to
> allow the panel driver to send DSI commands and vice versa during
> disable.)
>
> Tested on Pinephone Pro. Trace of the callbacks follows.
>
> Before:
>
> [ 1.253882] dw-mipi-dsi-rockchip ff960000.dsi: mode_set
> [ 1.290732] panel-himax-hx8394 ff960000.dsi.0: prepare
> [ 1.475576] dw-mipi-dsi-rockchip ff960000.dsi: enable
> [ 1.475593] panel-himax-hx8394 ff960000.dsi.0: enable
>
> echo 2 > /sys/class/graphics/fb0/blank
>
> [ 13.722799] panel-himax-hx8394 ff960000.dsi.0: disable
> [ 13.774502] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
> [ 13.774526] panel-himax-hx8394 ff960000.dsi.0: unprepare
>
> echo 0 > /sys/class/graphics/fb0/blank
>
> [ 17.735796] panel-himax-hx8394 ff960000.dsi.0: prepare
> [ 17.923522] dw-mipi-dsi-rockchip ff960000.dsi: enable
> [ 17.923540] panel-himax-hx8394 ff960000.dsi.0: enable
> [ 17.944330] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
> [ 17.944335] panel-himax-hx8394 ff960000.dsi.0: sending command 0xb9 failed: -110
> [ 17.944340] panel-himax-hx8394 ff960000.dsi.0: Panel init sequence failed: -110
>
> echo 2 > /sys/class/graphics/fb0/blank
>
> [ 431.148583] panel-himax-hx8394 ff960000.dsi.0: disable
> [ 431.169259] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
> [ 431.169268] panel-himax-hx8394 ff960000.dsi.0: Failed to enter sleep mode: -110
> [ 431.169282] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
> [ 431.169316] panel-himax-hx8394 ff960000.dsi.0: unprepare
> [ 431.169357] pclk_mipi_dsi0 already disabled
>
> echo 0 > /sys/class/graphics/fb0/blank
>
> [ 432.796851] panel-himax-hx8394 ff960000.dsi.0: prepare
> [ 432.981537] dw-mipi-dsi-rockchip ff960000.dsi: enable
> [ 432.981568] panel-himax-hx8394 ff960000.dsi.0: enable
> [ 433.002290] dw-mipi-dsi-rockchip ff960000.dsi: failed to write command FIFO
> [ 433.002299] panel-himax-hx8394 ff960000.dsi.0: sending command 0xb9 failed: -110
> [ 433.002312] panel-himax-hx8394 ff960000.dsi.0: Panel init sequence failed: -110
>
> -----------------------------------------------------------------------
>
> After:
>
> [ 1.248372] dw-mipi-dsi-rockchip ff960000.dsi: mode_set
> [ 1.248704] dw-mipi-dsi-rockchip ff960000.dsi: pre_enable
> [ 1.285377] panel-himax-hx8394 ff960000.dsi.0: prepare
> [ 1.468392] dw-mipi-dsi-rockchip ff960000.dsi: enable
> [ 1.468421] panel-himax-hx8394 ff960000.dsi.0: enable
>
> echo 2 > /sys/class/graphics/fb0/blank
>
> [ 16.210357] panel-himax-hx8394 ff960000.dsi.0: disable
> [ 16.261315] dw-mipi-dsi-rockchip ff960000.dsi: post_disable
> [ 16.261339] panel-himax-hx8394 ff960000.dsi.0: unprepare
>
> echo 0 > /sys/class/graphics/fb0/blank
>
> [ 19.161453] dw-mipi-dsi-rockchip ff960000.dsi: pre_enable
> [ 19.197869] panel-himax-hx8394 ff960000.dsi.0: prepare
> [ 19.382141] dw-mipi-dsi-rockchip ff960000.dsi: enable
> [ 19.382158] panel-himax-hx8394 ff960000.dsi.0: enable
>
> (But depends on functionality intorduced in Linux 6.3, so this patch will
> not build on older kernels when applied to older stable branches.)
>
> Fixes: 46fc51546d44 ("drm/bridge/synopsys: Add MIPI DSI host controller bridge")
> Signed-off-by: Ondrej Jirman <megi@xff.cz>
> Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> Signed-off-by: Robert Foss <rfoss@kernel.org>
> Link: https://patchwork.freedesktop.org/patch/msgid/20230617224915.1923630-1-megi@xff.cz
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
> drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 28 +++++++++++--------
> 1 file changed, 16 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> index b2efecf7d1603..4291798bd70f5 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
> @@ -265,6 +265,7 @@ struct dw_mipi_dsi {
> struct dw_mipi_dsi *master; /* dual-dsi master ptr */
> struct dw_mipi_dsi *slave; /* dual-dsi slave ptr */
>
> + struct drm_display_mode mode;
> const struct dw_mipi_dsi_plat_data *plat_data;
> };
>
> @@ -332,6 +333,7 @@ static int dw_mipi_dsi_host_attach(struct mipi_dsi_host *host,
> if (IS_ERR(bridge))
> return PTR_ERR(bridge);
>
> + bridge->pre_enable_prev_first = true;
> dsi->panel_bridge = bridge;
>
> drm_bridge_add(&dsi->bridge);
> @@ -859,15 +861,6 @@ static void dw_mipi_dsi_bridge_post_atomic_disable(struct drm_bridge *bridge,
> */
> dw_mipi_dsi_set_mode(dsi, 0);
>
> - /*
> - * TODO Only way found to call panel-bridge post_disable &
> - * panel unprepare before the dsi "final" disable...
> - * This needs to be fixed in the drm_bridge framework and the API
> - * needs to be updated to manage our own call chains...
> - */
> - if (dsi->panel_bridge->funcs->post_disable)
> - dsi->panel_bridge->funcs->post_disable(dsi->panel_bridge);
> -
> if (phy_ops->power_off)
> phy_ops->power_off(dsi->plat_data->priv_data);
>
> @@ -942,15 +935,25 @@ static void dw_mipi_dsi_mode_set(struct dw_mipi_dsi *dsi,
> phy_ops->power_on(dsi->plat_data->priv_data);
> }
>
> +static void dw_mipi_dsi_bridge_atomic_pre_enable(struct drm_bridge *bridge,
> + struct drm_bridge_state *old_bridge_state)
> +{
> + struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
> +
> + /* Power up the dsi ctl into a command mode */
> + dw_mipi_dsi_mode_set(dsi, &dsi->mode);
> + if (dsi->slave)
> + dw_mipi_dsi_mode_set(dsi->slave, &dsi->mode);
> +}
> +
> static void dw_mipi_dsi_bridge_mode_set(struct drm_bridge *bridge,
> const struct drm_display_mode *mode,
> const struct drm_display_mode *adjusted_mode)
> {
> struct dw_mipi_dsi *dsi = bridge_to_dsi(bridge);
>
> - dw_mipi_dsi_mode_set(dsi, adjusted_mode);
> - if (dsi->slave)
> - dw_mipi_dsi_mode_set(dsi->slave, adjusted_mode);
> + /* Store the display mode for later use in pre_enable callback */
> + drm_mode_copy(&dsi->mode, adjusted_mode);
> }
>
> static void dw_mipi_dsi_bridge_atomic_enable(struct drm_bridge *bridge,
> @@ -1004,6 +1007,7 @@ static const struct drm_bridge_funcs dw_mipi_dsi_bridge_funcs = {
> .atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
> .atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
> .atomic_reset = drm_atomic_helper_bridge_reset,
> + .atomic_pre_enable = dw_mipi_dsi_bridge_atomic_pre_enable,
> .atomic_enable = dw_mipi_dsi_bridge_atomic_enable,
> .atomic_post_disable = dw_mipi_dsi_bridge_post_atomic_disable,
> .mode_set = dw_mipi_dsi_bridge_mode_set,
> --
> 2.40.1
>
>
>
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (599 preceding siblings ...)
2023-09-11 13:50 ` [PATCH 6.1 600/600] clk: Avoid invalid function names in CLK_OF_DECLARE() Greg Kroah-Hartman
@ 2023-09-11 20:13 ` Shuah Khan
2023-09-11 20:58 ` Daniel Díaz
` (9 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Shuah Khan @ 2023-09-11 20:13 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor, Shuah Khan
On 9/11/23 07:40, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
Compiled and booted on my test system. No dmesg regressions.
Tested-by: Shuah Khan <skhan@linuxfoundation.org>
thanks,
-- Shuah
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (600 preceding siblings ...)
2023-09-11 20:13 ` [PATCH 6.1 000/600] 6.1.53-rc1 review Shuah Khan
@ 2023-09-11 20:58 ` Daniel Díaz
2023-09-12 2:25 ` Daniel Díaz
2023-09-12 5:50 ` Bagas Sanjaya
` (8 subsequent siblings)
610 siblings, 1 reply; 631+ messages in thread
From: Daniel Díaz @ 2023-09-11 20:58 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor
Hello!
On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
We're seeing this new warning:
-----8<-----
/builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
892 | if (*err < 0)
| ^~~~~~~~
/builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
914 | return newblock;
| ^~~~~~~~
/builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
892 | if (*err < 0)
| ^~~~~~~~~~~~~
893 | goto out_free;
| ~~~~~~~~~~~~~
/builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
699 | udf_pblk_t newblocknum, newblock;
| ^
| = 0
1 warning generated.
----->8-----
That's with Clang 17 (and nightly) on:
* arm
* powerpc
* s390
Greetings!
Daniel Díaz
daniel.diaz@linaro.org
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 20:58 ` Daniel Díaz
@ 2023-09-12 2:25 ` Daniel Díaz
2023-09-12 8:49 ` Naresh Kamboju
0 siblings, 1 reply; 631+ messages in thread
From: Daniel Díaz @ 2023-09-12 2:25 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor, jack
Hello!
On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > This is the start of the stable review cycle for the 6.1.53 release.
> > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > and the diffstat can be found below.
> >
> > thanks,
> >
> > greg k-h
>
> We're seeing this new warning:
> -----8<-----
> /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> 892 | if (*err < 0)
> | ^~~~~~~~
> /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> 914 | return newblock;
> | ^~~~~~~~
> /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> 892 | if (*err < 0)
> | ^~~~~~~~~~~~~
> 893 | goto out_free;
> | ~~~~~~~~~~~~~
> /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> 699 | udf_pblk_t newblocknum, newblock;
> | ^
> | = 0
> 1 warning generated.
> ----->8-----
>
> That's with Clang 17 (and nightly) on:
> * arm
> * powerpc
> * s390
For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
error when adding extent to a file").
In order to reproduce:
#pip3 install -U tuxmake
tuxmake --runtime podman \
--target-arch arm \
--toolchain clang-17 \
--kconfig multi_v5_defconfig \
LLVM=1 LLVM_IAS=1
or:
#pip3 install -U tuxmake
tuxmake --runtime podman \
--target-arch powerpc \
--toolchain clang-17 \
--kconfig defconfig \
LLVM=1 LLVM_IAS=0 LD=powerpc64le-linux-gnu-ld
or:
#pip3 install -U tuxmake
tuxmake --runtime podman \
--target-arch s390 \
--toolchain clang-17 \
--kconfig defconfig \
LLVM_IAS=1
Greetings!
Daniel Díaz
daniel.diaz@linaro.org
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (601 preceding siblings ...)
2023-09-11 20:58 ` Daniel Díaz
@ 2023-09-12 5:50 ` Bagas Sanjaya
2023-09-12 9:00 ` Sudip Mukherjee (Codethink)
` (7 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Bagas Sanjaya @ 2023-09-12 5:50 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor
[-- Attachment #1: Type: text/plain, Size: 559 bytes --]
On Mon, Sep 11, 2023 at 03:40:33PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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.
>
Successfully compiled and installed bindeb-pkgs on my computer (Acer
Aspire E15, Intel Core i3 Haswell). No noticeable regressions.
Tested-by: Bagas Sanjaya <bagasdotme@gmail.com>
--
An old man doll... just what I always wanted! - Clara
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 2:25 ` Daniel Díaz
@ 2023-09-12 8:49 ` Naresh Kamboju
2023-09-12 9:03 ` Greg Kroah-Hartman
2023-09-12 10:32 ` Greg Kroah-Hartman
0 siblings, 2 replies; 631+ messages in thread
From: Naresh Kamboju @ 2023-09-12 8:49 UTC (permalink / raw)
To: Greg Kroah-Hartman, jack
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
On Tue, 12 Sept 2023 at 07:55, Daniel Díaz <daniel.diaz@linaro.org> wrote:
>
> Hello!
>
> On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > > This is the start of the stable review cycle for the 6.1.53 release.
> > > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > > and the diffstat can be found below.
> > >
> > > thanks,
> > >
> > > greg k-h
> >
> > We're seeing this new warning:
> > -----8<-----
> > /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> > 892 | if (*err < 0)
> > | ^~~~~~~~
> > /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> > 914 | return newblock;
> > | ^~~~~~~~
> > /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> > 892 | if (*err < 0)
> > | ^~~~~~~~~~~~~
> > 893 | goto out_free;
> > | ~~~~~~~~~~~~~
> > /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> > 699 | udf_pblk_t newblocknum, newblock;
> > | ^
> > | = 0
> > 1 warning generated.
> > ----->8-----
> >
> > That's with Clang 17 (and nightly) on:
> > * arm
> > * powerpc
> > * s390
>
> For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> error when adding extent to a file").
I see the following commit is fixing the reported problem.
commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
Author: Tom Rix <trix@redhat.com>
Date: Fri Dec 30 12:53:41 2022 -0500
udf: initialize newblock to 0
The clang build reports this error
fs/udf/inode.c:805:6: error: variable 'newblock' is used
uninitialized whenever 'if' condition is true
[-Werror,-Wsometimes-uninitialized]
if (*err < 0)
^~~~~~~~
newblock is never set before error handling jump.
Initialize newblock to 0 and remove redundant settings.
Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Tom Rix <trix@redhat.com>
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20221230175341.1629734-1-trix@redhat.com>
--
Linaro LKFT
https://lkft.linaro.org
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (602 preceding siblings ...)
2023-09-12 5:50 ` Bagas Sanjaya
@ 2023-09-12 9:00 ` Sudip Mukherjee (Codethink)
2023-09-12 9:03 ` Naresh Kamboju
` (6 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Sudip Mukherjee (Codethink) @ 2023-09-12 9:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli, srw, rwarsow,
conor
Hi Greg,
On Mon, Sep 11, 2023 at 03:40:33PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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.
Build test (gcc version 13.2.1 20230827):
mips: 52 configs -> no failure
arm: 100 configs -> no failure
arm64: 3 configs -> no failure
x86_64: 4 configs -> no failure
alpha allmodconfig -> no failure
csky allmodconfig -> no failure
powerpc allmodconfig -> no failure
riscv allmodconfig -> no failure
s390 allmodconfig -> no failure
xtensa allmodconfig -> no failure
Boot test:
x86_64: Booted on my test laptop. No regression.
x86_64: Booted on qemu. No regression. [1]
arm64: Booted on rpi4b (4GB model). No regression. [2]
mips: Booted on ci20 board. No regression. [3]
[1]. https://openqa.qa.codethink.co.uk/tests/4999
[2]. https://openqa.qa.codethink.co.uk/tests/5001
[3]. https://openqa.qa.codethink.co.uk/tests/5000
Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
--
Regards
Sudip
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (603 preceding siblings ...)
2023-09-12 9:00 ` Sudip Mukherjee (Codethink)
@ 2023-09-12 9:03 ` Naresh Kamboju
2023-09-12 10:27 ` Takeshi Ogasawara
` (5 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Naresh Kamboju @ 2023-09-12 9:03 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor
On Mon, 11 Sept 2023 at 20:32, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
NOTE:
Reported build warnings with clang-17 on arm, powerpc and s390.
Link:
- https://lore.kernel.org/stable/1ffe4f64-f238-859a-ab14-7559d03c4671@linaro.org/
## Build
* kernel: 6.1.53-rc1
* git: https://gitlab.com/Linaro/lkft/mirrors/stable/linux-stable-rc
* git branch: linux-6.1.y
* git commit: 6e71673725ca14f97b45c5aeeceb462e3cafc16a
* git describe: v6.1.52-601-g6e71673725ca
* test details:
https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.1.y/build/v6.1.52-601-g6e71673725ca
## Test Regressions (compared to v6.1.52)
## Metric Regressions (compared to v6.1.52)
## Test Fixes (compared to v6.1.52)
## Metric Fixes (compared to v6.1.52)
## Test result summary
total: 134187, pass: 114492, fail: 2409, skip: 17116, xfail: 170
## Build Summary
* arc: 5 total, 5 passed, 0 failed
* arm: 146 total, 144 passed, 2 failed
* arm64: 53 total, 50 passed, 3 failed
* i386: 40 total, 38 passed, 2 failed
* mips: 30 total, 28 passed, 2 failed
* parisc: 4 total, 4 passed, 0 failed
* powerpc: 37 total, 35 passed, 2 failed
* riscv: 15 total, 12 passed, 3 failed
* s390: 16 total, 14 passed, 2 failed
* sh: 14 total, 12 passed, 2 failed
* sparc: 8 total, 8 passed, 0 failed
* x86_64: 44 total, 40 passed, 4 failed
## Test suites summary
* boot
* kselftest-android
* kselftest-arm64
* kselftest-breakpoints
* kselftest-capabilities
* kselftest-cgroup
* kselftest-clone3
* kselftest-core
* kselftest-cpu-hotplug
* kselftest-cpufreq
* kselftest-drivers-dma-buf
* kselftest-efivarfs
* kselftest-exec
* kselftest-filesystems
* kselftest-filesystems-binderfs
* kselftest-filesystems-epoll
* kselftest-firmware
* kselftest-fpu
* kselftest-ftrace
* kselftest-futex
* kselftest-gpio
* kselftest-intel_pstate
* kselftest-ipc
* kselftest-ir
* kselftest-kcmp
* kselftest-kexec
* kselftest-kvm
* kselftest-lib
* kselftest-membarrier
* kselftest-memfd
* kselftest-memory-hotplug
* kselftest-mincore
* kselftest-mount
* kselftest-mqueue
* kselftest-net
* kselftest-net-forwarding
* kselftest-net-mptcp
* kselftest-netfilter
* kselftest-nsfs
* kselftest-openat2
* kselftest-pid_namespace
* kselftest-pidfd
* kselftest-proc
* kselftest-pstore
* kselftest-ptrace
* kselftest-rseq
* kselftest-rtc
* kselftest-seccomp
* kselftest-sigaltstack
* kselftest-size
* kselftest-splice
* kselftest-static_keys
* kselftest-sync
* kselftest-sysctl
* kselftest-tc-testing
* kselftest-timens
* kselftest-timers
* kselftest-tmpfs
* kselftest-tpm2
* kselftest-user
* kselftest-user_events
* kselftest-vDSO
* kselftest-vm
* kselftest-watchdog
* kselftest-x86
* kselftest-zram
* kunit
* kvm-unit-tests
* libgpiod
* log-parser-boot
* log-parser-test
* ltp-cap_bounds
* ltp-commands
* ltp-containers
* ltp-controllers
* ltp-cpuhotplug
* ltp-crypto
* ltp-cve
* ltp-dio
* ltp-fcntl-locktests
* ltp-filecaps
* ltp-fs
* ltp-fs_bind
* ltp-fs_perms_simple
* ltp-fsx
* ltp-hugetlb
* ltp-io
* ltp-ipc
* ltp-math
* ltp-mm
* ltp-nptl
* ltp-pty
* ltp-sched
* ltp-securebits
* ltp-smoke
* ltp-syscalls
* ltp-tracing
* network-basic-tests
* perf
* rcutorture
* v4l2-compliance
--
Linaro LKFT
https://lkft.linaro.org
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 8:49 ` Naresh Kamboju
@ 2023-09-12 9:03 ` Greg Kroah-Hartman
2023-09-12 10:32 ` Greg Kroah-Hartman
1 sibling, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-12 9:03 UTC (permalink / raw)
To: Naresh Kamboju
Cc: jack, stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
On Tue, Sep 12, 2023 at 02:19:34PM +0530, Naresh Kamboju wrote:
> On Tue, 12 Sept 2023 at 07:55, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> >
> > Hello!
> >
> > On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > > On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 6.1.53 release.
> > > > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > > > and the diffstat can be found below.
> > > >
> > > > thanks,
> > > >
> > > > greg k-h
> > >
> > > We're seeing this new warning:
> > > -----8<-----
> > > /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> > > 892 | if (*err < 0)
> > > | ^~~~~~~~
> > > /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> > > 914 | return newblock;
> > > | ^~~~~~~~
> > > /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> > > 892 | if (*err < 0)
> > > | ^~~~~~~~~~~~~
> > > 893 | goto out_free;
> > > | ~~~~~~~~~~~~~
> > > /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> > > 699 | udf_pblk_t newblocknum, newblock;
> > > | ^
> > > | = 0
> > > 1 warning generated.
> > > ----->8-----
> > >
> > > That's with Clang 17 (and nightly) on:
> > > * arm
> > > * powerpc
> > > * s390
> >
> > For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> > error when adding extent to a file").
>
> I see the following commit is fixing the reported problem.
>
> commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
> Author: Tom Rix <trix@redhat.com>
> Date: Fri Dec 30 12:53:41 2022 -0500
>
> udf: initialize newblock to 0
>
> The clang build reports this error
> fs/udf/inode.c:805:6: error: variable 'newblock' is used
> uninitialized whenever 'if' condition is true
> [-Werror,-Wsometimes-uninitialized]
> if (*err < 0)
> ^~~~~~~~
> newblock is never set before error handling jump.
> Initialize newblock to 0 and remove redundant settings.
>
> Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
Ah, the Fixes: tag lied! There is no such git id in Linus's tree
anywhere, so our scripts couldn't match this up at all.
I'll go queue this fix up, thanks for digging it out.
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (604 preceding siblings ...)
2023-09-12 9:03 ` Naresh Kamboju
@ 2023-09-12 10:27 ` Takeshi Ogasawara
2023-09-12 12:37 ` Conor Dooley
` (4 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Takeshi Ogasawara @ 2023-09-12 10:27 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor
Hi Greg
On Tue, Sep 12, 2023 at 6:17 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
>
6.1.53-rc1 tested.
Build successfully completed.
Boot successfully completed.
No dmesg regressions.
Video output normal.
Sound output normal.
Lenovo ThinkPad X1 Carbon Gen10(Intel i7-1260P(x86_64) arch linux)
Thanks
Tested-by: Takeshi Ogasawara <takeshi.ogasawara@futuring-girl.com>
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 8:49 ` Naresh Kamboju
2023-09-12 9:03 ` Greg Kroah-Hartman
@ 2023-09-12 10:32 ` Greg Kroah-Hartman
2023-09-12 11:56 ` Naresh Kamboju
1 sibling, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-12 10:32 UTC (permalink / raw)
To: Naresh Kamboju
Cc: jack, stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
On Tue, Sep 12, 2023 at 02:19:34PM +0530, Naresh Kamboju wrote:
> On Tue, 12 Sept 2023 at 07:55, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> >
> > Hello!
> >
> > On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > > On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > > > This is the start of the stable review cycle for the 6.1.53 release.
> > > > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > > > and the diffstat can be found below.
> > > >
> > > > thanks,
> > > >
> > > > greg k-h
> > >
> > > We're seeing this new warning:
> > > -----8<-----
> > > /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> > > 892 | if (*err < 0)
> > > | ^~~~~~~~
> > > /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> > > 914 | return newblock;
> > > | ^~~~~~~~
> > > /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> > > 892 | if (*err < 0)
> > > | ^~~~~~~~~~~~~
> > > 893 | goto out_free;
> > > | ~~~~~~~~~~~~~
> > > /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> > > 699 | udf_pblk_t newblocknum, newblock;
> > > | ^
> > > | = 0
> > > 1 warning generated.
> > > ----->8-----
> > >
> > > That's with Clang 17 (and nightly) on:
> > > * arm
> > > * powerpc
> > > * s390
> >
> > For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> > error when adding extent to a file").
>
> I see the following commit is fixing the reported problem.
>
> commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
> Author: Tom Rix <trix@redhat.com>
> Date: Fri Dec 30 12:53:41 2022 -0500
>
> udf: initialize newblock to 0
>
> The clang build reports this error
> fs/udf/inode.c:805:6: error: variable 'newblock' is used
> uninitialized whenever 'if' condition is true
> [-Werror,-Wsometimes-uninitialized]
> if (*err < 0)
> ^~~~~~~~
> newblock is never set before error handling jump.
> Initialize newblock to 0 and remove redundant settings.
>
> Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
> Reported-by: Nathan Chancellor <nathan@kernel.org>
> Signed-off-by: Tom Rix <trix@redhat.com>
> Signed-off-by: Jan Kara <jack@suse.cz>
> Message-Id: <20221230175341.1629734-1-trix@redhat.com>
Wait, where is this commit? I don't see it in Linus's tree either, nor
in linux-next. Where did you find it?
confused,
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller
2023-09-11 15:49 ` Ondřej Jirman
@ 2023-09-12 10:34 ` Greg Kroah-Hartman
0 siblings, 0 replies; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-12 10:34 UTC (permalink / raw)
To: Ondřej Jirman
Cc: stable, patches, Sam Ravnborg, Robert Foss, Sasha Levin
On Mon, Sep 11, 2023 at 05:49:30PM +0200, Ondřej Jirman wrote:
> On Mon, Sep 11, 2023 at 03:44:06PM +0200, Greg Kroah-Hartman wrote:
> >
> > 6.1-stable review patch. If anyone has any objections, please let me know.
>
> See patch message comment:
>
> (But depends on functionality intorduced in Linux 6.3, so this patch will
> not build on older kernels when applied to older stable branches.)
Ah, missed that, thanks, now dropped.
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 10:32 ` Greg Kroah-Hartman
@ 2023-09-12 11:56 ` Naresh Kamboju
2023-09-12 12:01 ` Greg Kroah-Hartman
0 siblings, 1 reply; 631+ messages in thread
From: Naresh Kamboju @ 2023-09-12 11:56 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: jack, stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
On Tue, 12 Sept 2023 at 16:02, Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Tue, Sep 12, 2023 at 02:19:34PM +0530, Naresh Kamboju wrote:
> > On Tue, 12 Sept 2023 at 07:55, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > >
> > > Hello!
> > >
> > > On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > > > On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > > > > This is the start of the stable review cycle for the 6.1.53 release.
> > > > > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > > > > and the diffstat can be found below.
> > > > >
> > > > > thanks,
> > > > >
> > > > > greg k-h
> > > >
> > > > We're seeing this new warning:
> > > > -----8<-----
> > > > /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> > > > 892 | if (*err < 0)
> > > > | ^~~~~~~~
> > > > /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> > > > 914 | return newblock;
> > > > | ^~~~~~~~
> > > > /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> > > > 892 | if (*err < 0)
> > > > | ^~~~~~~~~~~~~
> > > > 893 | goto out_free;
> > > > | ~~~~~~~~~~~~~
> > > > /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> > > > 699 | udf_pblk_t newblocknum, newblock;
> > > > | ^
> > > > | = 0
> > > > 1 warning generated.
> > > > ----->8-----
> > > >
> > > > That's with Clang 17 (and nightly) on:
> > > > * arm
> > > > * powerpc
> > > > * s390
> > >
> > > For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> > > error when adding extent to a file").
> >
> > I see the following commit is fixing the reported problem.
> >
> > commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
> > Author: Tom Rix <trix@redhat.com>
> > Date: Fri Dec 30 12:53:41 2022 -0500
> >
> > udf: initialize newblock to 0
> >
> > The clang build reports this error
> > fs/udf/inode.c:805:6: error: variable 'newblock' is used
> > uninitialized whenever 'if' condition is true
> > [-Werror,-Wsometimes-uninitialized]
> > if (*err < 0)
> > ^~~~~~~~
> > newblock is never set before error handling jump.
> > Initialize newblock to 0 and remove redundant settings.
> >
> > Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
> > Reported-by: Nathan Chancellor <nathan@kernel.org>
> > Signed-off-by: Tom Rix <trix@redhat.com>
> > Signed-off-by: Jan Kara <jack@suse.cz>
> > Message-Id: <20221230175341.1629734-1-trix@redhat.com>
>
> Wait, where is this commit? I don't see it in Linus's tree either, nor
> in linux-next. Where did you find it?
Can you find this commit id ?
Commit id: 23970a1c9475b305770fd37bebfec7a10f263787
subject: ("udf: initialize newblock to 0")
- Naresh
>
> confused,
>
> greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 11:56 ` Naresh Kamboju
@ 2023-09-12 12:01 ` Greg Kroah-Hartman
2023-09-13 13:55 ` Naresh Kamboju
0 siblings, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-09-12 12:01 UTC (permalink / raw)
To: Naresh Kamboju
Cc: jack, stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
On Tue, Sep 12, 2023 at 05:26:27PM +0530, Naresh Kamboju wrote:
> On Tue, 12 Sept 2023 at 16:02, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Tue, Sep 12, 2023 at 02:19:34PM +0530, Naresh Kamboju wrote:
> > > On Tue, 12 Sept 2023 at 07:55, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > > >
> > > > Hello!
> > > >
> > > > On Mon, 11 Sept 2023 at 14:58, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> > > > > On 11/09/23 7:40 a. m., Greg Kroah-Hartman wrote:
> > > > > > This is the start of the stable review cycle for the 6.1.53 release.
> > > > > > There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> > > > > > and the diffstat can be found below.
> > > > > >
> > > > > > thanks,
> > > > > >
> > > > > > greg k-h
> > > > >
> > > > > We're seeing this new warning:
> > > > > -----8<-----
> > > > > /builds/linux/fs/udf/inode.c:892:6: warning: variable 'newblock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
> > > > > 892 | if (*err < 0)
> > > > > | ^~~~~~~~
> > > > > /builds/linux/fs/udf/inode.c:914:9: note: uninitialized use occurs here
> > > > > 914 | return newblock;
> > > > > | ^~~~~~~~
> > > > > /builds/linux/fs/udf/inode.c:892:2: note: remove the 'if' if its condition is always false
> > > > > 892 | if (*err < 0)
> > > > > | ^~~~~~~~~~~~~
> > > > > 893 | goto out_free;
> > > > > | ~~~~~~~~~~~~~
> > > > > /builds/linux/fs/udf/inode.c:699:34: note: initialize the variable 'newblock' to silence this warning
> > > > > 699 | udf_pblk_t newblocknum, newblock;
> > > > > | ^
> > > > > | = 0
> > > > > 1 warning generated.
> > > > > ----->8-----
> > > > >
> > > > > That's with Clang 17 (and nightly) on:
> > > > > * arm
> > > > > * powerpc
> > > > > * s390
> > > >
> > > > For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> > > > error when adding extent to a file").
> > >
> > > I see the following commit is fixing the reported problem.
> > >
> > > commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
> > > Author: Tom Rix <trix@redhat.com>
> > > Date: Fri Dec 30 12:53:41 2022 -0500
> > >
> > > udf: initialize newblock to 0
> > >
> > > The clang build reports this error
> > > fs/udf/inode.c:805:6: error: variable 'newblock' is used
> > > uninitialized whenever 'if' condition is true
> > > [-Werror,-Wsometimes-uninitialized]
> > > if (*err < 0)
> > > ^~~~~~~~
> > > newblock is never set before error handling jump.
> > > Initialize newblock to 0 and remove redundant settings.
> > >
> > > Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
> > > Reported-by: Nathan Chancellor <nathan@kernel.org>
> > > Signed-off-by: Tom Rix <trix@redhat.com>
> > > Signed-off-by: Jan Kara <jack@suse.cz>
> > > Message-Id: <20221230175341.1629734-1-trix@redhat.com>
> >
> > Wait, where is this commit? I don't see it in Linus's tree either, nor
> > in linux-next. Where did you find it?
>
> Can you find this commit id ?
>
> Commit id: 23970a1c9475b305770fd37bebfec7a10f263787
> subject: ("udf: initialize newblock to 0")
Yes, that is in 6.2. Where did the id you used above come from?
confused,
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (605 preceding siblings ...)
2023-09-12 10:27 ` Takeshi Ogasawara
@ 2023-09-12 12:37 ` Conor Dooley
2023-09-12 15:10 ` Jon Hunter
` (3 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Conor Dooley @ 2023-09-12 12:37 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor
[-- Attachment #1: Type: text/plain, Size: 428 bytes --]
On Mon, Sep 11, 2023 at 03:40:33PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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.
Other than the already reported ufs inode build failure,
Tested-by: Conor Dooley <conor.dooley@microchip.com>
Thanks,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (606 preceding siblings ...)
2023-09-12 12:37 ` Conor Dooley
@ 2023-09-12 15:10 ` Jon Hunter
2023-09-12 17:35 ` Florian Fainelli
` (2 subsequent siblings)
610 siblings, 0 replies; 631+ messages in thread
From: Jon Hunter @ 2023-09-12 15:10 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Greg Kroah-Hartman, patches, linux-kernel, torvalds, akpm, linux,
shuah, patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, linux-tegra, stable
On Mon, 11 Sep 2023 15:40:33 +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
All tests passing for Tegra ...
Test results for stable-v6.1:
11 builds: 11 pass, 0 fail
28 boots: 28 pass, 0 fail
116 tests: 116 pass, 0 fail
Linux version: 6.1.53-rc1-g6e71673725ca
Boards tested: tegra124-jetson-tk1, tegra186-p2771-0000,
tegra194-p2972-0000, tegra194-p3509-0000+p3668-0000,
tegra20-ventana, tegra210-p2371-2180,
tegra210-p3450-0000, tegra30-cardhu-a04
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Jon
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (607 preceding siblings ...)
2023-09-12 15:10 ` Jon Hunter
@ 2023-09-12 17:35 ` Florian Fainelli
2023-09-12 18:35 ` Guenter Roeck
2023-09-13 2:40 ` Ron Economos
610 siblings, 0 replies; 631+ messages in thread
From: Florian Fainelli @ 2023-09-12 17:35 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, sudipm.mukherjee, srw, rwarsow,
conor
On 9/11/2023 6:40 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
On ARCH_BRCMSTB using 32-bit and 64-bit ARM kernels, build tested on
BMIPS_GENERIC:
Tested-by: Florian Fainelli <florian.fainelli@broadcom.com>
--
Florian
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (608 preceding siblings ...)
2023-09-12 17:35 ` Florian Fainelli
@ 2023-09-12 18:35 ` Guenter Roeck
2023-09-13 2:40 ` Ron Economos
610 siblings, 0 replies; 631+ messages in thread
From: Guenter Roeck @ 2023-09-12 18:35 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, linux-kernel, torvalds, akpm, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor
On Mon, Sep 11, 2023 at 03:40:33PM +0200, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +0000.
> Anything received after that time might be too late.
>
Build results:
total: 157 pass: 157 fail: 0
Qemu test results:
total: 529 pass: 529 fail: 0
Tested-by: Guenter Roeck <linux@roeck-us.net>
Guenter
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
` (609 preceding siblings ...)
2023-09-12 18:35 ` Guenter Roeck
@ 2023-09-13 2:40 ` Ron Economos
610 siblings, 0 replies; 631+ messages in thread
From: Ron Economos @ 2023-09-13 2:40 UTC (permalink / raw)
To: Greg Kroah-Hartman, stable
Cc: patches, linux-kernel, torvalds, akpm, linux, shuah, patches,
lkft-triage, pavel, jonathanh, f.fainelli, sudipm.mukherjee, srw,
rwarsow, conor
On 9/11/23 6:40 AM, Greg Kroah-Hartman wrote:
> This is the start of the stable review cycle for the 6.1.53 release.
> There are 600 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, 13 Sep 2023 13:44:56 +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/v6.x/stable-review/patch-6.1.53-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-6.1.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Tested-by: Ron Economos <re@w6rz.net>
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 000/600] 6.1.53-rc1 review
2023-09-12 12:01 ` Greg Kroah-Hartman
@ 2023-09-13 13:55 ` Naresh Kamboju
0 siblings, 0 replies; 631+ messages in thread
From: Naresh Kamboju @ 2023-09-13 13:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: jack, stable, patches, linux-kernel, torvalds, akpm, linux, shuah,
patches, lkft-triage, pavel, jonathanh, f.fainelli,
sudipm.mukherjee, srw, rwarsow, conor, Daniel Díaz, Tom Rix,
Nathan Chancellor
Hi Greg,
> > > > > For what it's worth, bisection points to 903b487b5ba6 ("udf: Handle
> > > > > error when adding extent to a file").
> > > >
> > > > I see the following commit is fixing the reported problem.
> > > >
> > > > commit 6d5ab7c2f7cf90877dab8f2bb06eb5ca8edc73ef
> > > > Author: Tom Rix <trix@redhat.com>
> > > > Date: Fri Dec 30 12:53:41 2022 -0500
> > > >
> > > > udf: initialize newblock to 0
> > > >
> > > > The clang build reports this error
> > > > fs/udf/inode.c:805:6: error: variable 'newblock' is used
> > > > uninitialized whenever 'if' condition is true
> > > > [-Werror,-Wsometimes-uninitialized]
> > > > if (*err < 0)
> > > > ^~~~~~~~
> > > > newblock is never set before error handling jump.
> > > > Initialize newblock to 0 and remove redundant settings.
> > > >
> > > > Fixes: d8b39db5fab8 ("udf: Handle error when adding extent to a file")
> > > > Reported-by: Nathan Chancellor <nathan@kernel.org>
> > > > Signed-off-by: Tom Rix <trix@redhat.com>
> > > > Signed-off-by: Jan Kara <jack@suse.cz>
> > > > Message-Id: <20221230175341.1629734-1-trix@redhat.com>
> > >
> > > Wait, where is this commit? I don't see it in Linus's tree either, nor
> > > in linux-next. Where did you find it?
> >
> > Can you find this commit id ?
> >
> > Commit id: 23970a1c9475b305770fd37bebfec7a10f263787
> > subject: ("udf: initialize newblock to 0")
>
> Yes, that is in 6.2. Where did the id you used above come from?
While looking around for the fix commit i found this on Linux next,
$ git log --oneline next-20221226..next-20230106 -- fs/udf/inode.c
e86812bfac97e udf: Detect system inodes linked into directory hierarchy
453bc25de0a55 udf: Preserve link count of system files
6d5ab7c2f7cf9 udf: initialize newblock to 0
>
> confused,
Sorry for the confusion.
> greg k-h
- Naresh
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-11 13:49 ` [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks Greg Kroah-Hartman
@ 2023-09-14 8:51 ` Luis Gerhorst
2023-09-16 11:35 ` Greg KH
0 siblings, 1 reply; 631+ messages in thread
From: Luis Gerhorst @ 2023-09-14 8:51 UTC (permalink / raw)
To: gregkh
Cc: alexei.starovoitov, ast, eddyz87, laoar.shao, patches, stable,
yonghong.song, hagarhem, puranjay12, daniel, Luis Gerhorst
> 6.1-stable review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Yafang Shao <laoar.shao@gmail.com>
>
> commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
I unfortunately have objections, they are pending discussion at [1].
Same applies to the 6.4-stable review patch [2] and all other backports.
[1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
[2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
--
Luis
Amazon Development Center Germany GmbH
Krausenstr. 38
10117 Berlin
Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss
Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B
Sitz: Berlin
Ust-ID: DE 289 237 879
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-14 8:51 ` Luis Gerhorst
@ 2023-09-16 11:35 ` Greg KH
2023-09-19 6:26 ` Daniel Borkmann
0 siblings, 1 reply; 631+ messages in thread
From: Greg KH @ 2023-09-16 11:35 UTC (permalink / raw)
To: gerhorst
Cc: alexei.starovoitov, ast, eddyz87, laoar.shao, patches, stable,
yonghong.song, hagarhem, puranjay12, daniel, Luis Gerhorst
On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
> > 6.1-stable review patch. If anyone has any objections, please let me know.
> >
> > ------------------
> >
> > From: Yafang Shao <laoar.shao@gmail.com>
> >
> > commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
>
> I unfortunately have objections, they are pending discussion at [1].
>
> Same applies to the 6.4-stable review patch [2] and all other backports.
>
> [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
> [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
As this is in the tree already, and in Linus's tree, I'll wait to see
if any changes are merged into Linus's tree for this before removing it
from the stable trees.
Let us know if there's a commit that resolves this and we will be glad
to queue that up.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-16 11:35 ` Greg KH
@ 2023-09-19 6:26 ` Daniel Borkmann
2023-09-19 8:32 ` Greg KH
0 siblings, 1 reply; 631+ messages in thread
From: Daniel Borkmann @ 2023-09-19 6:26 UTC (permalink / raw)
To: Greg KH, gerhorst
Cc: alexei.starovoitov, ast, eddyz87, laoar.shao, patches, stable,
yonghong.song, hagarhem, puranjay12, Luis Gerhorst
On 9/16/23 1:35 PM, Greg KH wrote:
> On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
>>> 6.1-stable review patch. If anyone has any objections, please let me know.
>>>
>>> From: Yafang Shao <laoar.shao@gmail.com>
>>>
>>> commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
>>
>> I unfortunately have objections, they are pending discussion at [1].
>>
>> Same applies to the 6.4-stable review patch [2] and all other backports.
>>
>> [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
>> [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
>
> As this is in the tree already, and in Linus's tree, I'll wait to see
> if any changes are merged into Linus's tree for this before removing it
> from the stable trees.
>
> Let us know if there's a commit that resolves this and we will be glad
> to queue that up.
Commit d75e30dddf73 ("bpf: Fix issue in verifying allow_ptr_leaks") is not
stable material. It's not really a "fix", but it will simply make direct
packet access available to applications without CAP_PERFMON - the latter
was required so far given Spectre v1. However, there is ongoing discussion [1]
that potentially not much useful information can be leaked out and therefore
lifting it may or may not be ok. If we queue this to stable and later figure
we need to revert the whole thing again because someone managed to come up
with a PoC in the meantime, then there's higher risk of breakage.
Thanks,
Daniel
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-19 6:26 ` Daniel Borkmann
@ 2023-09-19 8:32 ` Greg KH
2023-09-19 8:39 ` Alexei Starovoitov
0 siblings, 1 reply; 631+ messages in thread
From: Greg KH @ 2023-09-19 8:32 UTC (permalink / raw)
To: Daniel Borkmann
Cc: gerhorst, alexei.starovoitov, ast, eddyz87, laoar.shao, patches,
stable, yonghong.song, hagarhem, puranjay12, Luis Gerhorst
On Tue, Sep 19, 2023 at 08:26:28AM +0200, Daniel Borkmann wrote:
> On 9/16/23 1:35 PM, Greg KH wrote:
> > On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
> > > > 6.1-stable review patch. If anyone has any objections, please let me know.
> > > >
> > > > From: Yafang Shao <laoar.shao@gmail.com>
> > > >
> > > > commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
> > >
> > > I unfortunately have objections, they are pending discussion at [1].
> > >
> > > Same applies to the 6.4-stable review patch [2] and all other backports.
> > >
> > > [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
> > > [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
> >
> > As this is in the tree already, and in Linus's tree, I'll wait to see
> > if any changes are merged into Linus's tree for this before removing it
> > from the stable trees.
> >
> > Let us know if there's a commit that resolves this and we will be glad
> > to queue that up.
>
> Commit d75e30dddf73 ("bpf: Fix issue in verifying allow_ptr_leaks") is not
> stable material. It's not really a "fix", but it will simply make direct
> packet access available to applications without CAP_PERFMON - the latter
> was required so far given Spectre v1. However, there is ongoing discussion [1]
> that potentially not much useful information can be leaked out and therefore
> lifting it may or may not be ok. If we queue this to stable and later figure
> we need to revert the whole thing again because someone managed to come up
> with a PoC in the meantime, then there's higher risk of breakage.
Ick, ok, so just this one commit should be reverted? Or any others as
well?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-19 8:32 ` Greg KH
@ 2023-09-19 8:39 ` Alexei Starovoitov
2023-09-19 9:26 ` Greg KH
2023-09-19 10:15 ` Daniel Borkmann
0 siblings, 2 replies; 631+ messages in thread
From: Alexei Starovoitov @ 2023-09-19 8:39 UTC (permalink / raw)
To: Greg KH
Cc: Daniel Borkmann, Luis Gerhorst, Alexei Starovoitov, Eddy Z,
Yafang Shao, patches, stable, Yonghong Song,
Hagar Gamal Halim Hemdan, Puranjay Mohan, Luis Gerhorst
On Tue, Sep 19, 2023 at 1:34 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>
> On Tue, Sep 19, 2023 at 08:26:28AM +0200, Daniel Borkmann wrote:
> > On 9/16/23 1:35 PM, Greg KH wrote:
> > > On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
> > > > > 6.1-stable review patch. If anyone has any objections, please let me know.
> > > > >
> > > > > From: Yafang Shao <laoar.shao@gmail.com>
> > > > >
> > > > > commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
> > > >
> > > > I unfortunately have objections, they are pending discussion at [1].
> > > >
> > > > Same applies to the 6.4-stable review patch [2] and all other backports.
> > > >
> > > > [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
> > > > [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
> > >
> > > As this is in the tree already, and in Linus's tree, I'll wait to see
> > > if any changes are merged into Linus's tree for this before removing it
> > > from the stable trees.
> > >
> > > Let us know if there's a commit that resolves this and we will be glad
> > > to queue that up.
> >
> > Commit d75e30dddf73 ("bpf: Fix issue in verifying allow_ptr_leaks") is not
> > stable material. It's not really a "fix", but it will simply make direct
> > packet access available to applications without CAP_PERFMON - the latter
> > was required so far given Spectre v1. However, there is ongoing discussion [1]
> > that potentially not much useful information can be leaked out and therefore
> > lifting it may or may not be ok. If we queue this to stable and later figure
> > we need to revert the whole thing again because someone managed to come up
> > with a PoC in the meantime, then there's higher risk of breakage.
>
> Ick, ok, so just this one commit should be reverted? Or any others as
> well?
I don't think revert is necessary. Just don't backport any further.
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-19 8:39 ` Alexei Starovoitov
@ 2023-09-19 9:26 ` Greg KH
2023-09-19 10:15 ` Daniel Borkmann
1 sibling, 0 replies; 631+ messages in thread
From: Greg KH @ 2023-09-19 9:26 UTC (permalink / raw)
To: Alexei Starovoitov
Cc: Daniel Borkmann, Luis Gerhorst, Alexei Starovoitov, Eddy Z,
Yafang Shao, patches, stable, Yonghong Song,
Hagar Gamal Halim Hemdan, Puranjay Mohan, Luis Gerhorst
On Tue, Sep 19, 2023 at 01:39:44AM -0700, Alexei Starovoitov wrote:
> On Tue, Sep 19, 2023 at 1:34 AM Greg KH <gregkh@linuxfoundation.org> wrote:
> >
> > On Tue, Sep 19, 2023 at 08:26:28AM +0200, Daniel Borkmann wrote:
> > > On 9/16/23 1:35 PM, Greg KH wrote:
> > > > On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
> > > > > > 6.1-stable review patch. If anyone has any objections, please let me know.
> > > > > >
> > > > > > From: Yafang Shao <laoar.shao@gmail.com>
> > > > > >
> > > > > > commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
> > > > >
> > > > > I unfortunately have objections, they are pending discussion at [1].
> > > > >
> > > > > Same applies to the 6.4-stable review patch [2] and all other backports.
> > > > >
> > > > > [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
> > > > > [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
> > > >
> > > > As this is in the tree already, and in Linus's tree, I'll wait to see
> > > > if any changes are merged into Linus's tree for this before removing it
> > > > from the stable trees.
> > > >
> > > > Let us know if there's a commit that resolves this and we will be glad
> > > > to queue that up.
> > >
> > > Commit d75e30dddf73 ("bpf: Fix issue in verifying allow_ptr_leaks") is not
> > > stable material. It's not really a "fix", but it will simply make direct
> > > packet access available to applications without CAP_PERFMON - the latter
> > > was required so far given Spectre v1. However, there is ongoing discussion [1]
> > > that potentially not much useful information can be leaked out and therefore
> > > lifting it may or may not be ok. If we queue this to stable and later figure
> > > we need to revert the whole thing again because someone managed to come up
> > > with a PoC in the meantime, then there's higher risk of breakage.
> >
> > Ick, ok, so just this one commit should be reverted? Or any others as
> > well?
>
> I don't think revert is necessary. Just don't backport any further.
Ok, thanks, it's not backported into any other kernels at the moment, so
I'll not worry about this anymore :)
greg k-h
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks
2023-09-19 8:39 ` Alexei Starovoitov
2023-09-19 9:26 ` Greg KH
@ 2023-09-19 10:15 ` Daniel Borkmann
1 sibling, 0 replies; 631+ messages in thread
From: Daniel Borkmann @ 2023-09-19 10:15 UTC (permalink / raw)
To: Alexei Starovoitov, Greg KH
Cc: Luis Gerhorst, Alexei Starovoitov, Eddy Z, Yafang Shao, patches,
stable, Yonghong Song, Hagar Gamal Halim Hemdan, Puranjay Mohan,
Luis Gerhorst
On 9/19/23 10:39 AM, Alexei Starovoitov wrote:
> On Tue, Sep 19, 2023 at 1:34 AM Greg KH <gregkh@linuxfoundation.org> wrote:
>>
>> On Tue, Sep 19, 2023 at 08:26:28AM +0200, Daniel Borkmann wrote:
>>> On 9/16/23 1:35 PM, Greg KH wrote:
>>>> On Thu, Sep 14, 2023 at 08:51:32AM +0000, Luis Gerhorst wrote:
>>>>>> 6.1-stable review patch. If anyone has any objections, please let me know.
>>>>>>
>>>>>> From: Yafang Shao <laoar.shao@gmail.com>
>>>>>>
>>>>>> commit d75e30dddf73449bc2d10bb8e2f1a2c446bc67a2 upstream.
>>>>>
>>>>> I unfortunately have objections, they are pending discussion at [1].
>>>>>
>>>>> Same applies to the 6.4-stable review patch [2] and all other backports.
>>>>>
>>>>> [1] https://lore.kernel.org/bpf/20230913122827.91591-1-gerhorst@amazon.de/
>>>>> [2] https://lore.kernel.org/stable/20230911134709.834278248@linuxfoundation.org/
>>>>
>>>> As this is in the tree already, and in Linus's tree, I'll wait to see
>>>> if any changes are merged into Linus's tree for this before removing it
>>>> from the stable trees.
>>>>
>>>> Let us know if there's a commit that resolves this and we will be glad
>>>> to queue that up.
>>>
>>> Commit d75e30dddf73 ("bpf: Fix issue in verifying allow_ptr_leaks") is not
>>> stable material. It's not really a "fix", but it will simply make direct
>>> packet access available to applications without CAP_PERFMON - the latter
>>> was required so far given Spectre v1. However, there is ongoing discussion [1]
>>> that potentially not much useful information can be leaked out and therefore
>>> lifting it may or may not be ok. If we queue this to stable and later figure
>>> we need to revert the whole thing again because someone managed to come up
>>> with a PoC in the meantime, then there's higher risk of breakage.
>>
>> Ick, ok, so just this one commit should be reverted? Or any others as
>> well?
>
> I don't think revert is necessary. Just don't backport any further.
Yeah agree lets not backport further.
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re:[PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work
2023-09-11 13:47 ` [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work Greg Kroah-Hartman
@ 2023-10-10 14:16 ` 王征
2023-10-10 14:54 ` [PATCH " Greg Kroah-Hartman
0 siblings, 1 reply; 631+ messages in thread
From: 王征 @ 2023-10-10 14:16 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, Alexandre Mergnat, Chen-Yu Tsai,
AngeloGioacchino Del Regno, Hans Verkuil, Sasha Levin
Hi,
Sorry to bother you for I didn't know how to submit patch to a specific branch.
Could you please push this patch to 5.10 branch? The chrome-os is affcted by this issue.
Best regards,
Zheng Wang
At 2023-09-11 20:47:20, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org> wrote:
>6.1-stable review patch. If anyone has any objections, please let me know.
>
>------------------
>
>From: Zheng Wang <zyytlz.wz@163.com>
>
>[ Upstream commit c677d7ae83141d390d1253abebafa49c962afb52 ]
>
>In mtk_jpeg_probe, &jpeg->job_timeout_work is bound with
>mtk_jpeg_job_timeout_work. Then mtk_jpeg_dec_device_run
>and mtk_jpeg_enc_device_run may be called to start the
>work.
>If we remove the module which will call mtk_jpeg_remove
>to make cleanup, there may be a unfinished work. The
>possible sequence is as follows, which will cause a
>typical UAF bug.
>
>Fix it by canceling the work before cleanup in the mtk_jpeg_remove
>
>CPU0 CPU1
>
> |mtk_jpeg_job_timeout_work
>mtk_jpeg_remove |
> v4l2_m2m_release |
> kfree(m2m_dev); |
> |
> | v4l2_m2m_get_curr_priv
> | m2m_dev->curr_ctx //use
>Fixes: b2f0d2724ba4 ("[media] vcodec: mediatek: Add Mediatek JPEG Decoder Driver")
>Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
>Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com>
>Reviewed-by: Chen-Yu Tsai <wenst@chromium.org>
>Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
>Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
>Signed-off-by: Sasha Levin <sashal@kernel.org>
>---
> drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 1 +
> 1 file changed, 1 insertion(+)
>
>diff --git a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
>index 3071b61946c3b..e9a4f8abd21c5 100644
>--- a/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
>+++ b/drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c
>@@ -1412,6 +1412,7 @@ static int mtk_jpeg_remove(struct platform_device *pdev)
> {
> struct mtk_jpeg_dev *jpeg = platform_get_drvdata(pdev);
>
>+ cancel_delayed_work_sync(&jpeg->job_timeout_work);
> pm_runtime_disable(&pdev->dev);
> video_unregister_device(jpeg->vdev);
> v4l2_m2m_release(jpeg->m2m_dev);
>--
>2.40.1
>
>
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re: [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work
2023-10-10 14:16 ` 王征
@ 2023-10-10 14:54 ` Greg Kroah-Hartman
2023-10-10 15:00 ` 王征
0 siblings, 1 reply; 631+ messages in thread
From: Greg Kroah-Hartman @ 2023-10-10 14:54 UTC (permalink / raw)
To: 王征
Cc: stable, patches, Alexandre Mergnat, Chen-Yu Tsai,
AngeloGioacchino Del Regno, Hans Verkuil, Sasha Levin
On Tue, Oct 10, 2023 at 10:16:01PM +0800, 王征 wrote:
>
> Hi,
>
> Sorry to bother you for I didn't know how to submit patch to a specific branch.
> Could you please push this patch to 5.10 branch? The chrome-os is affcted by this issue.
<formletter>
This is not the correct way to submit patches for inclusion in the
stable kernel tree. Please read:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
for how to do this properly.
</formletter>
^ permalink raw reply [flat|nested] 631+ messages in thread
* Re:Re: [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work
2023-10-10 14:54 ` [PATCH " Greg Kroah-Hartman
@ 2023-10-10 15:00 ` 王征
0 siblings, 0 replies; 631+ messages in thread
From: 王征 @ 2023-10-10 15:00 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: stable, patches, Alexandre Mergnat, Chen-Yu Tsai,
AngeloGioacchino Del Regno, Hans Verkuil, Sasha Levin
At 2023-10-10 21:54:54, "Greg Kroah-Hartman" <gregkh@linuxfoundation.org> wrote:
>On Tue, Oct 10, 2023 at 10:16:01PM +0800, 王征 wrote:
>>
>> Hi,
>>
>> Sorry to bother you for I didn't know how to submit patch to a specific branch.
>> Could you please push this patch to 5.10 branch? The chrome-os is affcted by this issue.
>
>
>
>This is not the correct way to submit patches for inclusion in the
>stable kernel tree. Please read:
> https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html
>for how to do this properly.
>
>
Get it! Thanks very mush:)
Best wishes,
Zheng Wang
^ permalink raw reply [flat|nested] 631+ messages in thread
end of thread, other threads:[~2023-10-10 15:00 UTC | newest]
Thread overview: 631+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-11 13:40 [PATCH 6.1 000/600] 6.1.53-rc1 review Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 001/600] Revert "bridge: Add extack warning when enabling STP in netns." Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 002/600] Partially revert "drm/amd/display: Fix possible underflow for displays with large vblank" Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 003/600] scsi: ufs: Try harder to change the power mode Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 004/600] Revert "Revert drm/amd/display: Enable Freesync Video Mode by default" Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 005/600] ARM: dts: imx: Set default tuning step for imx7d usdhc Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 006/600] ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 007/600] powerpc/boot: Disable power10 features after BOOTAFLAGS assignment Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 008/600] media: uapi: HEVC: Add num_delta_pocs_of_ref_rps_idx field Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 009/600] Revert "MIPS: unhide PATA_PLATFORM" Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 010/600] phy: qcom-snps-femto-v2: use qcom_snps_hsphy_suspend/resume error code Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 011/600] media: amphion: use dev_err_probe Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 012/600] media: pulse8-cec: handle possible ping error Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 013/600] media: pci: cx23885: fix error handling for cx23885 ATSC boards Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 014/600] 9p: virtio: fix unlikely null pointer deref in handle_rerror Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 015/600] 9p: virtio: make sure offs is initialized in zc_request Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 016/600] ksmbd: fix out of bounds in smb3_decrypt_req() Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 017/600] ksmbd: validate session id and tree id in compound request Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 018/600] ksmbd: no response from compound read Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 019/600] ksmbd: fix out of bounds in init_smb2_rsp_hdr() Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 020/600] ASoC: da7219: Flush pending AAD IRQ when suspending Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 021/600] ASoC: da7219: Check for failure reading AAD IRQ events Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 022/600] ASoC: nau8821: Add DMI quirk mechanism for active-high jack-detect Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 023/600] ethernet: atheros: fix return value check in atl1c_tso_csum() Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 024/600] m68k: Fix invalid .section syntax Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 025/600] s390/dasd: use correct number of retries for ERP requests Greg Kroah-Hartman
2023-09-11 13:40 ` [PATCH 6.1 026/600] s390/dasd: fix hanging device after request requeue Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 027/600] fs/nls: make load_nls() take a const parameter Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 028/600] ASoC: rt5682-sdw: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 029/600] ASoc: codecs: ES8316: Fix DMIC config Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 030/600] ASoC: rt711: fix for JD event handling in ClockStop Mode0 Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 031/600] ASoC: rt711-sdca: " Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 032/600] ASoC: atmel: Fix the 8K sample parameter in I2SC master Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 033/600] ALSA: usb-audio: Add quirk for Microsoft Modern Wireless Headset Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 034/600] platform/x86: intel: hid: Always call BTNL ACPI method Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 035/600] platform/x86/intel/hid: Add HP Dragonfly G2 to VGBS DMI quirks Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 036/600] platform/x86: think-lmi: Use kfree_sensitive instead of kfree Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 037/600] platform/x86: asus-wmi: Fix setting RGB mode on some TUF laptops Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 038/600] platform/x86: huawei-wmi: Silence ambient light sensor Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 039/600] drm/amd/smu: use AverageGfxclkFrequency* to replace previous GFX Curr Clock Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 040/600] drm/amd/display: Guard DCN31 PHYD32CLK logic against chip family Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 041/600] drm/amd/display: Exit idle optimizations before attempt to access PHY Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 042/600] ovl: Always reevaluate the file signature for IMA Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 043/600] ata: pata_arasan_cf: Use dev_err_probe() instead dev_err() in data_xfer() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 044/600] ALSA: usb-audio: Update for native DSD support quirks Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 045/600] staging: fbtft: ili9341: use macro FBTFT_REGISTER_SPI_DRIVER Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 046/600] security: keys: perform capable check only on privileged operations Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 047/600] kprobes: Prohibit probing on CFI preamble symbol Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 048/600] clk: fixed-mmio: make COMMON_CLK_FIXED_MMIO depend on HAS_IOMEM Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 049/600] vmbus_testing: fix wrong python syntax for integer value comparison Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 050/600] Revert "wifi: ath6k: silence false positive -Wno-dangling-pointer warning on GCC 12" Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 051/600] net: dsa: microchip: KSZ9477 register regmap alignment to 32 bit boundaries Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 052/600] net: annotate data-races around sk->sk_{rcv|snd}timeo Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 053/600] net: usb: qmi_wwan: add Quectel EM05GV2 Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 054/600] wifi: brcmfmac: Fix field-spanning write in brcmf_scan_params_v2_to_v1() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 055/600] powerpc/powermac: Use early_* IO variants in via_calibrate_decr() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 056/600] idmaengine: make FSL_EDMA and INTEL_IDMA64 depends on HAS_IOMEM Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 057/600] platform/x86/amd/pmf: Fix unsigned comparison with less than zero Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 058/600] scsi: lpfc: Remove reftag check in DIF paths Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 059/600] scsi: qedi: Fix potential deadlock on &qedi_percpu->p_work_lock Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 060/600] net: hns3: restore user pause configure when disable autoneg Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 061/600] drm/amdgpu: Match against exact bootloader status Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 062/600] wifi: cfg80211: remove links only on AP Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 063/600] wifi: mac80211: Use active_links instead of valid_links in Tx Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 064/600] netlabel: fix shift wrapping bug in netlbl_catmap_setlong() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 065/600] bnx2x: fix page fault following EEH recovery Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 066/600] cifs: fix sockaddr comparison in iface_cmp Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 067/600] cifs: fix max_credits implementation Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 068/600] sctp: handle invalid error codes without calling BUG() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 069/600] scsi: aacraid: Reply queue mapping to CPUs based on IRQ affinity Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 070/600] scsi: storvsc: Always set no_report_opcodes Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 071/600] scsi: lpfc: Fix incorrect big endian type assignment in bsg loopback path Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 072/600] LoongArch: Let pmd_present() return true when splitting pmd Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 073/600] LoongArch: Fix the write_fcsr() macro Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 074/600] ALSA: seq: oss: Fix racy open/close of MIDI devices Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 075/600] net: sfp: handle 100G/25G active optical cables in sfp_parse_support Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 076/600] tracing: Introduce pipe_cpumask to avoid race on trace_pipes Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 077/600] platform/mellanox: Fix mlxbf-tmfifo not handling all virtio CONSOLE notifications Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 078/600] of: property: Simplify of_link_to_phandle() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 079/600] cpufreq: intel_pstate: set stale CPU frequency to minimum Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 080/600] crypto: rsa-pkcs1pad - Use helper to set reqsize Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 081/600] tpm: Enable hwrng only for Pluton on AMD CPUs Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 082/600] KVM: x86/mmu: Use kstrtobool() instead of strtobool() Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 083/600] KVM: x86/mmu: Add "never" option to allow sticky disabling of nx_huge_pages Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 084/600] net: Avoid address overwrite in kernel_connect Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 085/600] drm/amd/display: ensure async flips are only accepted for fast updates Greg Kroah-Hartman
2023-09-11 13:41 ` [PATCH 6.1 086/600] udf: Check consistency of Space Bitmap Descriptor Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 087/600] udf: Handle error when adding extent to a file Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 088/600] Input: i8042 - add quirk for TUXEDO Gemini 17 Gen1/Clevo PD70PN Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 089/600] Revert "PCI: tegra194: Enable support for 256 Byte payload" Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 090/600] Revert "net: macsec: preserve ingress frame ordering" Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 091/600] tools lib subcmd: Add install target Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 092/600] tools lib subcmd: Make install_headers clearer Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 093/600] tools lib subcmd: Add dependency test to install_headers Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 094/600] tools/resolve_btfids: Use pkg-config to locate libelf Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 095/600] tools/resolve_btfids: Install subcmd headers Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 096/600] tools/resolve_btfids: Alter how HOSTCC is forced Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 097/600] tools/resolve_btfids: Compile resolve_btfids as host program Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 098/600] tools/resolve_btfids: Tidy HOST_OVERRIDES Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 099/600] tools/resolve_btfids: Pass HOSTCFLAGS as EXTRA_CFLAGS to prepare targets Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 100/600] tools/resolve_btfids: Fix setting HOSTCFLAGS Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 101/600] reiserfs: Check the return value from __getblk() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 102/600] eventfd: prevent underflow for eventfd semaphores Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 103/600] fs: Fix error checking for d_hash_and_lookup() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 104/600] iomap: Remove large folio handling in iomap_invalidate_folio() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 105/600] tmpfs: verify {g,u}id mount options correctly Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 106/600] selftests/harness: Actually report SKIP for signal tests Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 107/600] vfs, security: Fix automount superblock LSM init problem, preventing NFS sb sharing Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 108/600] ARM: ptrace: Restore syscall restart tracing Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 109/600] ARM: ptrace: Restore syscall skipping for tracers Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 110/600] refscale: Fix uninitalized use of wait_queue_head_t Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 111/600] OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 112/600] selftests/resctrl: Add resctrl.h into build deps Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 113/600] selftests/resctrl: Dont leak buffer in fill_cache() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 114/600] selftests/resctrl: Unmount resctrl FS if child fails to run benchmark Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 115/600] selftests/resctrl: Close perf value read fd on errors Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 116/600] arm64/ptrace: Clean up error handling path in sve_set_common() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 117/600] sched/psi: Select KERNFS as needed Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 118/600] x86/decompressor: Dont rely on upper 32 bits of GPRs being preserved Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 119/600] arm64/sme: Dont use streaming mode to probe the maximum SME VL Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 120/600] arm64/fpsimd: Only provide the length to cpufeature for xCR registers Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 121/600] sched/rt: Fix sysctl_sched_rr_timeslice intial value Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 122/600] perf/imx_ddr: dont enable counter0 if none of 4 counters are used Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 123/600] selftests/futex: Order calls to futex_lock_pi Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 124/600] s390/pkey: fix/harmonize internal keyblob headers Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 125/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling in PKEY_GENSECK2 IOCTL Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 126/600] s390/pkey: fix PKEY_TYPE_EP11_AES handling for sysfs attributes Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 127/600] s390/paes: fix PKEY_TYPE_EP11_AES handling for secure keyblobs Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 128/600] irqchip/loongson-eiointc: Fix return value checking of eiointc_index Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 129/600] ACPI: x86: s2idle: Post-increment variables when getting constraints Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 130/600] ACPI: x86: s2idle: Fix a logic error parsing AMD constraints table Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 131/600] thermal/of: Fix potential uninitialized value access Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 132/600] cpufreq: amd-pstate-ut: Remove module parameter access Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 133/600] cpufreq: amd-pstate-ut: Fix kernel panic when loading the driver Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 134/600] x86/efistub: Fix PCI ROM preservation in mixed mode Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 135/600] cpufreq: powernow-k8: Use related_cpus instead of cpus in driver.exit() Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 136/600] selftests/bpf: Fix bpf_nf failure upon test rerun Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 137/600] bpftool: use a local copy of perf_event to fix accessing :: Bpf_cookie Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 138/600] bpftool: Define a local bpf_perf_link to fix accessing its fields Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 139/600] bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 140/600] bpftool: Use a local bpf_perf_event_value to fix accessing its fields Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 141/600] libbpf: Fix realloc API handling in zero-sized edge cases Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 142/600] bpf: Clear the probe_addr for uprobe Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 143/600] bpf: Fix an error in verifying a field in a union Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 144/600] crypto: qat - change value of default idle filter Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 145/600] tcp: tcp_enter_quickack_mode() should be static Greg Kroah-Hartman
2023-09-11 13:42 ` [PATCH 6.1 146/600] hwrng: nomadik - keep clock enabled while hwrng is registered Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 147/600] hwrng: pic32 - use devm_clk_get_enabled Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 148/600] regmap: rbtree: Use alloc_flags for memory allocations Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 149/600] wifi: rtw89: debug: Fix error handling in rtw89_debug_priv_btc_manual_set() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 150/600] wifi: mt76: mt7921: fix non-PSC channel scan fail Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 151/600] udp: re-score reuseport groups when connected sockets are present Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 152/600] bpf: reject unhashed sockets in bpf_sk_assign Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 153/600] net: export inet_lookup_reuseport and inet6_lookup_reuseport Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 154/600] net: remove duplicate reuseport_lookup functions Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 155/600] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 156/600] wifi: mt76: testmode: add nla_policy for MT76_TM_ATTR_TX_LENGTH Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 157/600] spi: tegra20-sflash: fix to check return value of platform_get_irq() in tegra_sflash_probe() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 158/600] can: gs_usb: gs_usb_receive_bulk_callback(): count RX overflow errors also in case of OOM Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 159/600] wifi: mt76: mt7915: fix power-limits while chan_switch Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 160/600] wifi: mwifiex: Fix OOB and integer underflow when rx packets Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 161/600] wifi: mwifiex: fix error recovery in PCIE buffer descriptor management Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 162/600] selftests/bpf: fix static assert compilation issue for test_cls_*.c Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 163/600] kbuild: rust_is_available: remove -v option Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 164/600] kbuild: rust_is_available: fix version check when CC has multiple arguments Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 165/600] kbuild: rust_is_available: add check for `bindgen` invocation Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 166/600] kbuild: rust_is_available: fix confusion when a version appears in the path Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 167/600] crypto: stm32 - Properly handle pm_runtime_get failing Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 168/600] crypto: api - Use work queue in crypto_destroy_instance Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 169/600] Bluetooth: nokia: fix value check in nokia_bluetooth_serdev_probe() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 170/600] Bluetooth: Fix potential use-after-free when clear keys Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 171/600] Bluetooth: hci_sync: Dont double print name in add/remove adv_monitor Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 172/600] Bluetooth: hci_sync: Avoid use-after-free in dbg for hci_add_adv_monitor() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 173/600] net: tcp: fix unexcepted socket die when snd_wnd is 0 Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 174/600] selftests/bpf: Fix repeat option when kfunc_call verification fails Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 175/600] selftests/bpf: Clean up fmod_ret in bench_rename test script Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 176/600] spi: tegra114: Remove unnecessary NULL-pointer checks Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 177/600] net: Fix slab-out-of-bounds in inet[6]_steal_sock Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 178/600] net-memcg: Fix scope of sockmem pressure indicators Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 179/600] ice: ice_aq_check_events: fix off-by-one check when filling buffer Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 180/600] crypto: caam - fix unchecked return value error Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 181/600] hwrng: iproc-rng200 - Implement suspend and resume calls Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 182/600] lwt: Fix return values of BPF xmit ops Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 183/600] lwt: Check LWTUNNEL_XMIT_CONTINUE strictly Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 184/600] fs: ocfs2: namei: check return value of ocfs2_add_entry() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 185/600] net: annotate data-races around sk->sk_lingertime Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 186/600] wifi: mwifiex: fix memory leak in mwifiex_histogram_read() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 187/600] wifi: mwifiex: Fix missed return in oob checks failed path Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 188/600] ARM: dts: Add .dts files missing from the build Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 189/600] samples/bpf: fix bio latency check with tracepoint Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 190/600] samples/bpf: fix broken map lookup probe Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 191/600] wifi: ath9k: fix races between ath9k_wmi_cmd and ath9k_wmi_ctrl_rx Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 192/600] wifi: ath9k: protect WMI command response buffer replacement with a lock Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 193/600] wifi: nl80211/cfg80211: add forgotten nla_policy for BSS color attribute Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 194/600] mac80211: make ieee80211_tx_info padding explicit Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 195/600] wifi: mwifiex: avoid possible NULL skb pointer dereference Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 196/600] Bluetooth: btusb: Do not call kfree_skb() under spin_lock_irqsave() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 197/600] arm64: mm: use ptep_clear() instead of pte_clear() in clear_flush() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 198/600] wifi: ath9k: use IS_ERR() with debugfs_create_dir() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 199/600] ice: avoid executing commands on other ports when driving sync Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 200/600] net: arcnet: Do not call kfree_skb() under local_irq_disable() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 201/600] mlxsw: i2c: Fix chunk size setting in output mailbox buffer Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 202/600] mlxsw: i2c: Limit single transaction buffer size Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 203/600] mlxsw: core_hwmon: Adjust module label names based on MTCAP sensor counter Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 204/600] hwmon: (tmp513) Fix the channel number in tmp51x_is_visible() Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 205/600] octeontx2-pf: Refactor schedular queue alloc/free calls Greg Kroah-Hartman
2023-09-11 13:43 ` [PATCH 6.1 206/600] octeontx2-pf: Fix PFC TX scheduler free Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 207/600] cteonxt2-pf: Fix backpressure config for multiple PFC priorities to work simultaneously Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 208/600] sfc: Check firmware supports Ethernet PTP filter Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 209/600] net/sched: sch_hfsc: Ensure inner classes have fsc curve Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 210/600] netrom: Deny concurrent connect() Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 211/600] drm/bridge: tc358764: Fix debug print parameter order Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 212/600] ASoC: cs43130: Fix numerator/denominator mixup Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 213/600] drm: bridge: dw-mipi-dsi: Fix enable/disable of DSI controller Greg Kroah-Hartman
2023-09-11 15:49 ` Ondřej Jirman
2023-09-12 10:34 ` Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 214/600] quota: factor out dquot_write_dquot() Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 215/600] quota: rename dquot_active() to inode_quota_active() Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 216/600] quota: add new helper dquot_active() Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 217/600] quota: fix dqput() to follow the guarantees dquot_srcu should provide Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 218/600] drm/amd/display: Do not set drr on pipe commit Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 219/600] drm/hyperv: Fix a compilation issue because of not including screen_info.h Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 220/600] ASoC: stac9766: fix build errors with REGMAP_AC97 Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 221/600] soc: qcom: ocmem: Add OCMEM hardware version print Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 222/600] soc: qcom: ocmem: Fix NUM_PORTS & NUM_MACROS macros Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 223/600] arm64: dts: qcom: sm6350: Fix ZAP region Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 224/600] arm64: dts: qcom: sm8250: correct dynamic power coefficients Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 225/600] arm64: dts: qcom: msm8916-l8150: correct light sensor VDDIO supply Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 226/600] arm64: dts: qcom: sm8250-edo: Add gpio line names for TLMM Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 227/600] arm64: dts: qcom: sm8250-edo: Add GPIO line names for PMIC GPIOs Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 228/600] arm64: dts: qcom: sm8250-edo: Rectify gpio-keys Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 229/600] arm64: dts: qcom: sc8280xp-crd: Correct vreg_misc_3p3 GPIO Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 230/600] arm64: dts: qcom: sc8280xp: Add missing SCM interconnect Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 231/600] arm64: dts: qcom: msm8996: Add missing interrupt to the USB2 controller Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 232/600] arm64: dts: qcom: sdm845-tama: Set serial indices and stdout-path Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 233/600] arm64: dts: qcom: sm8350: Fix CPU idle state residency times Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 234/600] arm64: dts: qcom: sm8350: Add missing LMH interrupts to cpufreq Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 235/600] arm64: dts: qcom: sm8350: Use proper CPU compatibles Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 236/600] arm64: dts: qcom: pm8350: fix thermal zone name Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 237/600] arm64: dts: qcom: pm8350b: " Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 238/600] arm64: dts: qcom: pmr735b: " Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 239/600] arm64: dts: qcom: pmk8350: fix ADC-TM compatible string Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 240/600] arm64: dts: qcom: sm8250: Mark PCIe hosts as DMA coherent Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 241/600] ARM: dts: stm32: Rename mdio0 to mdio Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 242/600] ARM: dts: stm32: YAML validation fails for Argon Boards Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 243/600] ARM: dts: stm32: adopt generic iio bindings for adc channels on emstamp-argon Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 244/600] ARM: dts: stm32: Add missing detach mailbox for emtrion emSBC-Argon Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 245/600] ARM: dts: stm32: YAML validation fails for Odyssey Boards Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 246/600] ARM: dts: stm32: Add missing detach mailbox for Odyssey SoM Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 247/600] ARM: dts: stm32: Update to generic ADC channel binding on DHSOM systems Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 248/600] ARM: dts: stm32: Add missing detach mailbox for DHCOM SoM Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 249/600] firmware: ti_sci: Use system_state to determine polling Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 250/600] drm/amdgpu: avoid integer overflow warning in amdgpu_device_resize_fb_bar() Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 251/600] ARM: dts: BCM53573: Drop nonexistent #usb-cells Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 252/600] ARM: dts: BCM53573: Add cells sizes to PCIe node Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 253/600] ARM: dts: BCM53573: Use updated "spi-gpio" binding properties Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 254/600] arm64: tegra: Fix HSUART for Jetson AGX Orin Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 255/600] arm64: dts: qcom: sm8250-sony-xperia: correct GPIO keys wakeup again Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 256/600] arm64: dts: qcom: pm6150l: Add missing short interrupt Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 257/600] arm64: dts: qcom: pm660l: " Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 258/600] arm64: dts: qcom: pmi8994: Add missing OVP interrupt Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 259/600] arm64: tegra: Fix HSUART for Smaug Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 260/600] drm/etnaviv: fix dumping of active MMU context Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 261/600] block: cleanup queue_wc_store Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 262/600] block: dont allow enabling a cache on devices that dont support it Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 263/600] x86/mm: Fix PAT bit missing from page protection modify mask Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 264/600] drm/bridge: anx7625: Use common macros for DP power sequencing commands Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 265/600] drm/bridge: anx7625: Use common macros for HDCP capabilities Greg Kroah-Hartman
2023-09-11 13:44 ` [PATCH 6.1 266/600] ARM: dts: samsung: s3c6410-mini6410: correct ethernet reg addresses (split) Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 267/600] ARM: dts: s5pv210: add dummy 5V regulator for backlight on SMDKv210 Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 268/600] ARM: dts: samsung: s5pv210-smdkv210: correct ethernet reg addresses (split) Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 269/600] drm: adv7511: Fix low refresh rate register for ADV7533/5 Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 270/600] ARM: dts: BCM53573: Fix Ethernet info for Luxul devices Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 271/600] arm64: dts: qcom: sdm845: Add missing RPMh power domain to GCC Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 272/600] arm64: dts: qcom: sdm845: Fix the min frequency of "ice_core_clk" Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 273/600] arm64: dts: qcom: msm8996-gemini: fix touchscreen VIO supply Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 274/600] drm/amdgpu: Update min() to min_t() in amdgpu_info_ioctl Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 275/600] md: Factor out is_md_suspended helper Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 276/600] md: Change active_io to percpu Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 277/600] md: restore noio_flag for the last mddev_resume() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 278/600] md/raid10: factor out dereference_rdev_and_rrdev() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 279/600] md/raid10: use dereference_rdev_and_rrdev() to get devices Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 280/600] md/md-bitmap: remove unnecessary local variable in backlog_store() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 281/600] md/md-bitmap: hold reconfig_mutex " Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 282/600] drm/msm: Update dev core dump to not print backwards Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 283/600] drm/tegra: dpaux: Fix incorrect return value of platform_get_irq Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 284/600] of: unittest: fix null pointer dereferencing in of_unittest_find_node_by_name() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 285/600] arm64: dts: qcom: sm8150: Fix the I2C7 interrupt Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 286/600] ARM: dts: BCM53573: Fix Tenda AC9 switch CPU port Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 287/600] drm/armada: Fix off-by-one error in armada_overlay_get_property() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 288/600] drm/repaper: Reduce temporary buffer size in repaper_fb_dirty() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 289/600] drm/panel: simple: Add missing connector type and pixel format for AUO T215HVN01 Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 290/600] ima: Remove deprecated IMA_TRUSTED_KEYRING Kconfig Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 291/600] drm: xlnx: zynqmp_dpsub: Add missing check for dma_set_mask Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 292/600] soc: qcom: smem: Fix incompatible types in comparison Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 293/600] drm/msm/mdp5: Dont leak some plane state Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 294/600] firmware: meson_sm: fix to avoid potential NULL pointer dereference Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 295/600] drm/msm/dpu: fix the irq index in dpu_encoder_phys_wb_wait_for_commit_done Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 296/600] smackfs: Prevent underflow in smk_set_cipso() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 297/600] drm/amd/pm: fix variable dereferenced issue in amdgpu_device_attr_create() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 298/600] drm/msm/a2xx: Call adreno_gpu_init() earlier Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 299/600] audit: fix possible soft lockup in __audit_inode_child() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 300/600] block/mq-deadline: use correct way to throttling write requests Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 301/600] io_uring: fix drain stalls by invalid SQE Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 302/600] drm/mediatek: dp: Add missing error checks in mtk_dp_parse_capabilities Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 303/600] bus: ti-sysc: Fix build warning for 64-bit build Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 304/600] drm/mediatek: Remove freeing not dynamic allocated memory Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 305/600] ARM: dts: qcom: ipq4019: correct SDHCI XO clock Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 306/600] drm/mediatek: Fix potential memory leak if vmap() fail Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 307/600] arm64: dts: qcom: apq8016-sbc: Fix ov5640 regulator supply names Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 308/600] arm64: dts: qcom: msm8998: Drop bus clock reference from MMSS SMMU Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 309/600] arm64: dts: qcom: msm8998: Add missing power domain to " Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 310/600] arm64: dts: qcom: msm8996: Fix dsi1 interrupts Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 311/600] arm64: dts: qcom: sc8280xp-x13s: Unreserve NC pins Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 312/600] bus: ti-sysc: Fix cast to enum warning Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 313/600] md/raid5-cache: fix a deadlock in r5l_exit_log() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 314/600] md/raid5-cache: fix null-ptr-deref for r5l_flush_stripe_to_raid() Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 315/600] firmware: cs_dsp: Fix new control name check Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 316/600] md/raid1: free the r1bio before waiting for blocked rdev Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 317/600] md/raid1: hold the barrier until handle_read_error() finishes Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 318/600] md: add error_handlers for raid0 and linear Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 319/600] md/raid0: Factor out helper for mapping and submitting a bio Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 320/600] md/raid0: Fix performance regression for large sequential writes Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 321/600] md: raid0: account for split bio in iostat accounting Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 322/600] ASoC: SOF: amd: clear dsp to host interrupt status Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 323/600] of: overlay: Call of_changeset_init() early Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 324/600] of: unittest: Fix overlay type in apply/revert check Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 325/600] ALSA: ac97: Fix possible error value of *rac97 Greg Kroah-Hartman
2023-09-11 13:45 ` [PATCH 6.1 326/600] ipmi:ssif: Add check for kstrdup Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 327/600] ipmi:ssif: Fix a memory leak when scanning for an adapter Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 328/600] clk: qcom: gpucc-sm6350: Introduce index-based clk lookup Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 329/600] clk: qcom: gpucc-sm6350: Fix clock source names Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 330/600] clk: qcom: gcc-sc8280xp: Add EMAC GDSCs Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 331/600] clk: qcom: gcc-sc8280xp: Add missing GDSC flags Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 332/600] dt-bindings: clock: qcom,gcc-sc8280xp: Add missing GDSCs Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 333/600] clk: qcom: gcc-sc8280xp: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 334/600] clk: rockchip: rk3568: Fix PLL rate setting for 78.75MHz Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 335/600] PCI: apple: Initialize pcie->nvecs before use Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 336/600] PCI: qcom-ep: Switch MHI bus master clock off during L1SS Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 337/600] drivers: clk: keystone: Fix parameter judgment in _of_pll_clk_init() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 338/600] PCI/DOE: Fix destroy_work_on_stack() race Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 339/600] clk: sunxi-ng: Modify mismatched function name Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 340/600] clk: qcom: gcc-sc7180: Fix up gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 341/600] EDAC/igen6: Fix the issue of no error events Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 342/600] ext4: correct grp validation in ext4_mb_good_group Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 343/600] ext4: avoid potential data overflow in next_linear_group Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 344/600] clk: qcom: gcc-sm8250: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 345/600] kvm/vfio: Prepare for accepting vfio device fd Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 346/600] kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 347/600] clk: qcom: reset: Use the correct type of sleep/delay based on length Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 348/600] clk: qcom: gcc-sm6350: Fix gcc_sdcc2_apps_clk_src Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 349/600] PCI: microchip: Correct the DED and SEC interrupt bit offsets Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 350/600] PCI: Mark NVIDIA T4 GPUs to avoid bus reset Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 351/600] pinctrl: mcp23s08: check return value of devm_kasprintf() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 352/600] PCI: Allow drivers to request exclusive config regions Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 353/600] PCI: Add locking to RMW PCI Express Capability Register accessors Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 354/600] PCI: pciehp: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 355/600] PCI/ASPM: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 356/600] clk: qcom: gcc-sm8450: Use floor ops for SDCC RCGs Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 357/600] clk: imx: pllv4: Fix SPLL2 MULT range Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 358/600] clk: imx: imx8ulp: update SPLL2 type Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 359/600] clk: imx8mp: fix sai4 clock Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 360/600] clk: imx: composite-8m: fix clock pauses when set_rate would be a no-op Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 361/600] powerpc/radix: Move some functions into #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 362/600] vfio/type1: fix cap_migration information leak Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 363/600] nvdimm: Fix memleak of pmu attr_groups in unregister_nvdimm_pmu() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 364/600] nvdimm: Fix dereference after free in register_nvdimm_pmu() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 365/600] powerpc/fadump: reset dump area size if fadump memory reserve fails Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 366/600] powerpc/perf: Convert fsl_emb notifier to state machine callbacks Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 367/600] drm/amdgpu: Use RMW accessors for changing LNKCTL Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 368/600] drm/radeon: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 369/600] net/mlx5: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 370/600] wifi: ath11k: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 371/600] wifi: ath10k: " Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 372/600] NFSv4.2: Rework scratch handling for READ_PLUS Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 373/600] NFSv4.2: Fix READ_PLUS smatch warnings Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 374/600] NFSv4.2: Fix up READ_PLUS alignment Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 375/600] NFSv4.2: Fix READ_PLUS size calculations Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 376/600] powerpc: Dont include lppaca.h in paca.h Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 377/600] powerpc/pseries: Rework lppaca_shared_proc() to avoid DEBUG_PREEMPT Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 378/600] nfs/blocklayout: Use the passed in gfp flags Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 379/600] powerpc/pseries: Fix hcall tracepoints with JUMP_LABEL=n Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 380/600] powerpc/mpc5xxx: Add missing fwnode_handle_put() Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 381/600] powerpc/iommu: Fix notifiers being shared by PCI and VIO buses Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 382/600] ext4: fix unttached inode after power cut with orphan file feature enabled Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 383/600] jfs: validate max amount of blocks before allocation Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 384/600] fs: lockd: avoid possible wrong NULL parameter Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 385/600] NFSD: da_addr_body field missing in some GETDEVICEINFO replies Greg Kroah-Hartman
2023-09-11 13:46 ` [PATCH 6.1 386/600] NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 387/600] NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 388/600] pNFS: Fix assignment of xprtdata.cred Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 389/600] cgroup/cpuset: Inherit parents load balance state in v2 Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 390/600] RDMA/qedr: Remove a duplicate assignment in irdma_query_ah() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 391/600] media: ov5640: fix low resolution image abnormal issue Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 392/600] media: ad5820: Drop unsupported ad5823 from i2c_ and of_device_id tables Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 393/600] media: i2c: tvp5150: check return value of devm_kasprintf() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 394/600] media: v4l2-core: Fix a potential resource leak in v4l2_fwnode_parse_link() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 395/600] iommu/amd/iommu_v2: Fix pasid_state refcount dec hit 0 warning on pasid unbind Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 396/600] iommu: rockchip: Fix directory table address encoding Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 397/600] drivers: usb: smsusb: fix error handling code in smsusb_init_device Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 398/600] media: dib7000p: Fix potential division by zero Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 399/600] media: dvb-usb: m920x: Fix a potential memory leak in m920x_i2c_xfer() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 400/600] media: cx24120: Add retval check for cx24120_message_send() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 401/600] RDMA/siw: Fabricate a GID on tun and loopback devices Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 402/600] scsi: hisi_sas: Fix warnings detected by sparse Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 403/600] scsi: hisi_sas: Fix normally completed I/O analysed as failed Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 404/600] dt-bindings: extcon: maxim,max77843: restrict connector properties Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 405/600] media: amphion: reinit vpu if reqbufs output 0 Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 406/600] media: amphion: add helper function to get id name Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 407/600] media: mtk-jpeg: Fix use after free bug due to uncanceled work Greg Kroah-Hartman
2023-10-10 14:16 ` 王征
2023-10-10 14:54 ` [PATCH " Greg Kroah-Hartman
2023-10-10 15:00 ` 王征
2023-09-11 13:47 ` [PATCH 6.1 408/600] media: rkvdec: increase max supported height for H.264 Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 409/600] media: amphion: fix CHECKED_RETURN issues reported by coverity Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 410/600] media: amphion: fix REVERSE_INULL " Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 411/600] media: amphion: fix UNINIT " Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 412/600] media: amphion: fix UNUSED_VALUE issue " Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 413/600] media: amphion: ensure the bitops dont cross boundaries Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 414/600] media: mediatek: vcodec: Return NULL if no vdec_fb is found Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 415/600] media: mediatek: vcodec: fix potential double free Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 416/600] media: mediatek: vcodec: fix resource leaks in vdec_msg_queue_init() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 417/600] usb: phy: mxs: fix getting wrong state with mxs_phy_is_otg_host() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 418/600] scsi: RDMA/srp: Fix residual handling Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 419/600] scsi: iscsi: Rename iscsi_set_param() to iscsi_if_set_param() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 420/600] scsi: iscsi: Add length check for nlattr payload Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 421/600] scsi: iscsi: Add strlen() check in iscsi_if_set{_host}_param() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 422/600] scsi: be2iscsi: Add length check when parsing nlattrs Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 423/600] scsi: qla4xxx: " Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 424/600] iio: accel: adxl313: Fix adxl313_i2c_id[] table Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 425/600] serial: sprd: Assign sprd_port after initialized to avoid wrong access Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 426/600] serial: sprd: Fix DMA buffer leak issue Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 427/600] x86/APM: drop the duplicate APM_MINOR_DEV macro Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 428/600] RDMA/rxe: Split rxe_run_task() into two subroutines Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 429/600] RDMA/rxe: Fix incomplete state save in rxe_requester Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 430/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_stop_io_on_error_cmd_read() directly Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 431/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_debug_cmd_read() directly Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 432/600] scsi: qedf: Do not touch __user pointer in qedf_dbg_fp_int_cmd_read() directly Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 433/600] RDMA/irdma: Replace one-element array with flexible-array member Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 434/600] coresight: tmc: Explicit type conversions to prevent integer overflow Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 435/600] interconnect: qcom: qcm2290: Enable sync state Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 436/600] dma-buf/sync_file: Fix docs syntax Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 437/600] driver core: test_async: fix an error code Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 438/600] driver core: Call dma_cleanup() on the test_remove path Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 439/600] kernfs: add stub helper for kernfs_generic_poll() Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 440/600] extcon: cht_wc: add POWER_SUPPLY dependency Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 441/600] iommu/mediatek: Remove unused "mapping" member from mtk_iommu_data Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 442/600] iommu/mediatek: Fix two IOMMU share pagetable issue Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 443/600] iommu/sprd: Add missing force_aperture Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 444/600] RDMA/hns: Fix port active speed Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 445/600] RDMA/hns: Fix incorrect post-send with direct wqe of wr-list Greg Kroah-Hartman
2023-09-11 13:47 ` [PATCH 6.1 446/600] RDMA/hns: Fix inaccurate error label name in init instance Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 447/600] RDMA/hns: Fix CQ and QP cache affinity Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 448/600] IB/uverbs: Fix an potential error pointer dereference Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 449/600] fsi: aspeed: Reset master errors after CFAM reset Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 450/600] iommu/qcom: Disable and reset context bank before programming Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 451/600] iommu/vt-d: Fix to flush cache of PASID directory table Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 452/600] platform/x86: dell-sysman: Fix reference leak Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 453/600] media: cec: core: add adap_nb_transmit_canceled() callback Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 454/600] media: cec: core: add adap_unconfigured() callback Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 455/600] media: go7007: Remove redundant if statement Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 456/600] media: venus: hfi_venus: Only consider sys_idle_indicator on V1 Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 457/600] docs: ABI: fix spelling/grammar in SBEFIFO timeout interface Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 458/600] USB: gadget: core: Add missing kerneldoc for vbus_work Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 459/600] USB: gadget: f_mass_storage: Fix unused variable warning Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 460/600] drivers: base: Free devm resources when unregistering a device Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 461/600] HID: input: Support devices sending Eraser without Invert Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 462/600] media: ov5640: Enable MIPI interface in ov5640_set_power_mipi() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 463/600] media: ov5640: Fix initial RESETB state and annotate timings Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 464/600] media: i2c: ov2680: Set V4L2_CTRL_FLAG_MODIFY_LAYOUT on flips Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 465/600] media: ov2680: Remove auto-gain and auto-exposure controls Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 466/600] media: ov2680: Fix ov2680_bayer_order() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 467/600] media: ov2680: Fix vflip / hflip set functions Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 468/600] media: ov2680: Remove VIDEO_V4L2_SUBDEV_API ifdef-s Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 469/600] media: ov2680: Dont take the lock for try_fmt calls Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 470/600] media: ov2680: Add ov2680_fill_format() helper function Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 471/600] media: ov2680: Fix ov2680_set_fmt() which == V4L2_SUBDEV_FORMAT_TRY not working Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 472/600] media: ov2680: Fix regulators being left enabled on ov2680_power_on() errors Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 473/600] media: i2c: rdacm21: Fix uninitialized value Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 474/600] f2fs: fix to avoid mmap vs set_compress_option case Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 475/600] f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 476/600] f2fs: Only lfs mode is allowed with zoned block device feature Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 477/600] Revert "f2fs: fix to do sanity check on extent cache correctly" Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 478/600] cgroup:namespace: Remove unused cgroup_namespaces_init() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 479/600] coresight: trbe: Fix TRBE potential sleep in atomic context Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 480/600] RDMA/irdma: Prevent zero-length STAG registration Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 481/600] scsi: core: Use 32-bit hostnum in scsi_host_lookup() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 482/600] scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 483/600] interconnect: qcom: sm8450: Enable sync_state Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 484/600] interconnect: qcom: bcm-voter: Improve enable_mask handling Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 485/600] interconnect: qcom: bcm-voter: Use enable_maks for keepalive voting Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 486/600] serial: tegra: handle clk prepare error in tegra_uart_hw_init() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 487/600] amba: bus: fix refcount leak Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 488/600] Revert "IB/isert: Fix incorrect release of isert connection" Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 489/600] RDMA/siw: Balance the reference of cep->kref in the error path Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 490/600] RDMA/siw: Correct wrong debug message Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 491/600] RDMA/efa: Fix wrong resources deallocation order Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 492/600] HID: logitech-dj: Fix error handling in logi_dj_recv_switch_to_dj_mode() Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 493/600] HID: uclogic: Correct devm device reference for hidinput input_dev name Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 494/600] HID: multitouch: " Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 495/600] platform/x86/amd/pmf: Fix a missing cleanup path Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 496/600] tick/rcu: Fix false positive "softirq work is pending" messages Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 497/600] x86/speculation: Mark all Skylake CPUs as vulnerable to GDS Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 498/600] tracing: Remove extra space at the end of hwlat_detector/mode Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 499/600] tracing: Fix race issue between cpu buffer write and swap Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 500/600] mtd: rawnand: brcmnand: Fix mtd oobsize Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 501/600] dmaengine: idxd: Modify the dependence of attribute pasid_enabled Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 502/600] phy/rockchip: inno-hdmi: use correct vco_div_5 macro on rk3328 Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 503/600] phy/rockchip: inno-hdmi: round fractal pixclock in rk3328 recalc_rate Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 504/600] phy/rockchip: inno-hdmi: do not power on rk3328 post pll on reg write Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 505/600] rpmsg: glink: Add check for kstrdup Greg Kroah-Hartman
2023-09-11 13:48 ` [PATCH 6.1 506/600] leds: pwm: Fix error code in led_pwm_create_fwnode() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 507/600] leds: multicolor: Use rounded division when calculating color components Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 508/600] leds: Fix BUG_ON check for LED_COLOR_ID_MULTI that is always false Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 509/600] leds: trigger: tty: Do not use LED_ON/OFF constants, use led_blink_set_oneshot instead Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 510/600] mtd: spi-nor: Check bus width while setting QE bit Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 511/600] mtd: rawnand: fsmc: handle clk prepare error in fsmc_nand_resume() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 512/600] um: Fix hostaudio build errors Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 513/600] dmaengine: ste_dma40: Add missing IRQ check in d40_probe Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 514/600] Drivers: hv: vmbus: Dont dereference ACPI root object handle Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 515/600] cpufreq: Fix the race condition while updating the transition_task of policy Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 516/600] virtio_ring: fix avail_wrap_counter in virtqueue_add_packed Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 517/600] igmp: limit igmpv3_newpack() packet size to IP_MAX_MTU Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 518/600] netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 519/600] netfilter: nft_exthdr: Fix non-linear header modification Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 520/600] netfilter: xt_u32: validate user space input Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 521/600] netfilter: xt_sctp: validate the flag_info count Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 522/600] skbuff: skb_segment, Call zero copy functions before using skbuff frags Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 523/600] igb: set max size RX buffer when store bad packet is enabled Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 524/600] PM / devfreq: Fix leak in devfreq_dev_release() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 525/600] ALSA: pcm: Fix missing fixup call in compat hw_refine ioctl Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 526/600] rcu: dump vmalloc memory info safely Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 527/600] printk: ringbuffer: Fix truncating buffer size min_t cast Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 528/600] scsi: core: Fix the scsi_set_resid() documentation Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 529/600] mm/vmalloc: add a safer version of find_vm_area() for debug Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 530/600] cpu/hotplug: Prevent self deadlock on CPU hot-unplug Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 531/600] media: i2c: ccs: Check rules is non-NULL Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 532/600] media: i2c: Add a camera sensor top level menu Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 533/600] PCI: rockchip: Use 64-bit mask on MSI 64-bit PCI address Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 534/600] ipmi_si: fix a memleak in try_smi_init() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 535/600] ARM: OMAP2+: Fix -Warray-bounds warning in _pwrdm_state_switch() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 536/600] XArray: Do not return sibling entries from xa_load() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 537/600] io_uring: break iopolling on signal Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 538/600] backlight/gpio_backlight: Compare against struct fb_info.device Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 539/600] backlight/bd6107: " Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 540/600] backlight/lv5207lp: " Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 541/600] drm/amd/display: register edp_backlight_control() for DCN301 Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 542/600] xtensa: PMU: fix base address for the newer hardware Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 543/600] LoongArch: mm: Add p?d_leaf() definitions Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 544/600] i3c: master: svc: fix probe failure when no i3c device exist Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 545/600] arm64: csum: Fix OoB access in IP checksum code for negative lengths Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 546/600] ALSA: hda/cirrus: Fix broken audio on hardware with two CS42L42 codecs Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 547/600] media: dvb: symbol fixup for dvb_attach() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 548/600] media: venus: hfi_venus: Write to VIDC_CTRL_INIT after unmasking interrupts Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 549/600] Revert "scsi: qla2xxx: Fix buffer overrun" Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 550/600] scsi: mpt3sas: Perform additional retries if doorbell read returns 0 Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 551/600] PCI: Free released resource after coalescing Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 552/600] PCI: hv: Fix a crash in hv_pci_restore_msi_msg() during hibernation Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 553/600] PCI/PM: Only read PCI_PM_CTRL register when available Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 554/600] ntb: Drop packets when qp link is down Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 555/600] ntb: Clean up tx tail index on link down Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 556/600] ntb: Fix calculation ntb_transport_tx_free_entry() Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 557/600] Revert "PCI: Mark NVIDIA T4 GPUs to avoid bus reset" Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 558/600] block: dont add or resize partition on the disk with GENHD_FL_NO_PART Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 559/600] procfs: block chmod on /proc/thread-self/comm Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 560/600] parisc: Fix /proc/cpuinfo output for lscpu Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 561/600] drm/amd/display: Add smu write msg id fail retry process Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 562/600] bpf: Fix issue in verifying allow_ptr_leaks Greg Kroah-Hartman
2023-09-14 8:51 ` Luis Gerhorst
2023-09-16 11:35 ` Greg KH
2023-09-19 6:26 ` Daniel Borkmann
2023-09-19 8:32 ` Greg KH
2023-09-19 8:39 ` Alexei Starovoitov
2023-09-19 9:26 ` Greg KH
2023-09-19 10:15 ` Daniel Borkmann
2023-09-11 13:49 ` [PATCH 6.1 563/600] dlm: fix plock lookup when using multiple lockspaces Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 564/600] dccp: Fix out of bounds access in DCCP error handler Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 565/600] x86/sev: Make enc_dec_hypercall() accept a size instead of npages Greg Kroah-Hartman
2023-09-11 13:49 ` [PATCH 6.1 566/600] r8169: fix ASPM-related issues on a number of systems with NIC version from RTL8168h Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 567/600] X.509: if signature is unsupported skip validation Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 568/600] net: handle ARPHRD_PPP in dev_is_mac_header_xmit() Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 569/600] fsverity: skip PKCS#7 parser when keyring is empty Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 570/600] x86/MCE: Always save CS register on AMD Zen IF Poison errors Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 571/600] platform/chrome: chromeos_acpi: print hex string for ACPI_TYPE_BUFFER Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 572/600] mmc: renesas_sdhi: register irqs before registering controller Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 573/600] pstore/ram: Check start of empty przs during init Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 574/600] arm64: sdei: abort running SDEI handlers during crash Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 575/600] s390/dcssblk: fix kernel crash with list_add corruption Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 576/600] s390/ipl: add missing secure/has_secure file to ipl type unknown Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 577/600] s390/dasd: fix string length handling Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 578/600] crypto: stm32 - fix loop iterating through scatterlist for DMA Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 579/600] cpufreq: brcmstb-avs-cpufreq: Fix -Warray-bounds bug Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 580/600] of: property: fw_devlink: Add a devlink for panel followers Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 581/600] usb: typec: tcpm: set initial svdm version based on pd revision Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 582/600] usb: typec: bus: verify partner exists in typec_altmode_attention Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 583/600] USB: core: Unite old scheme and new scheme descriptor reads Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 584/600] USB: core: Change usb_get_device_descriptor() API Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 585/600] USB: core: Fix race by not overwriting udev->descriptor in hub_port_init() Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 586/600] USB: core: Fix oversight in SuperSpeed initialization Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 587/600] x86/sgx: Break up long non-preemptible delays in sgx_vepc_release() Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 588/600] perf/x86/uncore: Correct the number of CHAs on EMR Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 589/600] serial: sc16is7xx: remove obsolete out_thread label Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 590/600] serial: sc16is7xx: fix regression with GPIO configuration Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 591/600] net: remove duplicate INDIRECT_CALLABLE_DECLARE of udp[6]_ehashfn Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 592/600] tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 593/600] Revert "drm/amd/display: Do not set drr on pipe commit" Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 594/600] md: Free resources in __md_stop Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 595/600] NFSv4.2: Fix a potential double free with READ_PLUS Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 596/600] NFSv4.2: Rework scratch handling for READ_PLUS (again) Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 597/600] md: fix regression for null-ptr-deference in __md_stop() Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 598/600] clk: Mark a fwnode as initialized when using CLK_OF_DECLARE() macro Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 599/600] treewide: Fix probing of devices in DT overlays Greg Kroah-Hartman
2023-09-11 13:50 ` [PATCH 6.1 600/600] clk: Avoid invalid function names in CLK_OF_DECLARE() Greg Kroah-Hartman
2023-09-11 20:13 ` [PATCH 6.1 000/600] 6.1.53-rc1 review Shuah Khan
2023-09-11 20:58 ` Daniel Díaz
2023-09-12 2:25 ` Daniel Díaz
2023-09-12 8:49 ` Naresh Kamboju
2023-09-12 9:03 ` Greg Kroah-Hartman
2023-09-12 10:32 ` Greg Kroah-Hartman
2023-09-12 11:56 ` Naresh Kamboju
2023-09-12 12:01 ` Greg Kroah-Hartman
2023-09-13 13:55 ` Naresh Kamboju
2023-09-12 5:50 ` Bagas Sanjaya
2023-09-12 9:00 ` Sudip Mukherjee (Codethink)
2023-09-12 9:03 ` Naresh Kamboju
2023-09-12 10:27 ` Takeshi Ogasawara
2023-09-12 12:37 ` Conor Dooley
2023-09-12 15:10 ` Jon Hunter
2023-09-12 17:35 ` Florian Fainelli
2023-09-12 18:35 ` Guenter Roeck
2023-09-13 2:40 ` Ron Economos
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).