6.6.52-rc1 review
Subsystems (6)
Greg Kroah-Hartman
maintainercover 6.6.52-rc1 review
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +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.6.52-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.6.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <[email protected]>
Linux 6.6.52-rc1
William Qiu <[email protected]>
riscv: dts: starfive: add assigned-clock* to limit frquency
Arseniy Krasnov <[email protected]>
ASoC: meson: axg-card: fix 'use-after-free'
Mika Westerberg <[email protected]>
pinctrl: meteorlake: Add Arrow Lake-H/U ACPI ID
David Howells <[email protected]>
cifs: Fix signature miscalculation
Su Hui <[email protected]>
ASoC: codecs: avoid possible garbage value in peb2466_reg_read()
Nikita Zhandarovich <[email protected]>
drm/i915/guc: prevent a possible int overflow in wq offsets
Jinjie Ruan <[email protected]>
spi: geni-qcom: Fix incorrect free_irq() sequence
Jinjie Ruan <[email protected]>
spi: geni-qcom: Undo runtime PM changes at driver exit time
David (Ming Qiang) Wu <[email protected]>
drm/amd/amdgpu: apply command submission parser for JPEG v1
Alex Deucher <[email protected]>
drm/amdgpu/atomfirmware: Silence UBSAN warning
Ben Skeggs <[email protected]>
drm/nouveau/fb: restore init() for ramgp102
T.J. Mercier <[email protected]>
dma-buf: heaps: Fix off-by-one in CMA heap fault handler
T.J. Mercier <[email protected]>
drm/syncobj: Fix syncobj leak in drm_syncobj_eventfd_ioctl
Krzysztof Kozlowski <[email protected]>
soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
Han Xu <[email protected]>
spi: nxp-fspi: fix the KASAN report out-of-bounds bug
Steven Rostedt <[email protected]>
tracing/osnoise: Fix build when timerlat is not enabled
Sean Anderson <[email protected]>
net: dpaa: Pad packets to ETH_ZLEN
Xiaoliang Yang <[email protected]>
net: dsa: felix: ignore pending status of TAS module when it's disabled
Florian Westphal <[email protected]>
netfilter: nft_socket: make cgroupsv2 matching work with namespaces
Florian Westphal <[email protected]>
netfilter: nft_socket: fix sk refcount leaks
Sean Anderson <[email protected]>
selftests: net: csum: Fix checksums for packets with non-zero padding
Jacky Chou <[email protected]>
net: ftgmac100: Enable TX interrupt to avoid TX timeout
Naveen Mamindlapalli <[email protected]>
octeontx2-af: Modify SMQ flush sequence to drop packets
Muhammad Usama Anjum <[email protected]>
fou: fix initialization of grc
Benjamin Poirier <[email protected]>
net/mlx5: Fix bridge mode operations when there are no VFs
Carolina Jubran <[email protected]>
net/mlx5: Verify support for scheduling element and TSAR type
Cosmin Ratiu <[email protected]>
net/mlx5: Correct TASR typo into TSAR
Carolina Jubran <[email protected]>
net/mlx5: Add missing masks and QoS bit masks for scheduling elements
Carolina Jubran <[email protected]>
net/mlx5: Explicitly set scheduling element and TSAR type
Shahar Shitrit <[email protected]>
net/mlx5e: Add missing link mode to ptys2ext_ethtool_map
Patrisious Haddad <[email protected]>
IB/mlx5: Rename 400G_8X speed to comply to naming convention
Shahar Shitrit <[email protected]>
net/mlx5e: Add missing link modes to ptys2ethtool_map
Maher Sanalla <[email protected]>
net/mlx5: Update the list of the PCI supported devices
Sriram Yagnaraman <[email protected]>
igb: Always call igb_xdp_ring_update_tail() under Tx lock
Michal Schmidt <[email protected]>
ice: fix VSI lists confusion when adding VLANs
Jacob Keller <[email protected]>
ice: fix accounting for filters shared by multiple VSIs
Martyna Szapar-Mudlaw <[email protected]>
ice: Fix lldp packets dropping after changing the number of channels
Patryk Biel <[email protected]>
hwmon: (pmbus) Conditionally clear individual status bits for pmbus rev >= 1.2
Michal Luczaj <[email protected]>
selftests/bpf: Support SOCK_STREAM in unix_inet_redir_to_connected()
peng guo <[email protected]>
cxl/core: Fix incorrect vendor debug UUID define
Andy Shevchenko <[email protected]>
eeprom: digsy_mtc: Fix 93xx46 driver probe failure
Ilya Bakoulin <[email protected]>
drm/amd/display: Fix FEC_READY write on DP LT
Cruise <[email protected]>
drm/amd/display: Disable error correction if it's not supported
FUKAUMI Naoki <[email protected]>
arm64: dts: rockchip: fix PMIC interrupt pin in pinctrl for ROCK Pi E
Sean Anderson <[email protected]>
net: xilinx: axienet: Fix race in axienet_stop
Linus Torvalds <[email protected]>
mm: avoid leaving partial pfn mappings around in error case
Anirudh Rayabharam (Microsoft) <[email protected]>
x86/hyperv: fix kexec crash due to VP assist page corruption
Mikulas Patocka <[email protected]>
dm-integrity: fix a race condition when accessing recalc_sector
Willem de Bruijn <[email protected]>
net: tighten bad gso csum offset check in virtio_net_hdr
Lorenzo Stoakes <[email protected]>
minmax: reduce min/max macro expansion in atomisp driver
Quentin Schulz <[email protected]>
arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog on RK3399 Puma
Quentin Schulz <[email protected]>
arm64: dts: rockchip: fix eMMC/SPI corruption when audio has been used on RK3399 Puma
Matthieu Baerts (NGI0) <[email protected]>
selftests: mptcp: join: restrict fullmesh endp on 1st sf
Edward Adam Davis <[email protected]>
mptcp: pm: Fix uaf in __timer_delete_sync
Hans de Goede <[email protected]>
platform/x86: panasonic-laptop: Allocate 1 entry extra in the sinf array
Hans de Goede <[email protected]>
platform/x86: panasonic-laptop: Fix SINF array out of bounds accesses
Trond Myklebust <[email protected]>
NFS: Avoid unnecessary rescanning of the per-server delegation list
Trond Myklebust <[email protected]>
NFSv4: Fix clearing of layout segments in layoutreturn
ChenXiaoSong <[email protected]>
smb/server: fix return value of smb2_open()
Alexander Gordeev <[email protected]>
s390/mm: Prevent lowcore vs identity mapping overlap
Takashi Iwai <[email protected]>
Input: i8042 - add Fujitsu Lifebook E756 to i8042 quirk table
Rob Clark <[email protected]>
drm/msm/adreno: Fix error return if missing firmware-name
Maximilian Luz <[email protected]>
platform/surface: aggregator_registry: Add support for Surface Laptop Go 3
Maximilian Luz <[email protected]>
platform/surface: aggregator_registry: Add Support for Surface Pro 10
Anders Roxell <[email protected]>
scripts: kconfig: merge_config: config files: add a trailing newline
Dmitry Savin <[email protected]>
HID: multitouch: Add support for GT7868Q
Jonathan Denose <[email protected]>
Input: synaptics - enable SMBus for HP Elitebook 840 G2
Marek Vasut <[email protected]>
Input: ads7846 - ratelimit the spi_sync error message
Jeff Layton <[email protected]>
btrfs: update target inode's ctime on unlink
Peiyang Wang <[email protected]>
net: hns3: use correct release function during uninitialization
Bert Karwatzki <[email protected]>
wifi: mt76: mt7921: fix NULL pointer access in mt7921_ipv6_addr_change
Christophe Leroy <[email protected]>
powerpc/mm: Fix boot warning with hugepages and CONFIG_DEBUG_VIRTUAL
Pawel Dembicki <[email protected]>
net: phy: vitesse: repair vsc73xx autonegotiation
Bouke Sybren Haarsma <[email protected]>
drm: panel-orientation-quirks: Add quirk for Ayn Loki Max
Bouke Sybren Haarsma <[email protected]>
drm: panel-orientation-quirks: Add quirk for Ayn Loki Zero
Moon Yeounsu <[email protected]>
net: ethernet: use ip_hdrlen() instead of bit shift
Foster Snowhill <[email protected]>
usbnet: ipheth: fix carrier detection in modes 1 and 4
Foster Snowhill <[email protected]>
usbnet: ipheth: do not stop RX on failing RX callback
Foster Snowhill <[email protected]>
usbnet: ipheth: drop RX URBs with no payload
Foster Snowhill <[email protected]>
usbnet: ipheth: remove extraneous rx URB length check
Namjae Jeon <[email protected]>
ksmbd: override fsids for smb2_query_info()
Namjae Jeon <[email protected]>
ksmbd: override fsids for share path check
John Thomson <[email protected]>
nvmem: u-boot-env: error if NVMEM device is too small
Rafał Miłecki <[email protected]>
nvmem: u-boot-env: improve coding style
Rafał Miłecki <[email protected]>
nvmem: u-boot-env: use nvmem device helpers
Rafał Miłecki <[email protected]>
nvmem: u-boot-env: use nvmem_add_one_cell() nvmem subsystem helper
Rafał Miłecki <[email protected]>
nvmem: core: add nvmem_dev_size() helper
Dumitru Ceclan <[email protected]>
iio: adc: ad7124: fix DT configuration parsing
Jonathan Cameron <[email protected]>
iio: adc: ad7124: Switch from of specific to fwnode based property handling
Jonathan Cameron <[email protected]>
device property: Introduce device_for_each_child_node_scoped()
Jonathan Cameron <[email protected]>
device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.
-------------
Diffstat:
Makefile | 4 +- arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts | 2 +- arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 36 ++++++++- arch/powerpc/kernel/setup-common.c | 1 + arch/powerpc/mm/mem.c | 2 - .../dts/starfive/jh7110-starfive-visionfive-2.dtsi | 4 + arch/s390/kernel/setup.c | 19 ++++- arch/x86/hyperv/hv_init.c | 5 +- arch/x86/include/asm/mshyperv.h | 1 - arch/x86/kernel/cpu/mshyperv.c | 4 +- drivers/cxl/cxlmem.h | 2 +- drivers/dma-buf/heaps/cma_heap.c | 2 +- drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c | 76 +++++++++++++++++- drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.h | 11 +++ .../amd/display/dc/link/protocols/link_dp_phy.c | 53 ++++++------- drivers/gpu/drm/amd/include/atomfirmware.h | 4 +- drivers/gpu/drm/drm_panel_orientation_quirks.c | 12 +++ drivers/gpu/drm/drm_syncobj.c | 17 +++- drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 4 +- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h | 2 + drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp102.c | 1 + drivers/hid/hid-ids.h | 2 + drivers/hid/hid-multitouch.c | 33 ++++++++ drivers/hwmon/pmbus/pmbus.h | 6 ++ drivers/hwmon/pmbus/pmbus_core.c | 17 +++- drivers/iio/adc/ad7124.c | 58 ++++++-------- drivers/infiniband/hw/mlx5/main.c | 2 +- drivers/input/mouse/synaptics.c | 1 + drivers/input/serio/i8042-acpipnpio.h | 9 +++ drivers/input/touchscreen/ads7846.c | 2 +- drivers/md/dm-integrity.c | 4 +- drivers/misc/eeprom/digsy_mtc_eeprom.c | 2 +- drivers/net/dsa/ocelot/felix_vsc9959.c | 11 ++- drivers/net/ethernet/faraday/ftgmac100.h | 2 +- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 9 ++- .../ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 2 +- drivers/net/ethernet/intel/ice/ice_lib.c | 15 ++-- drivers/net/ethernet/intel/ice/ice_switch.c | 4 +- drivers/net/ethernet/intel/igb/igb_main.c | 17 +++- drivers/net/ethernet/jme.c | 10 +-- drivers/net/ethernet/marvell/octeontx2/af/rvu.h | 3 +- .../net/ethernet/marvell/octeontx2/af/rvu_nix.c | 59 +++++++++++--- .../net/ethernet/mellanox/mlx5/core/en_ethtool.c | 10 +++ .../net/ethernet/mellanox/mlx5/core/esw/legacy.c | 4 +- drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c | 51 +++++++----- drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 + drivers/net/ethernet/mellanox/mlx5/core/port.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/qos.c | 7 ++ drivers/net/ethernet/xilinx/xilinx_axienet.h | 3 + drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 8 ++ drivers/net/phy/vitesse.c | 14 ---- drivers/net/usb/ipheth.c | 18 +++-- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 2 +- drivers/nvmem/core.c | 13 ++++ drivers/nvmem/u-boot-env.c | 91 +++++++++++----------- drivers/pinctrl/intel/pinctrl-meteorlake.c | 1 + .../platform/surface/surface_aggregator_registry.c | 8 +- drivers/platform/x86/panasonic-laptop.c | 58 +++++++++++--- drivers/soundwire/stream.c | 8 +- drivers/spi/spi-geni-qcom.c | 17 ++-- drivers/spi/spi-nxp-fspi.c | 5 +- drivers/staging/media/atomisp/pci/sh_css_frac.h | 26 +++++-- fs/btrfs/inode.c | 1 + fs/nfs/delegation.c | 15 ++-- fs/nfs/nfs4proc.c | 9 ++- fs/nfs/pnfs.c | 5 +- fs/smb/client/cifsencrypt.c | 2 +- fs/smb/server/mgmt/share_config.c | 15 +++- fs/smb/server/mgmt/share_config.h | 4 +- fs/smb/server/mgmt/tree_connect.c | 9 ++- fs/smb/server/mgmt/tree_connect.h | 4 +- fs/smb/server/smb2pdu.c | 11 ++- fs/smb/server/smb_common.c | 9 ++- fs/smb/server/smb_common.h | 2 + include/linux/mlx5/mlx5_ifc.h | 12 ++- include/linux/mlx5/port.h | 2 +- include/linux/nvmem-consumer.h | 1 + include/linux/property.h | 8 ++ include/linux/virtio_net.h | 3 +- kernel/trace/trace_osnoise.c | 10 +-- mm/memory.c | 27 +++++-- net/ipv4/fou_core.c | 4 +- net/mptcp/pm_netlink.c | 13 +++- net/netfilter/nft_socket.c | 48 ++++++++++-- scripts/kconfig/merge_config.sh | 2 + sound/soc/codecs/peb2466.c | 3 +- sound/soc/meson/axg-card.c | 3 +- .../selftests/bpf/prog_tests/sockmap_listen.c | 3 +- tools/testing/selftests/net/csum.c | 16 +++- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 +- 92 files changed, 797 insertions(+), 329 deletions(-)
Greg Kroah-Hartman
maintainerPATCH 1/91 device property: Add cleanup.h based fwnode_handle_put() scope based cleanup.
6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Cameron <[email protected]>
[ Upstream commit 59ed5e2d505bf5f9b4af64d0021cd0c96aec1f7c ]
Useful where the fwnode_handle was obtained from a call such as fwnode_find_reference() as it will safely do nothing if IS_ERR() is true and will automatically release the reference on the variable leaving scope.
Stable-dep-of: 61cbfb5368dd ("iio: adc: ad7124: fix DT configuration parsing")
--- include/linux/property.h | 3 +++ 1 file changed, 3 insertions(+)
include/linux/property.h +3 -0
@@ -11,6 +11,7 @@#define _LINUX_PROPERTY_H_#include <linux/bits.h> +#include <linux/cleanup.h> #include <linux/fwnode.h> #include <linux/stddef.h> #include <linux/types.h>
@@ -175,6 +176,8 @@ struct fwnode_handle *device_get_named_child_node(const struct device *dev,struct fwnode_handle *fwnode_handle_get (struct fwnode_handle *fwnode);void fwnode_handle_put (struct fwnode_handle *fwnode); +DEFINE_FREE(fwnode_handle, struct fwnode_handle *, fwnode_handle_put(_T)) +int fwnode_irq_get (const struct fwnode_handle *fwnode,unsigned int index);int fwnode_irq_get_byname (const struct fwnode_handle *fwnode,const char *name);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 2/91 device property: Introduce device_for_each_child_node_scoped()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Cameron <[email protected]>
[ Upstream commit 365130fd47af6d4317aa16a407874b699ab8d8cb ]
Similar to recently propose for_each_child_of_node_scoped() this new version of the loop macro instantiates a new local struct fwnode_handle * that uses the __free(fwnode_handle) auto cleanup handling so that if a reference to a node is held on early exit from the loop the reference will be released. If the loop runs to completion, the child pointer will be NULL and no action will be taken.
The reason this is useful is that it removes the need for fwnode_handle_put() on early loop exits. If there is a need to retain the reference, then return_ptr(child) or no_free_ptr(child) may be used to safely disable the auto cleanup.
Stable-dep-of: 61cbfb5368dd ("iio: adc: ad7124: fix DT configuration parsing")
--- include/linux/property.h | 5 +++++ 1 file changed, 5 insertions(+)
include/linux/property.h +5 -0
@@ -168,6 +168,11 @@ struct fwnode_handle *device_get_next_child_node(const struct device *dev,for (child =device_get_next_child_node (dev,NULL ); child; \ child = device_get_next_child_node(dev, child)) +#define device_for_each_child_node_scoped (dev, child) \ + for (struct fwnode_handle *child __free(fwnode_handle) = \ + device_get_next_child_node(dev, NULL); \ + child; child = device_get_next_child_node(dev, child)) +struct fwnode_handle *fwnode_get_named_child_node (const struct fwnode_handle *fwnode,const char *childname); struct fwnode_handle *device_get_named_child_node(const struct device *dev,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 3/91 iio: adc: ad7124: Switch from of specific to fwnode based property handling
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Cameron <[email protected]>
[ Upstream commit a6eaf02b82744b424b9b2c74847282deb2c6f77b ]
Using the generic firmware data access functions from property.h provides a number of advantages:
1) Works with different firmware types.
2) Doesn't provide a 'bad' example for new IIO drivers.
3) Lets us use the new _scoped() loops with automatic reference count cleanup for fwnode_handle
Stable-dep-of: 61cbfb5368dd ("iio: adc: ad7124: fix DT configuration parsing")
--- drivers/iio/adc/ad7124.c | 55 +++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 32 deletions(-)
drivers/iio/adc/ad7124.c +23 -32
@@ -14,7 +14,8 @@#include <linux/kernel.h> #include <linux/kfifo.h> #include <linux/module.h> -#include <linux/of.h> +#include <linux/mod_devicetable.h> +#include <linux/property.h> #include <linux/regulator/consumer.h> #include <linux/spi/spi.h>
@@ -812,22 +813,19 @@ static int ad7124_check_chip_id(struct ad7124_state *st)return 0 ; } -static int ad7124_of_parse_channel_config (struct iio_dev *indio_dev, -struct device_node *np) +static int ad7124_parse_channel_config (struct iio_dev *indio_dev, +struct device *dev) {struct ad7124_state *st =iio_priv (indio_dev);struct ad7124_channel_config *cfg;struct ad7124_channel *channels; -struct device_node *child;struct iio_chan_spec *chan;unsigned int ain[2 ], channel =0 , tmp;int ret; - st->num_channels =of_get_available_child_count (np); -if (!st->num_channels) { -dev_err (indio_dev->dev.parent,"no channel children\n" ); -return -ENODEV ; - } + st->num_channels =device_get_child_node_count (dev); +if (!st->num_channels) +return dev_err_probe (dev, -ENODEV ,"no channel children\n" ); chan =devm_kcalloc (indio_dev->dev.parent, st->num_channels,sizeof (*chan),GFP_KERNEL );
@@ -843,39 +841,38 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev, indio_dev->num_channels = st->num_channels; st->channels = channels; -for_each_available_child_of_node (np, child) { +device_for_each_child_node_scoped (dev, child) { cfg = &st->channels[channel].cfg; - ret =of_property_read_u32 (child,"reg" , &channel); + ret =fwnode_property_read_u32 (child,"reg" , &channel);if (ret) - goto err; +return ret; -if (channel >= indio_dev->num_channels) { -dev_err (indio_dev->dev.parent, +if (channel >= indio_dev->num_channels) +return dev_err_probe (dev, -EINVAL ,"Channel index >= number of channels\n" ); - ret = -EINVAL ; - goto err; - } - ret =of_property_read_u32_array (child,"diff-channels" , - ain,2 ); + ret =fwnode_property_read_u32_array (child,"diff-channels" , + ain,2 );if (ret) - goto err; +return ret; st->channels[channel].nr = channel; st->channels[channel].ain =AD7124_CHANNEL_AINP (ain[0 ]) |AD7124_CHANNEL_AINM (ain[1 ]); - cfg->bipolar =of_property_read_bool (child,"bipolar" ); + cfg->bipolar =fwnode_property_read_bool (child,"bipolar" ); - ret =of_property_read_u32 (child,"adi,reference-select" , &tmp); + ret =fwnode_property_read_u32 (child,"adi,reference-select" , &tmp);if (ret) cfg->refsel =AD7124_INT_REF ;else cfg->refsel = tmp; - cfg->buf_positive =of_property_read_bool (child,"adi,buffered-positive" ); - cfg->buf_negative =of_property_read_bool (child,"adi,buffered-negative" ); + cfg->buf_positive = +fwnode_property_read_bool (child,"adi,buffered-positive" ); + cfg->buf_negative = +fwnode_property_read_bool (child,"adi,buffered-negative" ); chan[channel] = ad7124_channel_template; chan[channel].address = channel;
@@ -885,10 +882,6 @@ static int ad7124_of_parse_channel_config(struct iio_dev *indio_dev, }return 0 ; -err: -of_node_put (child); - -return ret; }static int ad7124_setup (struct ad7124_state *st)
@@ -948,9 +941,7 @@ static int ad7124_probe(struct spi_device *spi)struct iio_dev *indio_dev;int i, ret; - info =of_device_get_match_data (&spi->dev); -if (!info) - info = (void *)spi_get_device_id (spi)->driver_data; + info =spi_get_device_match_data (spi);if (!info)return -ENODEV ;
@@ -970,7 +961,7 @@ static int ad7124_probe(struct spi_device *spi)if (ret <0 )return ret; - ret =ad7124_of_parse_channel_config (indio_dev, spi->dev.of_node); + ret =ad7124_parse_channel_config (indio_dev, &spi->dev);if (ret <0 )return ret;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 4/91 iio: adc: ad7124: fix DT configuration parsing
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dumitru Ceclan <[email protected]>
[ Upstream commit 61cbfb5368dd50ed0d65ce21d305aa923581db2b ]
The cfg pointer is set before reading the channel number that the configuration should point to. This causes configurations to be shifted by one channel.
For example setting bipolar to the first channel defined in the DT will cause bipolar mode to be active on the second defined channel.
Fix by moving the cfg pointer setting after reading the channel number.
--- drivers/iio/adc/ad7124.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
drivers/iio/adc/ad7124.c +1 -2
@@ -842,8 +842,6 @@ static int ad7124_parse_channel_config(struct iio_dev *indio_dev, st->channels = channels;device_for_each_child_node_scoped (dev, child) { - cfg = &st->channels[channel].cfg; - ret =fwnode_property_read_u32 (child,"reg" , &channel);if (ret)return ret;
@@ -861,6 +859,7 @@ static int ad7124_parse_channel_config(struct iio_dev *indio_dev, st->channels[channel].ain =AD7124_CHANNEL_AINP (ain[0 ]) |AD7124_CHANNEL_AINM (ain[1 ]); + cfg = &st->channels[channel].cfg; cfg->bipolar =fwnode_property_read_bool (child,"bipolar" ); ret =fwnode_property_read_u32 (child,"adi,reference-select" , &tmp);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 5/91 nvmem: core: add nvmem_dev_size() helper
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <[email protected]>
[ Upstream commit 33cf42e68efc8ff529a7eee08a4f0ba8c8d0a207 ]
This is required by layouts that need to read whole NVMEM content. It's especially useful for NVMEM devices without hardcoded layout (like U-Boot environment data block).
Stable-dep-of: 8679e8b4a1eb ("nvmem: u-boot-env: error if NVMEM device is too small")
--- drivers/nvmem/core.c | 13 +++++++++++++ include/linux/nvmem-consumer.h | 1 + 2 files changed, 14 insertions(+)
drivers/nvmem/core.c +13 -0
@@ -2131,6 +2131,19 @@ const char *nvmem_dev_name(struct nvmem_device *nvmem) }EXPORT_SYMBOL_GPL (nvmem_dev_name); +/** +* nvmem_dev_size() - Get the size of a given nvmem device. +* +* @nvmem: nvmem device. +* +* Return: size of the nvmem device. +*/ +size_t nvmem_dev_size (struct nvmem_device *nvmem) +{ +return nvmem->size; +} +EXPORT_SYMBOL_GPL (nvmem_dev_size); +static int __init nvmem_init (void ) {return bus_register (&nvmem_bus_type);
include/linux/nvmem-consumer.h +1 -0
@@ -81,6 +81,7 @@ int nvmem_device_cell_write(struct nvmem_device *nvmem, struct nvmem_cell_info *info, void *buf);const char *nvmem_dev_name (struct nvmem_device *nvmem); +size_t nvmem_dev_size (struct nvmem_device *nvmem);void nvmem_add_cell_lookups (struct nvmem_cell_lookup *entries,size_t nentries);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 6/91 nvmem: u-boot-env: use nvmem_add_one_cell() nvmem subsystem helper
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <[email protected]>
[ Upstream commit 7c8979b42b1a9c5604f431ba804928e55919263c ]
Simplify adding NVMEM cells.
Stable-dep-of: 8679e8b4a1eb ("nvmem: u-boot-env: error if NVMEM device is too small")
--- drivers/nvmem/u-boot-env.c | 55 +++++++++++++++----------------------- 1 file changed, 21 insertions(+), 34 deletions(-)
drivers/nvmem/u-boot-env.c +21 -34
@@ -23,13 +23,10 @@ enum u_boot_env_format {struct u_boot_env {struct device *dev; +struct nvmem_device *nvmem;enum u_boot_env_format format;struct mtd_info *mtd; - -/* Cells */ -struct nvmem_cell_info *cells; -int ncells; };struct u_boot_env_image_single {
@@ -94,43 +91,36 @@ static int u_boot_env_read_post_process_ethaddr(void *context, const char *id, istatic int u_boot_env_add_cells (struct u_boot_env *priv,uint8_t *buf,size_t data_offset,size_t data_len) { +struct nvmem_device *nvmem = priv->nvmem;struct device *dev = priv->dev;char *data = buf + data_offset;char *var, *value, *eq; -int idx; - - priv->ncells =0 ; -for (var = data; var < data + data_len && *var; var +=strlen (var) +1 ) - priv->ncells++; - - priv->cells =devm_kcalloc (dev, priv->ncells,sizeof (*priv->cells),GFP_KERNEL ); -if (!priv->cells) -return -ENOMEM ; -for (var = data, idx =0 ; +for (var = data; var < data + data_len && *var; - var = value +strlen (value) +1 , idx++) { + var = value +strlen (value) +1 ) { +struct nvmem_cell_info info = {}; + eq =strchr (var,'=' );if (!eq)break ; *eq ='\0' ; value = eq +1 ; - priv->cells[idx].name =devm_kstrdup (dev, var,GFP_KERNEL ); -if (!priv->cells[idx].name) + info.name =devm_kstrdup (dev, var,GFP_KERNEL ); +if (!info.name)return -ENOMEM ; - priv->cells[idx].offset = data_offset + value - data; - priv->cells[idx].bytes =strlen (value); - priv->cells[idx].np =of_get_child_by_name (dev->of_node, priv->cells[idx].name); + info.offset = data_offset + value - data; + info.bytes =strlen (value); + info.np =of_get_child_by_name (dev->of_node, info.name);if (!strcmp (var,"ethaddr" )) { - priv->cells[idx].raw_len =strlen (value); - priv->cells[idx].bytes =ETH_ALEN ; - priv->cells[idx].read_post_process = u_boot_env_read_post_process_ethaddr; + info.raw_len =strlen (value); + info.bytes =ETH_ALEN ; + info.read_post_process = u_boot_env_read_post_process_ethaddr; } - } -if (WARN_ON (idx != priv->ncells)) - priv->ncells = idx; +nvmem_add_one_cell (nvmem, &info); + }return 0 ; }
@@ -209,7 +199,6 @@ static int u_boot_env_probe(struct platform_device *pdev)struct device *dev = &pdev->dev;struct device_node *np = dev->of_node;struct u_boot_env *priv; -int err; priv =devm_kzalloc (dev,sizeof (*priv),GFP_KERNEL );if (!priv)
@@ -224,17 +213,15 @@ static int u_boot_env_probe(struct platform_device *pdev)return PTR_ERR (priv->mtd); } - err =u_boot_env_parse (priv); -if (err) -return err; - config.dev = dev; - config.cells = priv->cells; - config.ncells = priv->ncells; config.priv = priv; config.size = priv->mtd->size; -return PTR_ERR_OR_ZERO (devm_nvmem_register (dev, &config)); + priv->nvmem =devm_nvmem_register (dev, &config); +if (IS_ERR (priv->nvmem)) +return PTR_ERR (priv->nvmem); + +return u_boot_env_parse (priv); }static const struct of_device_id u_boot_env_of_match_table[] = {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 7/91 nvmem: u-boot-env: use nvmem device helpers
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <[email protected]>
[ Upstream commit a832556d23c5a11115f300011a5874d6107a0d62 ]
Use nvmem_dev_size() and nvmem_device_read() to make this driver less mtd dependent.
Stable-dep-of: 8679e8b4a1eb ("nvmem: u-boot-env: error if NVMEM device is too small")
--- drivers/nvmem/u-boot-env.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)
drivers/nvmem/u-boot-env.c +15 -8
@@ -127,27 +127,34 @@ static int u_boot_env_add_cells(struct u_boot_env *priv, uint8_t *buf,static int u_boot_env_parse (struct u_boot_env *priv) { +struct nvmem_device *nvmem = priv->nvmem;struct device *dev = priv->dev;size_t crc32_data_offset;size_t crc32_data_len;size_t crc32_offset;size_t data_offset;size_t data_len; +size_t dev_size;uint32_t crc32;uint32_t calc; -size_t bytes;uint8_t *buf; +int bytes;int err; - buf =kcalloc (1 , priv->mtd->size,GFP_KERNEL ); + dev_size =nvmem_dev_size (nvmem); + + buf =kcalloc (1 , dev_size,GFP_KERNEL );if (!buf) { err = -ENOMEM ; goto err_out; } - err =mtd_read (priv->mtd,0 , priv->mtd->size, &bytes, buf); -if ((err && !mtd_is_bitflip (err)) || bytes != priv->mtd->size) { -dev_err (dev,"Failed to read from mtd: %d\n" , err); + bytes =nvmem_device_read (nvmem,0 , dev_size, buf); +if (bytes <0 ) { + err = bytes; + goto err_kfree; + }else if (bytes != dev_size) { + err = -EIO ; goto err_kfree; }
@@ -169,8 +176,8 @@ static int u_boot_env_parse(struct u_boot_env *priv)break ; } crc32 =le32_to_cpu (*(__le32 *)(buf + crc32_offset)); - crc32_data_len = priv->mtd->size - crc32_data_offset; - data_len = priv->mtd->size - data_offset; + crc32_data_len = dev_size - crc32_data_offset; + data_len = dev_size - data_offset; calc =crc32 (~0 , buf + crc32_data_offset, crc32_data_len) ^ ~0L ;if (calc != crc32) {
@@ -179,7 +186,7 @@ static int u_boot_env_parse(struct u_boot_env *priv) goto err_kfree; } - buf[priv->mtd->size -1 ] ='\0' ; + buf[dev_size -1 ] ='\0' ; err =u_boot_env_add_cells (priv, buf, data_offset, data_len);if (err)dev_err (dev,"Failed to add cells: %d\n" , err);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 8/91 nvmem: u-boot-env: improve coding style
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rafał Miłecki <[email protected]>
[ Upstream commit 6bafe07c930676d6430be471310958070816a595 ]
1. Prefer kzalloc() over kcalloc()
See memory-allocation.rst which says: "to be on the safe side it's best to use routines that set memory to zero, like kzalloc()"
2. Drop dev_err() for u_boot_env_add_cells() fail
It can fail only on -ENOMEM. We don't want to print error then.
3. Add extra "crc32_addr" variable
It makes code reading header's crc32 easier to understand / review.
Stable-dep-of: 8679e8b4a1eb ("nvmem: u-boot-env: error if NVMEM device is too small")
--- drivers/nvmem/u-boot-env.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/nvmem/u-boot-env.c +4 -4
@@ -132,6 +132,7 @@ static int u_boot_env_parse(struct u_boot_env *priv)size_t crc32_data_offset;size_t crc32_data_len;size_t crc32_offset; +__le32 *crc32_addr;size_t data_offset;size_t data_len;size_t dev_size;
@@ -143,7 +144,7 @@ static int u_boot_env_parse(struct u_boot_env *priv) dev_size =nvmem_dev_size (nvmem); - buf =kcalloc (1 , dev_size,GFP_KERNEL ); + buf =kzalloc (dev_size,GFP_KERNEL );if (!buf) { err = -ENOMEM ; goto err_out;
@@ -175,7 +176,8 @@ static int u_boot_env_parse(struct u_boot_env *priv) data_offset = offsetof(struct u_boot_env_image_broadcom , data);break ; } - crc32 =le32_to_cpu (*(__le32 *)(buf + crc32_offset)); + crc32_addr = (__le32 *)(buf + crc32_offset); + crc32 =le32_to_cpu (*crc32_addr); crc32_data_len = dev_size - crc32_data_offset; data_len = dev_size - data_offset;
@@ -188,8 +190,6 @@ static int u_boot_env_parse(struct u_boot_env *priv) buf[dev_size -1 ] ='\0' ; err =u_boot_env_add_cells (priv, buf, data_offset, data_len); -if (err) -dev_err (dev,"Failed to add cells: %d\n" , err); err_kfree:kfree (buf);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 9/91 nvmem: u-boot-env: error if NVMEM device is too small
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: John Thomson <[email protected]>
[ Upstream commit 8679e8b4a1ebdb40c4429e49368d29353e07b601 ]
Verify data size before trying to parse it to avoid reading out of buffer. This could happen in case of problems at MTD level or invalid DT bindings.
--- drivers/nvmem/u-boot-env.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/nvmem/u-boot-env.c +7 -0
@@ -176,6 +176,13 @@ static int u_boot_env_parse(struct u_boot_env *priv) data_offset = offsetof(struct u_boot_env_image_broadcom , data);break ; } + +if (dev_size < data_offset) { +dev_err (dev,"Device too small for u-boot-env\n" ); + err = -EIO ; + goto err_kfree; + } + crc32_addr = (__le32 *)(buf + crc32_offset); crc32 =le32_to_cpu (*crc32_addr); crc32_data_len = dev_size - crc32_data_offset;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 10/91 ksmbd: override fsids for share path check
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <[email protected]>
[ Upstream commit a018c1b636e79b60149b41151ded7c2606d8606e ]
Sangsoo reported that a DAC denial error occurred when accessing files through the ksmbd thread. This patch override fsids for share path check.
--- fs/smb/server/mgmt/share_config.c | 15 ++++++++++++--- fs/smb/server/mgmt/share_config.h | 4 +++- fs/smb/server/mgmt/tree_connect.c | 9 +++++---- fs/smb/server/mgmt/tree_connect.h | 4 ++-- fs/smb/server/smb2pdu.c | 2 +- fs/smb/server/smb_common.c | 9 +++++++-- fs/smb/server/smb_common.h | 2 ++ 7 files changed, 32 insertions(+), 13 deletions(-)
fs/smb/server/mgmt/share_config.c +12 -3
@@ -15,6 +15,7 @@#include "share_config.h" #include "user_config.h" #include "user_session.h" +#include "../connection.h" #include "../transport_ipc.h" #include "../misc.h"
@@ -120,12 +121,13 @@ static int parse_veto_list(struct ksmbd_share_config *share,return 0 ; } -static struct ksmbd_share_config *share_config_request (struct unicode_map *um, +static struct ksmbd_share_config *share_config_request (struct ksmbd_work *work,const char *name) {struct ksmbd_share_config_response *resp;struct ksmbd_share_config *share =NULL ;struct ksmbd_share_config *lookup; +struct unicode_map *um = work->conn->um;int ret; resp =ksmbd_ipc_share_config_request (name);
@@ -181,7 +183,14 @@ static struct ksmbd_share_config *share_config_request(struct unicode_map *um,KSMBD_SHARE_CONFIG_VETO_LIST (resp), resp->veto_list_sz);if (!ret && share->path) { +if (__ksmbd_override_fsids (work, share)) { +kill_share (share); + share =NULL ; + goto out; + } + ret =kern_path (share->path,0 , &share->vfs_path); +ksmbd_revert_fsids (work);if (ret) {ksmbd_debug (SMB ,"failed to access '%s'\n" , share->path);
@@ -214,7 +223,7 @@ static struct ksmbd_share_config *share_config_request(struct unicode_map *um,return share; } -struct ksmbd_share_config *ksmbd_share_config_get (struct unicode_map *um, +struct ksmbd_share_config *ksmbd_share_config_get (struct ksmbd_work *work,const char *name) {struct ksmbd_share_config *share;
@@ -227,7 +236,7 @@ struct ksmbd_share_config *ksmbd_share_config_get(struct unicode_map *um,if (share)return share; -return share_config_request (um, name); +return share_config_request (work, name); } bool ksmbd_share_veto_filename(struct ksmbd_share_config *share,
fs/smb/server/mgmt/share_config.h +3 -1
@@ -11,6 +11,8 @@#include <linux/path.h> #include <linux/unicode.h> +struct ksmbd_work ; +struct ksmbd_share_config {char *name;char *path;
@@ -68,7 +70,7 @@ static inline void ksmbd_share_config_put(struct ksmbd_share_config *share)__ksmbd_share_config_put (share); } -struct ksmbd_share_config *ksmbd_share_config_get (struct unicode_map *um, +struct ksmbd_share_config *ksmbd_share_config_get (struct ksmbd_work *work,const char *name);bool ksmbd_share_veto_filename (struct ksmbd_share_config *share,const char *filename);
fs/smb/server/mgmt/tree_connect.c +5 -4
@@ -16,17 +16,18 @@#include "user_session.h" struct ksmbd_tree_conn_status -ksmbd_tree_conn_connect (struct ksmbd_conn *conn,struct ksmbd_session *sess, -const char *share_name) +ksmbd_tree_conn_connect (struct ksmbd_work *work,const char *share_name) {struct ksmbd_tree_conn_status status = {-ENOENT ,NULL };struct ksmbd_tree_connect_response *resp =NULL ;struct ksmbd_share_config *sc;struct ksmbd_tree_connect *tree_conn =NULL ;struct sockaddr *peer_addr; +struct ksmbd_conn *conn = work->conn; +struct ksmbd_session *sess = work->sess;int ret; - sc =ksmbd_share_config_get (conn->um, share_name); + sc =ksmbd_share_config_get (work, share_name);if (!sc)return status;
@@ -61,7 +62,7 @@ ksmbd_tree_conn_connect(struct ksmbd_conn *conn, struct ksmbd_session *sess,struct ksmbd_share_config *new_sc;ksmbd_share_config_del (sc); - new_sc =ksmbd_share_config_get (conn->um, share_name); + new_sc =ksmbd_share_config_get (work, share_name);if (!new_sc) {pr_err ("Failed to update stale share config\n" ); status.ret = -ESTALE ;
fs/smb/server/mgmt/tree_connect.h +2 -2
@@ -13,6 +13,7 @@struct ksmbd_share_config ;struct ksmbd_user ;struct ksmbd_conn ; +struct ksmbd_work ;enum {TREE_NEW =0 ,
@@ -50,8 +51,7 @@ static inline int test_tree_conn_flag(struct ksmbd_tree_connect *tree_conn,struct ksmbd_session ;struct ksmbd_tree_conn_status -ksmbd_tree_conn_connect (struct ksmbd_conn *conn,struct ksmbd_session *sess, -const char *share_name); +ksmbd_tree_conn_connect (struct ksmbd_work *work,const char *share_name);void ksmbd_tree_connect_put (struct ksmbd_tree_connect *tcon); int ksmbd_tree_conn_disconnect(struct ksmbd_session *sess,
fs/smb/server/smb2pdu.c +1 -1
@@ -1959,7 +1959,7 @@ int smb2_tree_connect(struct ksmbd_work *work)ksmbd_debug (SMB ,"tree connect request for tree %s treename %s\n" , name, treename); - status =ksmbd_tree_conn_connect (conn, sess, name); + status =ksmbd_tree_conn_connect (work, name);if (status.ret ==KSMBD_TREE_CONN_STATUS_OK ) rsp->hdr.Id.SyncId.TreeId =cpu_to_le32 (status.tree_conn->id);else
fs/smb/server/smb_common.c +7 -2
@@ -732,10 +732,10 @@ bool is_asterisk(char *p)return p && p[0 ] =='*' ; } -int ksmbd_override_fsids (struct ksmbd_work *work) +int __ksmbd_override_fsids (struct ksmbd_work *work, +struct ksmbd_share_config *share) {struct ksmbd_session *sess = work->sess; -struct ksmbd_share_config *share = work->tcon->share_conf;struct cred *cred;struct group_info *gi;unsigned int uid;
@@ -775,6 +775,11 @@ int ksmbd_override_fsids(struct ksmbd_work *work)return 0 ; } +int ksmbd_override_fsids (struct ksmbd_work *work) +{ +return __ksmbd_override_fsids (work, work->tcon->share_conf); +} +void ksmbd_revert_fsids (struct ksmbd_work *work) {const struct cred *cred;
fs/smb/server/smb_common.h +2 -0
@@ -447,6 +447,8 @@ int ksmbd_extract_shortname(struct ksmbd_conn *conn,int ksmbd_smb_negotiate_common (struct ksmbd_work *work,unsigned int command);int ksmbd_smb_check_shared_mode (struct file *filp,struct ksmbd_file *curr_fp); +int __ksmbd_override_fsids (struct ksmbd_work *work, +struct ksmbd_share_config *share);int ksmbd_override_fsids (struct ksmbd_work *work);void ksmbd_revert_fsids (struct ksmbd_work *work);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 11/91 ksmbd: override fsids for smb2_query_info()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Namjae Jeon <[email protected]>
[ Upstream commit f6bd41280a44dcc2e0a25ed72617d25f586974a7 ]
Sangsoo reported that a DAC denial error occurred when accessing files through the ksmbd thread. This patch override fsids for smb2_query_info().
--- fs/smb/server/smb2pdu.c | 7 +++++++ 1 file changed, 7 insertions(+)
fs/smb/server/smb2pdu.c +7 -0
@@ -5601,6 +5601,11 @@ int smb2_query_info(struct ksmbd_work *work)ksmbd_debug (SMB ,"GOT query info request\n" ); +if (ksmbd_override_fsids (work)) { + rc = -ENOMEM ; + goto err_out; + } +switch (req->InfoType) {case SMB2_O_INFO_FILE :ksmbd_debug (SMB ,"GOT SMB2_O_INFO_FILE\n" );
@@ -5619,6 +5624,7 @@ int smb2_query_info(struct ksmbd_work *work) req->InfoType); rc = -EOPNOTSUPP ; } +ksmbd_revert_fsids (work);if (!rc) { rsp->StructureSize =cpu_to_le16 (9 );
@@ -5628,6 +5634,7 @@ int smb2_query_info(struct ksmbd_work *work) le32_to_cpu(rsp->OutputBufferLength)); } +err_out:if (rc <0 ) {if (rc == -EACCES ) rsp->hdr.Status =STATUS_ACCESS_DENIED ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 12/91 usbnet: ipheth: remove extraneous rx URB length check
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Foster Snowhill <[email protected]>
[ Upstream commit 655b46d7a39ac6f049698b27c1568c0f7ff85d1e ]
Rx URB length was already checked in ipheth_rcvbulk_callback_legacy() and ipheth_rcvbulk_callback_ncm(), depending on the current mode. The check in ipheth_rcvbulk_callback() was thus mostly a duplicate.
The only place in ipheth_rcvbulk_callback() where we care about the URB length is for the initial control frame. These frames are always 4 bytes long. This has been checked as far back as iOS 4.2.1 on iPhone 3G.
Remove the extraneous URB length check. For control frames, check for the specific 4-byte length instead.
--- drivers/net/usb/ipheth.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-)
drivers/net/usb/ipheth.c +2 -6
@@ -286,11 +286,6 @@ static void ipheth_rcvbulk_callback(struct urb *urb)return ; } -if (urb->actual_length <=IPHETH_IP_ALIGN ) { - dev->net->stats.rx_length_errors++; -return ; - } -/* RX URBs starting with 0x00 0x01 do not encapsulate Ethernet frames, * but rather are control frames. Their purpose is not documented, and * they don't affect driver functionality, okay to drop them.
@@ -298,7 +293,8 @@ static void ipheth_rcvbulk_callback(struct urb *urb)* URB received from the bulk IN endpoint. */ if (unlikely - (((char *)urb->transfer_buffer)[0 ] ==0 && + (urb->actual_length ==4 && + ((char *)urb->transfer_buffer)[0 ] ==0 && ((char *)urb->transfer_buffer)[1 ] ==1 )) goto rx_submit;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 13/91 usbnet: ipheth: drop RX URBs with no payload
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Foster Snowhill <[email protected]>
[ Upstream commit 94d7eeb6c0ef0310992944f0d0296929816a2cb0 ]
On iPhone 15 Pro Max one can observe periodic URBs with no payload on the "bulk in" (RX) endpoint. These don't seem to do anything meaningful. Reproduced on iOS 17.5.1 and 17.6.
This behaviour isn't observed on iPhone 11 on the same iOS version. The nature of these zero-length URBs is so far unknown.
Drop RX URBs with no payload.
--- drivers/net/usb/ipheth.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/net/usb/ipheth.c +6 -0
@@ -286,6 +286,12 @@ static void ipheth_rcvbulk_callback(struct urb *urb)return ; } +/* iPhone may periodically send URBs with no payload +* on the "bulk in" endpoint. It is safe to ignore them. +*/ +if (urb->actual_length ==0 ) + goto rx_submit; +/* RX URBs starting with 0x00 0x01 do not encapsulate Ethernet frames, * but rather are control frames. Their purpose is not documented, and * they don't affect driver functionality, okay to drop them.
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 14/91 usbnet: ipheth: do not stop RX on failing RX callback
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Foster Snowhill <[email protected]>
[ Upstream commit 74efed51e0a4d62f998f806c307778b47fc73395 ]
RX callbacks can fail for multiple reasons:
* Payload too short
* Payload formatted incorrecly (e.g. bad NCM framing)
* Lack of memory
None of these should cause the driver to seize up.
Make such failures non-critical and continue processing further incoming URBs.
--- drivers/net/usb/ipheth.c | 1 - 1 file changed, 1 deletion(-)
drivers/net/usb/ipheth.c +0 -1
@@ -308,7 +308,6 @@ static void ipheth_rcvbulk_callback(struct urb *urb)if (retval !=0 ) {dev_err (&dev->intf->dev,"%s: callback retval: %d\n" , __func__, retval); -return ; } rx_submit:
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 15/91 usbnet: ipheth: fix carrier detection in modes 1 and 4
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Foster Snowhill <[email protected]>
[ Upstream commit 67927a1b255d883881be9467508e0af9a5e0be9d ]
Apart from the standard "configurations", "interfaces" and "alternate interface settings" in USB, iOS devices also have a notion of "modes". In different modes, the device exposes a different set of available configurations.
Depending on the iOS version, and depending on the current mode, the length and contents of the carrier state control message differs:
* 1 byte (seen on iOS 4.2.1, 8.4):
* 03: carrier off (mode 0)
* 04: carrier on (mode 0)
* 3 bytes (seen on iOS 10.3.4, 15.7.6):
* 03 03 03: carrier off (mode 0)
* 04 04 03: carrier on (mode 0)
* 4 bytes (seen on iOS 16.5, 17.6):
* 03 03 03 00: carrier off (mode 0)
* 04 03 03 00: carrier off (mode 1)
* 06 03 03 00: carrier off (mode 4)
* 04 04 03 04: carrier on (mode 0 and 1)
* 06 04 03 04: carrier on (mode 4)
Before this change, the driver always used the first byte of the response to determine carrier state.
Quoted 1 line
From this larger sample, the first byte seems to indicate the number of
available USB configurations in the current mode (with the exception of the default mode 0), and in some cases (namely mode 1 and 4) does not correlate with the carrier state.
Previous logic erroneously counted 04 03 03 00 as "carrier on" and 06 04 03 04 as "carrier off" on iOS versions that support mode 1 and mode 4 respectively.
Only modes 0, 1 and 4 expose the USB Ethernet interfaces necessary for the ipheth driver.
Check the second byte of the control message where possible, and fall back to checking the first byte on older iOS versions.
--- drivers/net/usb/ipheth.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/net/usb/ipheth.c +3 -2
@@ -355,13 +355,14 @@ static int ipheth_carrier_set(struct ipheth_device *dev)0x02 ,/* index */ dev->ctrl_buf,IPHETH_CTRL_BUF_SIZE , IPHETH_CTRL_TIMEOUT); -if (retval <0 ) { +if (retval <=0 ) {dev_err (&dev->intf->dev,"%s: usb_control_msg: %d\n" , __func__, retval);return retval; } -if (dev->ctrl_buf[0 ] ==IPHETH_CARRIER_ON ) { +if ((retval ==1 && dev->ctrl_buf[0 ] ==IPHETH_CARRIER_ON ) || + (retval >=2 && dev->ctrl_buf[1 ] ==IPHETH_CARRIER_ON )) {netif_carrier_on (dev->net);if (dev->tx_urb->status != -EINPROGRESS )netif_wake_queue (dev->net);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 16/91 net: ethernet: use ip_hdrlen() instead of bit shift
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Moon Yeounsu <[email protected]>
[ Upstream commit 9a039eeb71a42c8b13408a1976e300f3898e1be0 ]
ip_hdr(skb)->ihl << 2 is the same as ip_hdrlen(skb) Therefore, we should use a well-defined function not a bit shift to find the header length.
It also compresses two lines to a single line.
--- drivers/net/ethernet/jme.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-)
drivers/net/ethernet/jme.c +4 -6
@@ -946,15 +946,13 @@ jme_udpsum(struct sk_buff *skb)if (skb->protocol !=htons (ETH_P_IP ))return csum;skb_set_network_header (skb,ETH_HLEN ); -if ((ip_hdr (skb)->protocol !=IPPROTO_UDP ) || - (skb->len < (ETH_HLEN + - (ip_hdr (skb)->ihl <<2 ) + -sizeof (struct udphdr )))) { + +if (ip_hdr (skb)->protocol !=IPPROTO_UDP || + skb->len < (ETH_HLEN +ip_hdrlen (skb) +sizeof (struct udphdr ))) {skb_reset_network_header (skb);return csum; } -skb_set_transport_header (skb, -ETH_HLEN + (ip_hdr (skb)->ihl <<2 )); +skb_set_transport_header (skb,ETH_HLEN +ip_hdrlen (skb)); csum =udp_hdr (skb)->check;skb_reset_transport_header (skb);skb_reset_network_header (skb);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 17/91 drm: panel-orientation-quirks: Add quirk for Ayn Loki Zero
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bouke Sybren Haarsma <[email protected]>
[ Upstream commit b86aa4140f6a8f01f35bfb05af60e01a55b48803 ]
Add quirk orientation for the Ayn Loki Zero.
This also has been tested/used by the JELOS team.
--- drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
@@ -208,6 +208,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_MATCH(DMI_BOARD_NAME, "KUN"), }, .driver_data = (void *)&lcd1600x2560_rightside_up, + }, { /* AYN Loki Zero */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"ayn" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Zero"), + }, + .driver_data = (void *)&lcd1080x1920_leftside_up, }, { /* Chuwi HiBook (CWI514) */ .matches = { DMI_MATCH(DMI_BOARD_VENDOR, "Hampoo"),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 18/91 drm: panel-orientation-quirks: Add quirk for Ayn Loki Max
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bouke Sybren Haarsma <[email protected]>
[ Upstream commit 2c71c8459c8ca66bd8f597effaac892ee8448a9f ]
Add quirk orientation for Ayn Loki Max model.
This has been tested by JELOS team that uses their own patched kernel for a while now and confirmed by users in the ChimeraOS discord servers.
--- drivers/gpu/drm/drm_panel_orientation_quirks.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/gpu/drm/drm_panel_orientation_quirks.c +6 -0
@@ -208,6 +208,12 @@ static const struct dmi_system_id orientation_data[] = { DMI_MATCH(DMI_BOARD_NAME, "KUN"), }, .driver_data = (void *)&lcd1600x2560_rightside_up, + }, { /* AYN Loki Max */ + .matches = { +DMI_EXACT_MATCH (DMI_SYS_VENDOR ,"ayn" ), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Loki Max"), + }, + .driver_data = (void *)&lcd1080x1920_leftside_up, }, { /* AYN Loki Zero */ .matches = { DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ayn"),
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 19/91 net: phy: vitesse: repair vsc73xx autonegotiation
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Pawel Dembicki <[email protected]>
[ Upstream commit de7a670f8defe4ed2115552ad23dea0f432f7be4 ]
When the vsc73xx mdio bus work properly, the generic autonegotiation configuration works well.
--- drivers/net/phy/vitesse.c | 14 -------------- 1 file changed, 14 deletions(-)
drivers/net/phy/vitesse.c +0 -14
@@ -237,16 +237,6 @@ static int vsc739x_config_init(struct phy_device *phydev)return 0 ; } -static int vsc73xx_config_aneg (struct phy_device *phydev) -{ -/* The VSC73xx switches does not like to be instructed to -* do autonegotiation in any way, it prefers that you just go -* with the power-on/reset defaults. Writing some registers will -* just make autonegotiation permanently fail. -*/ -return 0 ; -} -/* This adds a skew for both TX and RX clocks, so the skew should only be * applied to "rgmii-id" interfaces. It may not work as expected * on "rgmii-txid", "rgmii-rxid" or "rgmii" interfaces.
@@ -444,7 +434,6 @@ static struct phy_driver vsc82xx_driver[] = { .phy_id_mask = 0x000ffff0, /* PHY_GBIT_FEATURES */ .config_init = vsc738x_config_init, - .config_aneg = vsc73xx_config_aneg, .read_page = vsc73xx_read_page, .write_page = vsc73xx_write_page, }, {
@@ -453,7 +442,6 @@ static struct phy_driver vsc82xx_driver[] = { .phy_id_mask = 0x000ffff0, /* PHY_GBIT_FEATURES */ .config_init = vsc738x_config_init, - .config_aneg = vsc73xx_config_aneg, .read_page = vsc73xx_read_page, .write_page = vsc73xx_write_page, }, {
@@ -462,7 +450,6 @@ static struct phy_driver vsc82xx_driver[] = { .phy_id_mask = 0x000ffff0, /* PHY_GBIT_FEATURES */ .config_init = vsc739x_config_init, - .config_aneg = vsc73xx_config_aneg, .read_page = vsc73xx_read_page, .write_page = vsc73xx_write_page, }, {
@@ -471,7 +458,6 @@ static struct phy_driver vsc82xx_driver[] = { .phy_id_mask = 0x000ffff0, /* PHY_GBIT_FEATURES */ .config_init = vsc739x_config_init, - .config_aneg = vsc73xx_config_aneg, .read_page = vsc73xx_read_page, .write_page = vsc73xx_write_page, }, {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 20/91 powerpc/mm: Fix boot warning with hugepages and CONFIG_DEBUG_VIRTUAL
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christophe Leroy <[email protected]>
[ Upstream commit e7e846dc6c73fbc94ae8b4ec20d05627646416f2 ]
Booting with CONFIG_DEBUG_VIRTUAL leads to following warning when passing hugepage reservation on command line:
Kernel command line: hugepagesz=1g hugepages=1 hugepagesz=64m hugepages=1 hugepagesz=256m hugepages=1 noreboot
HugeTLB: allocating 1 of page size 1.00 GiB failed. Only allocated 0 hugepages.
------------[ cut here ]------------ WARNING: CPU: 0 PID: 0 at arch/powerpc/include/asm/io.h:948 __alloc_bootmem_huge_page+0xd4/0x284 Modules linked in: CPU: 0 PID: 0 Comm: swapper Not tainted 6.10.0-rc6-00396-g6b0e82791bd0-dirty #936 Hardware name: MPC8544DS e500v2 0x80210030 MPC8544 DS NIP: c1020240 LR: c10201d0 CTR: 00000000 REGS: c13fdd30 TRAP: 0700 Not tainted (6.10.0-rc6-00396-g6b0e82791bd0-dirty) MSR: 00021000 <CE,ME> CR: 44084288 XER: 20000000
GPR00: c10201d0 c13fde20 c130b560 e8000000 e8001000 00000000 00000000 c1420000
GPR08: 00000000 00028001 00000000 00000004 44084282 01066ac0 c0eb7c9c efffe149
GPR16: c0fc4228 0000005f ffffffff c0eb7d0c c0eb7cc0 c0eb7ce0 ffffffff 00000000
GPR24: c1441cec efffe153 e8001000 c14240c0 00000000 c1441d64 00000000 e8000000 NIP [c1020240] __alloc_bootmem_huge_page+0xd4/0x284
LR [c10201d0] __alloc_bootmem_huge_page+0x64/0x284
Call Trace: [c13fde20] [c10201d0] __alloc_bootmem_huge_page+0x64/0x284 (unreliable) [c13fde50] [c10207b8] hugetlb_hstate_alloc_pages+0x8c/0x3e8 [c13fdeb0] [c1021384] hugepages_setup+0x240/0x2cc [c13fdef0] [c1000574] unknown_bootoption+0xfc/0x280 [c13fdf30] [c0078904] parse_args+0x200/0x4c4 [c13fdfa0] [c1000d9c] start_kernel+0x238/0x7d0 [c13fdff0] [c0000434] set_ivor+0x12c/0x168 Code: 554aa33e 7c042840 3ce0c142 80a7427c 5109a016 50caa016 7c9a2378 7fdcf378 4180000c 7c052040 41810160 7c095040 <0fe00000> 38c00000 40800108 3c60c0eb ---[ end trace 0000000000000000 ]---
This is due to virt_addr_valid() using high_memory before it is set.
high_memory is set in mem_init() using max_low_pfn, but max_low_pfn is available long before, it is set in mem_topology_setup(). So just like commit daa9ada2093e ("powerpc/mm: Fix boot crash with FLATMEM") moved the setting of max_mapnr immediately after the call to mem_topology_setup(), the same can be done for high_memory.
--- arch/powerpc/kernel/setup-common.c | 1 + arch/powerpc/mm/mem.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-)
arch/powerpc/kernel/setup-common.c +1 -0
@@ -950,6 +950,7 @@ void __init setup_arch(char **cmdline_p)mem_topology_setup ();/* Set max_mapnr before paging_init() */ set_max_mapnr (max_pfn); + high_memory = (void *)__va (max_low_pfn *PAGE_SIZE );/* * Release secondary cpus out of their spinloops at 0x60 now that
arch/powerpc/mm/mem.c +0 -2
@@ -287,8 +287,6 @@ void __init mem_init(void)swiotlb_init (ppc_swiotlb_enable, ppc_swiotlb_flags);#endif - high_memory = (void *)__va (max_low_pfn *PAGE_SIZE ); -kasan_late_init ();memblock_free_all ();
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 21/91 wifi: mt76: mt7921: fix NULL pointer access in mt7921_ipv6_addr_change
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Bert Karwatzki <[email protected]>
[ Upstream commit 479ffee68d59c599f8aed8fa2dcc8e13e7bd13c3 ]
When disabling wifi mt7921_ipv6_addr_change() is called as a notifier. At this point mvif->phy is already NULL so we cannot use it here.
--- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -1
@@ -1095,7 +1095,7 @@ static void mt7921_ipv6_addr_change(struct ieee80211_hw *hw, struct inet6_dev *idev) {struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv; -struct mt792x_dev *dev = mvif->phy->dev; +struct mt792x_dev *dev =mt792x_hw_dev (hw);struct inet6_ifaddr *ifa;struct in6_addr ns_addrs[IEEE80211_BSS_ARP_ADDR_LIST_LEN ];struct sk_buff *skb;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 22/91 net: hns3: use correct release function during uninitialization
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peiyang Wang <[email protected]>
[ Upstream commit 7660833d217528c8f2385528951ab820a031e4e3 ]
pci_request_regions is called to apply for PCI I/O and memory resources when the driver is initialized, Therefore, when the driver is uninstalled, pci_release_regions should be used to release PCI I/O and memory resources instead of pci_release_mem_regions is used to release memory reasouces only.
--- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +1 -1
@@ -11370,7 +11370,7 @@ static void hclge_pci_uninit(struct hclge_dev *hdev)pcim_iounmap (pdev, hdev->hw.hw.io_base);pci_free_irq_vectors (pdev); -pci_release_mem_regions (pdev); +pci_release_regions (pdev);pci_disable_device (pdev); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 23/91 btrfs: update target inodes ctime on unlink
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jeff Layton <[email protected]>
[ Upstream commit 3bc2ac2f8f0b78a13140fc72022771efe0c9b778 ]
Unlink changes the link count on the target inode. POSIX mandates that the ctime must also change when this occurs.
According to https://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html:
"Upon successful completion, unlink() shall mark for update the last data
modification and last file status change timestamps of the parent directory. Also, if the file's link count is not 0, the last file status change timestamp of the file shall be marked for update."
--- fs/btrfs/inode.c | 1 + 1 file changed, 1 insertion(+)
fs/btrfs/inode.c +1 -0
@@ -4148,6 +4148,7 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans,btrfs_i_size_write (dir, dir->vfs_inode.i_size - name->len *2 );inode_inc_iversion (&inode->vfs_inode); +inode_set_ctime_current (&inode->vfs_inode);inode_inc_iversion (&dir->vfs_inode);inode_set_ctime_current (&inode->vfs_inode); dir->vfs_inode.i_mtime =inode_set_ctime_current (&dir->vfs_inode);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 24/91 Input: ads7846 - ratelimit the spi_sync error message
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Marek Vasut <[email protected]>
[ Upstream commit ccbfea78adf75d3d9e87aa739dab83254f5333fa ]
In case the touch controller is not connected, this message keeps scrolling on the console indefinitelly. Ratelimit it to avoid filling kernel logs.
"
ads7846 spi2.1: spi_sync --> -22
"
--- drivers/input/touchscreen/ads7846.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/input/touchscreen/ads7846.c +1 -1
@@ -808,7 +808,7 @@ static void ads7846_read_state(struct ads7846 *ts) m = &ts->msg[msg_idx]; error =spi_sync (ts->spi, m);if (error) { -dev_err (&ts->spi->dev,"spi_sync --> %d\n" , error); +dev_err_ratelimited (&ts->spi->dev,"spi_sync --> %d\n" , error); packet->ignore = true;return ; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 25/91 Input: synaptics - enable SMBus for HP Elitebook 840 G2
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jonathan Denose <[email protected]>
[ Upstream commit da897484557b34a54fabb81f6c223c19a69e546d ]
The kernel reports that the touchpad for this device can support a different bus.
With SMBus enabled the touchpad movement is smoother and three-finger gestures are recognized.
--- drivers/input/mouse/synaptics.c | 1 + 1 file changed, 1 insertion(+)
drivers/input/mouse/synaptics.c +1 -0
@@ -189,6 +189,7 @@ static const char * const smbus_pnp_ids[] = {"LEN2054" ,/* E480 */ "LEN2055" ,/* E580 */ "LEN2068" ,/* T14 Gen 1 */ +"SYN3015" ,/* HP EliteBook 840 G2 */ "SYN3052" ,/* HP EliteBook 840 G4 */ "SYN3221" ,/* HP 15-ay000 */ "SYN323d", /* HP Spectre X360 13-w013dx */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 26/91 HID: multitouch: Add support for GT7868Q
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dmitry Savin <[email protected]>
[ Upstream commit c8000deb68365b461b324d68c7ea89d730f0bb85 ]
GT7868Q has incorrect data in the report and needs a fixup. The change enables haptic touchpad on Lenovo ThinkBook 13x Gen 4 and has been tested on the device.
--- drivers/hid/hid-ids.h | 2 ++ drivers/hid/hid-multitouch.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+)
drivers/hid/hid-ids.h +2 -0
@@ -515,6 +515,8 @@#define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100#define I2C_VENDOR_ID_GOODIX 0x27c6 +#define I2C_DEVICE_ID_GOODIX_01E8 0x01e8 +#define I2C_DEVICE_ID_GOODIX_01E9 0x01e9#define I2C_DEVICE_ID_GOODIX_01F0 0x01f0#define USB_VENDOR_ID_GOODTOUCH 0x1aad
drivers/hid/hid-multitouch.c +33 -0
@@ -1442,6 +1442,30 @@ static int mt_event(struct hid_device *hid, struct hid_field *field,return 0 ; } +static __u8 *mt_report_fixup (struct hid_device *hdev,__u8 *rdesc, +unsigned int *size) +{ +if (hdev->vendor ==I2C_VENDOR_ID_GOODIX && + (hdev->product ==I2C_DEVICE_ID_GOODIX_01E8 || + hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 )) { +if (rdesc[607 ] ==0x15 ) { + rdesc[607 ] =0x25 ; +dev_info ( + &hdev->dev, +"GT7868Q report descriptor fixup is applied.\n" ); + }else { +dev_info ( + &hdev->dev, +"The byte is not expected for fixing the report descriptor. \ +It's possible that the touchpad firmware is not suitable for applying the fix. \ +got: %x\n" , + rdesc[607 ]); + } + } + +return rdesc; +} +static void mt_report (struct hid_device *hid,struct hid_report *report) {struct mt_device *td =hid_get_drvdata (hid);
@@ -2038,6 +2062,14 @@ static const struct hid_device_id mt_devices[] = { MT_BT_DEVICE(USB_VENDOR_ID_FRUCTEL, USB_DEVICE_ID_GAMETEL_MT_MODE) }, +/* Goodix GT7868Q devices */ + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU, +HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , + I2C_DEVICE_ID_GOODIX_01E8) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU, +HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , + I2C_DEVICE_ID_GOODIX_01E8) }, + /* GoodTouch panels */ { .driver_data = MT_CLS_NSMU, MT_USB_DEVICE(USB_VENDOR_ID_GOODTOUCH,
@@ -2273,6 +2305,7 @@ static struct hid_driver mt_driver = { .feature_mapping = mt_feature_mapping, .usage_table = mt_grabbed_usages, .event = mt_event, + .report_fixup = mt_report_fixup, .report = mt_report, #ifdef CONFIG_PM .suspend = mt_suspend,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 27/91 scripts: kconfig: merge_config: config files: add a trailing newline
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anders Roxell <[email protected]>
[ Upstream commit 33330bcf031818e60a816db0cfd3add9eecc3b28 ]
When merging files without trailing newlines at the end of the file, two config fragments end up at the same row if file1.config doens't have a trailing newline at the end of the file.
file1.config "CONFIG_1=y"
file2.config "CONFIG_2=y"./scripts/kconfig/merge_config.sh -m .config file1.config file2.config
This will generate a .config looking like this.
cat .config
...CONFIG_1=yCONFIG_2=y"
Making sure so we add a newline at the end of every config file that is passed into the script.
--- scripts/kconfig/merge_config.sh | 2 ++ 1 file changed, 2 insertions(+)
scripts/kconfig/merge_config.sh +2 -0
@@ -167,6 +167,8 @@ for ORIG_MERGE_FILE in $MERGE_LIST ; do sed -i "/$CFG[ =]/d" $MERGE_FILE fi done + # In case the previous file lacks a new line at the end + echo >> $TMP_FILE cat $MERGE_FILE >> $TMP_FILE done
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 28/91 platform/surface: aggregator_registry: Add Support for Surface Pro 10
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maximilian Luz <[email protected]>
[ Upstream commit 9c8e022567bbec53bee8ae75c44b3d6cd2080d42 ]
Add SAM client device nodes for the Surface Pro 10. It seems to use the same SAM client devices as the Surface Pro 9, so re-use its node group.
--- drivers/platform/surface/surface_aggregator_registry.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/platform/surface/surface_aggregator_registry.c +4 -1
@@ -298,7 +298,7 @@ static const struct software_node *ssam_node_group_sp8[] = { NULL, }; -/* Devices for Surface Pro 9 */ +/* Devices for Surface Pro 9 and 10 */ static const struct software_node *ssam_node_group_sp9[] = { &ssam_node_root, &ssam_node_hub_kip,
@@ -337,6 +337,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {/* Surface Pro 9 */ { "MSHW0343", (unsigned long)ssam_node_group_sp9 }, +/* Surface Pro 10 */ + { "MSHW0510", (unsigned long)ssam_node_group_sp9 }, +/* Surface Book 2 */ { "MSHW0107", (unsigned long)ssam_node_group_gen5 },
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 29/91 platform/surface: aggregator_registry: Add support for Surface Laptop Go 3
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maximilian Luz <[email protected]>
[ Upstream commit ed235163c3f02329d5e37ed4485bbc39ed2568d4 ]
Add SAM client device nodes for the Surface Laptop Go 3. It seems to use the same SAM client devices as the Surface Laptop Go 1 and 2, so re-use their node group.
--- drivers/platform/surface/surface_aggregator_registry.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/platform/surface/surface_aggregator_registry.c +3 -0
@@ -370,6 +370,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {/* Surface Laptop Go 2 */ { "MSHW0290", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Go 3 */ + { "MSHW0440", (unsigned long)ssam_node_group_slg1 }, +/* Surface Laptop Studio */ { "MSHW0123", (unsigned long)ssam_node_group_sls },
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 30/91 drm/msm/adreno: Fix error return if missing firmware-name
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rob Clark <[email protected]>
[ Upstream commit 624ab9cde26a9f150b4fd268b0f3dae3184dc40c ]
-ENODEV is used to signify that there is no zap shader for the platform, and the CPU can directly take the GPU out of secure mode. We want to use this return code when there is no zap-shader node. But not when there is, but without a firmware-name property. This case we want to treat as-if the needed fw is not found.
Patchwork: https://patchwork.freedesktop.org/patch/604564/
--- drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/gpu/drm/msm/adreno/adreno_gpu.c +1 -1
@@ -99,7 +99,7 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname,* was a bad idea, and is only provided for backwards * compatibility for older targets. */ -return -ENODEV ; +return -ENOENT ; }if (IS_ERR (fw)) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 31/91 Input: i8042 - add Fujitsu Lifebook E756 to i8042 quirk table
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Takashi Iwai <[email protected]>
[ Upstream commit 7ce7c2283fa6843ab3c2adfeb83dcc504a107858 ]
Yet another quirk entry for Fujitsu laptop. Lifebook E756 requires i8041.nomux for keeping the touchpad working after suspend/resume.
--- drivers/input/serio/i8042-acpipnpio.h | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/input/serio/i8042-acpipnpio.h +9 -0
@@ -627,6 +627,15 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { }, .driver_data = (void *)(SERIO_QUIRK_NOMUX) }, + { +/* Fujitsu Lifebook E756 */ +/* https://bugzilla.suse.com/show_bug.cgi?id=1229056 */ + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"FUJITSU" ), + DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK E756"), + }, + .driver_data = (void *)(SERIO_QUIRK_NOMUX ) + }, {/* Fujitsu Lifebook E5411 */ .matches = {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 32/91 s390/mm: Prevent lowcore vs identity mapping overlap
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alexander Gordeev <[email protected]>
[ Upstream commit a3ca27c405faad584af6e8e38cdafe5be73230a1 ]
The identity mapping position in virtual memory is randomized together with the kernel mapping. That position can never overlap with the lowcore even when the lowcore is relocated.
Prevent overlapping with the lowcore to allow independent positioning of the identity mapping. With the current value of the alternative lowcore address of 0x70000 the overlap could happen in case the identity mapping is placed at zero.
This is a prerequisite for uncoupling of randomization base of kernel image and identity mapping in virtual memory.
--- arch/s390/kernel/setup.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
arch/s390/kernel/setup.c +18 -1
@@ -741,7 +741,23 @@ static void __init memblock_add_physmem_info(void) }/* -* Reserve memory used for lowcore/command line/kernel image. +* Reserve memory used for lowcore. +*/ +static void __init reserve_lowcore (void ) +{ +void *lowcore_start =get_lowcore (); +void *lowcore_end = lowcore_start +sizeof (struct lowcore ); +void *start, *end; + +if ((void *)__identity_base < lowcore_end) { + start =max (lowcore_start, (void *)__identity_base); + end =min (lowcore_end, (void *)(__identity_base + ident_map_size)); +memblock_reserve (__pa (start),__pa (end)); + } +} + +/* +* Reserve memory used for absolute lowcore/command line/kernel image. */ static void __init reserve_kernel (void ) {
@@ -939,6 +955,7 @@ void __init setup_arch(char **cmdline_p)/* Do some memory reservations *before* memory is added to memblock */ reserve_pgtables (); +reserve_lowcore ();reserve_kernel ();reserve_initrd ();reserve_certificate_list ();
Signature · 1 line
2.43.0
Re: [PATCH 6.6 32/91] s390/mm: Prevent lowcore vs identity mapping overlap
Quoted 1 line · Greg Kroah-Hartman
6.6-stable review patch. If anyone has any objections, please let me know.
Hi Greg,
Could you please drop this commit from 6.6-stable?
Thanks!
Quoted 65 lines
------------------
From: Alexander Gordeev <[email protected]>
[ Upstream commit
a3ca27c405faad584af6e8e38cdafe5be73230a1]The identity mapping position in virtual memory is randomized together with the kernel mapping. That position can never overlap with the lowcore even when the lowcore is relocated.
Prevent overlapping with the lowcore to allow independent positioning of the identity mapping. With the current value of the alternative lowcore address of
0x70000the overlap could happen in case the identity mapping is placed at zero.This is a prerequisite for uncoupling of randomization base of kernel image and identity mapping in virtual memory.
Acked-by Vasily Gorbik <[email protected]>Signed-off-by Alexander Gordeev <[email protected]>Signed-off-by Vasily Gorbik <[email protected]>Signed-off-by Sasha Levin <[email protected]>--- arch/s390/kernel/setup.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)arch/s390/kernel/setup.c +18
-1@@ -741,7 +741,23 @@ static void __init memblock_add_physmem_info(void) }/* -* Reserve memory used for lowcore/command line/kernel image. +* Reserve memory used for lowcore. +*/ +static void __init reserve_lowcore (void ) +{ +void *lowcore_start =get_lowcore (); +void *lowcore_end = lowcore_start +sizeof (struct lowcore ); +void *start, *end; + +if ((void *)__identity_base < lowcore_end) { + start =max (lowcore_start, (void *)__identity_base); + end =min (lowcore_end, (void *)(__identity_base + ident_map_size)); +memblock_reserve (__pa (start),__pa (end)); + } +} + +/* +* Reserve memory used for absolute lowcore/command line/kernel image. */ static void __init reserve_kernel (void ) {@@ -939,6 +955,7 @@ void __init setup_arch(char **cmdline_p)/* Do some memory reservations *before* memory is added to memblock */ reserve_pgtables (); +reserve_lowcore ();reserve_kernel ();reserve_initrd ();reserve_certificate_list ();Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerRe: [PATCH 6.6 32/91] s390/mm: Prevent lowcore vs identity mapping overlap
Quoted 6 lines · Alexander Gordeev
Quoted 1 line · Greg Kroah-Hartman
6.6-stable review patch. If anyone has any objections, please let me know.
Hi Greg,
Could you please drop this commit from 6.6-stable?
Why just this one? What about 6.10.y? 6.11?
thanks,
greg k-h
Re: [PATCH 6.6 32/91] s390/mm: Prevent lowcore vs identity mapping overlap
Quoted 2 lines · Greg Kroah-Hartman
Quoted 1 line
Could you please drop this commit from 6.6-stable?
Why just this one? What about 6.10.y? 6.11?
Thanks for pointing out!
Yes, please drop it from 6.10 as well. There is no relocatable lowcore support in 6.10, which this patch fixes up. And it is already included in 6.11, starting from v6.11-rc5.
Quoted 1 line
thanks,
Thank you!
Quoted 1 line
greg k-h
Greg Kroah-Hartman
maintainerRe: [PATCH 6.6 32/91] s390/mm: Prevent lowcore vs identity mapping overlap
Quoted 9 lines · Alexander Gordeev
Quoted 2 lines · Greg Kroah-Hartman
Quoted 1 line
Could you please drop this commit from 6.6-stable?
Why just this one? What about 6.10.y? 6.11?
Thanks for pointing out!
Yes, please drop it from 6.10 as well. There is no relocatable lowcore support in 6.10, which this patch fixes up. And it is already included in 6.11, starting from v6.11-rc5.
Great, it turned out to also break the build, so that's a good reason to drop it :)
now removed,
greg k-h
Greg Kroah-Hartman
maintainerPATCH 33/91 smb/server: fix return value of smb2_open()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: ChenXiaoSong <[email protected]>
[ Upstream commit 2186a116538a715b20e15f84fdd3545e5fe0a39b ]
In most error cases, error code is not returned in smb2_open(), __process_request() will not print error message.
Fix this by returning the correct value at the end of smb2_open().
--- fs/smb/server/smb2pdu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/smb/server/smb2pdu.c +1 -1
@@ -3714,7 +3714,7 @@ int smb2_open(struct ksmbd_work *work)kfree (name);kfree (lc); -return 0 ; +return rc; }static int readdir_info_level_struct_sz (int info_level)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 34/91 NFSv4: Fix clearing of layout segments in layoutreturn
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Trond Myklebust <[email protected]>
[ Upstream commit d72b7963115bea971a28eaa2cb76722c023f9fdf ]
Make sure that we clear the layout segments in cases where we see a fatal error, and also in the case where the layout is invalid.
--- fs/nfs/nfs4proc.c | 9 ++++++--- fs/nfs/pnfs.c | 5 ++--- 2 files changed, 8 insertions(+), 6 deletions(-)
fs/nfs/nfs4proc.c +6 -3
@@ -9845,13 +9845,16 @@ static void nfs4_layoutreturn_done(struct rpc_task *task, void *calldata) fallthrough;default : task->tk_status =0 ; + lrp->res.lrs_present =0 ; fallthrough;case 0 :break ;case -NFS4ERR_DELAY : -if (nfs4_async_handle_error (task, server,NULL ,NULL ) != -EAGAIN ) -break ; - goto out_restart; +if (nfs4_async_handle_error (task, server,NULL ,NULL ) == + -EAGAIN ) + goto out_restart; + lrp->res.lrs_present =0 ; +break ; }return ; out_restart:
fs/nfs/pnfs.c +2 -3
@@ -1172,10 +1172,9 @@ void pnfs_layoutreturn_free_lsegs(struct pnfs_layout_hdr *lo,LIST_HEAD (freeme);spin_lock (&inode->i_lock); -if (!pnfs_layout_is_valid (lo) || - !nfs4_stateid_match_other (&lo->plh_stateid, arg_stateid)) +if (!nfs4_stateid_match_other (&lo->plh_stateid, arg_stateid)) goto out_unlock; -if (stateid) { +if (stateid &&pnfs_layout_is_valid (lo)) {u32 seq =be32_to_cpu (arg_stateid->seqid);pnfs_mark_matching_lsegs_invalid (lo, &freeme, range, seq);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 35/91 NFS: Avoid unnecessary rescanning of the per-server delegation list
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Trond Myklebust <[email protected]>
[ Upstream commit f92214e4c312f6ea9d78650cc6291d200f17abb6 ]
If the call to nfs_delegation_grab_inode() fails, we will not have dropped any locks that require us to rescan the list.
--- fs/nfs/delegation.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-)
fs/nfs/delegation.c +5 -10
@@ -627,6 +627,9 @@ static int nfs_server_return_marked_delegations(struct nfs_server *server, prev = delegation;continue ; } + inode =nfs_delegation_grab_inode (delegation); +if (inode ==NULL ) +continue ;if (prev) {struct inode *tmp =nfs_delegation_grab_inode (prev);
@@ -637,12 +640,6 @@ static int nfs_server_return_marked_delegations(struct nfs_server *server, } } - inode =nfs_delegation_grab_inode (delegation); -if (inode ==NULL ) { -rcu_read_unlock (); -iput (to_put); - goto restart; - } delegation =nfs_start_delegation_return_locked (NFS_I (inode));rcu_read_unlock ();
@@ -1164,7 +1161,6 @@ static int nfs_server_reap_unclaimed_delegations(struct nfs_server *server,struct inode *inode; restart:rcu_read_lock (); -restart_locked:list_for_each_entry_rcu (delegation, &server->delegations, super_list) { if (test_bit(NFS_DELEGATION_INODE_FREEING, &delegation->flags) ||
@@ -1175,7 +1171,7 @@ static int nfs_server_reap_unclaimed_delegations(struct nfs_server *server,continue ; inode =nfs_delegation_grab_inode (delegation);if (inode ==NULL ) - goto restart_locked; +continue ; delegation =nfs_start_delegation_return_locked (NFS_I (inode));rcu_read_unlock ();if (delegation !=NULL ) {
@@ -1296,7 +1292,6 @@ static int nfs_server_reap_expired_delegations(struct nfs_server *server,nfs4_stateid stateid; restart:rcu_read_lock (); -restart_locked:list_for_each_entry_rcu (delegation, &server->delegations, super_list) { if (test_bit(NFS_DELEGATION_INODE_FREEING, &delegation->flags) ||
@@ -1307,7 +1302,7 @@ static int nfs_server_reap_expired_delegations(struct nfs_server *server,continue ; inode =nfs_delegation_grab_inode (delegation);if (inode ==NULL ) - goto restart_locked; +continue ;spin_lock (&delegation->lock); cred =get_cred_rcu (delegation->cred);nfs4_stateid_copy (&stateid, &delegation->stateid);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 36/91 platform/x86: panasonic-laptop: Fix SINF array out of bounds accesses
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
commit f52e98d16e9bd7dd2b3aef8e38db5cbc9899d6a4 upstream.
The panasonic laptop code in various places uses the SINF array with index values of 0 - SINF_CUR_BRIGHT(0x0d) without checking that the SINF array is big enough.
Not all panasonic laptops have this many SINF array entries, for example the Toughbook CF-18 model only has 10 SINF array entries. So it only supports the AC+DC brightness entries and mute.
Check that the SINF array has a minimum size which covers all AC+DC brightness entries and refuse to load if the SINF array is smaller.
For higher SINF indexes hide the sysfs attributes when the SINF array does not contain an entry for that attribute, avoiding show()/store() accessing the array out of bounds and add bounds checking to the probe() and resume() code accessing these.
--- drivers/platform/x86/panasonic-laptop.c | 49 +++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 10 deletions(-)
drivers/platform/x86/panasonic-laptop.c +39 -10
@@ -773,6 +773,24 @@ static DEVICE_ATTR_RW(dc_brightness);static DEVICE_ATTR_RW (current_brightness);static DEVICE_ATTR_RW (cdpower); +static umode_t pcc_sysfs_is_visible (struct kobject *kobj,struct attribute *attr,int idx) +{ +struct device *dev =kobj_to_dev (kobj); +struct acpi_device *acpi =to_acpi_device (dev); +struct pcc_acpi *pcc =acpi_driver_data (acpi); + +if (attr == &dev_attr_mute.attr) +return (pcc->num_sifr >SINF_MUTE ) ? attr->mode :0 ; + +if (attr == &dev_attr_eco_mode.attr) +return (pcc->num_sifr >SINF_ECO_MODE ) ? attr->mode :0 ; + +if (attr == &dev_attr_current_brightness.attr) +return (pcc->num_sifr >SINF_CUR_BRIGHT ) ? attr->mode :0 ; + +return attr->mode; +} +static struct attribute *pcc_sysfs_entries[] = { &dev_attr_numbatt.attr, &dev_attr_lcdtype.attr,
@@ -787,8 +805,9 @@ static struct attribute *pcc_sysfs_entri };static const struct attribute_group pcc_attr_group = { - .name =NULL ,/* put in device directory */ - .attrs = pcc_sysfs_entries, + .name =NULL ,/* put in device directory */ + .attrs = pcc_sysfs_entries, + .is_visible = pcc_sysfs_is_visible, };
@@ -941,12 +960,15 @@ static int acpi_pcc_hotkey_resume(structif (!pcc)return -EINVAL ; -acpi_pcc_write_sset (pcc,SINF_MUTE , pcc->mute); -acpi_pcc_write_sset (pcc,SINF_ECO_MODE , pcc->eco_mode); +if (pcc->num_sifr >SINF_MUTE ) +acpi_pcc_write_sset (pcc,SINF_MUTE , pcc->mute); +if (pcc->num_sifr >SINF_ECO_MODE ) +acpi_pcc_write_sset (pcc,SINF_ECO_MODE , pcc->eco_mode);acpi_pcc_write_sset (pcc,SINF_STICKY_KEY , pcc->sticky_key);acpi_pcc_write_sset (pcc,SINF_AC_CUR_BRIGHT , pcc->ac_brightness);acpi_pcc_write_sset (pcc,SINF_DC_CUR_BRIGHT , pcc->dc_brightness); -acpi_pcc_write_sset (pcc,SINF_CUR_BRIGHT , pcc->current_brightness); +if (pcc->num_sifr >SINF_CUR_BRIGHT ) +acpi_pcc_write_sset (pcc,SINF_CUR_BRIGHT , pcc->current_brightness);return 0 ; }
@@ -963,8 +985,12 @@ static int acpi_pcc_hotkey_add(struct ac num_sifr =acpi_pcc_get_sqty (device); -if (num_sifr <0 || num_sifr >255 ) { -pr_err ("num_sifr out of range" ); +/* +* pcc->sinf is expected to at least have the AC+DC brightness entries. +* Accesses to higher SINF entries are checked against num_sifr. +*/ +if (num_sifr <=SINF_DC_CUR_BRIGHT || num_sifr >255 ) { +pr_err ("num_sifr %d out of range %d - 255\n" , num_sifr,SINF_DC_CUR_BRIGHT +1 );return -ENODEV ; }
@@ -1020,11 +1046,14 @@ static int acpi_pcc_hotkey_add(struct acacpi_pcc_write_sset (pcc,SINF_STICKY_KEY ,0 ); pcc->sticky_key =0 ; - pcc->eco_mode = pcc->sinf[SINF_ECO_MODE ]; - pcc->mute = pcc->sinf[SINF_MUTE ]; pcc->ac_brightness = pcc->sinf[SINF_AC_CUR_BRIGHT ]; pcc->dc_brightness = pcc->sinf[SINF_DC_CUR_BRIGHT ]; - pcc->current_brightness = pcc->sinf[SINF_CUR_BRIGHT ]; +if (pcc->num_sifr >SINF_MUTE ) + pcc->mute = pcc->sinf[SINF_MUTE ]; +if (pcc->num_sifr >SINF_ECO_MODE ) + pcc->eco_mode = pcc->sinf[SINF_ECO_MODE ]; +if (pcc->num_sifr >SINF_CUR_BRIGHT ) + pcc->current_brightness = pcc->sinf[SINF_CUR_BRIGHT ];/* add sysfs attributes */ result =sysfs_create_group (&device->dev.kobj, &pcc_attr_group);
Greg Kroah-Hartman
maintainerPATCH 37/91 platform/x86: panasonic-laptop: Allocate 1 entry extra in the sinf array
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hans de Goede <[email protected]>
commit 33297cef3101d950cec0033a0dce0a2d2bd59999 upstream.
Some DSDT-s have an off-by-one bug where the SINF package count is one higher than the SQTY reported value, allocate 1 entry extra.
Also make the SQTY <-> SINF package count mismatch error more verbose to help debugging similar issues in the future.
This fixes the panasonic-laptop driver failing to probe() on some devices with the following errors:
[ 3.958887] SQTY reports bad SINF length SQTY: 37 SINF-pkg-count: 38 [ 3.958892] Couldn't retrieve BIOS data [ 3.983685] Panasonic Laptop Support - With Macros: probe of MAT0019:00 failed with error -5
--- drivers/platform/x86/panasonic-laptop.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/platform/x86/panasonic-laptop.c +8 -1
@@ -337,7 +337,8 @@ static int acpi_pcc_retrieve_biosdata(st }if (pcc->num_sifr < hkey->package.count) { -pr_err ("SQTY reports bad SINF length\n" ); +pr_err ("SQTY reports bad SINF length SQTY: %lu SINF-pkg-count: %u\n" , + pcc->num_sifr, hkey->package.count); status =AE_ERROR ; goto end; }
@@ -994,6 +995,12 @@ static int acpi_pcc_hotkey_add(struct acreturn -ENODEV ; } +/* +* Some DSDT-s have an off-by-one bug where the SINF package count is +* one higher than the SQTY reported value, allocate 1 entry extra. +*/ + num_sifr++; + pcc =kzalloc (sizeof (struct pcc_acpi ),GFP_KERNEL );if (!pcc) {pr_err ("Couldn't allocate mem for pcc" );
Greg Kroah-Hartman
maintainerPATCH 38/91 mptcp: pm: Fix uaf in __timer_delete_sync
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Edward Adam Davis <[email protected]>
commit b4cd80b0338945a94972ac3ed54f8338d2da2076 upstream.
There are two paths to access mptcp_pm_del_add_timer, result in a race condition:
CPU1 CPU2
==== ====
net_rx_action
napi_poll netlink_sendmsg
__napi_poll netlink_unicast
process_backlog netlink_unicast_kernel
__netif_receive_skb genl_rcv
__netif_receive_skb_one_core netlink_rcv_skb
NF_HOOK genl_rcv_msg
ip_local_deliver_finish genl_family_rcv_msg
ip_protocol_deliver_rcu genl_family_rcv_msg_doit
tcp_v4_rcv mptcp_pm_nl_flush_addrs_doit
tcp_v4_do_rcv mptcp_nl_remove_addrs_list
tcp_rcv_established mptcp_pm_remove_addrs_and_subflows
tcp_data_queue remove_anno_list_by_saddr
mptcp_incoming_options mptcp_pm_del_add_timer
mptcp_pm_del_add_timer kfree(entry)In remove_anno_list_by_saddr(running on CPU2), after leaving the critical zone protected by "pm.lock", the entry will be released, which leads to the occurrence of uaf in the mptcp_pm_del_add_timer(running on CPU1).
Keeping a reference to add_timer inside the lock, and calling sk_stop_timer_sync() with this reference, instead of "entry->add_timer".
Move list_del(&entry->list) to mptcp_pm_del_add_timer and inside the pm lock, do not directly access any members of the entry outside the pm lock, which can avoid similar "entry->x" uaf.
--- net/mptcp/pm_netlink.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-)
net/mptcp/pm_netlink.c +9 -4
@@ -339,15 +339,21 @@ mptcp_pm_del_add_timer(struct mptcp_sock {struct mptcp_pm_add_entry *entry;struct sock *sk = (struct sock *)msk; +struct timer_list *add_timer =NULL ;spin_lock_bh (&msk->pm.lock); entry =mptcp_lookup_anno_list_by_saddr (msk, addr); -if (entry && (!check_id || entry->addr.id == addr->id)) +if (entry && (!check_id || entry->addr.id == addr->id)) { entry->retrans_times =ADD_ADDR_RETRANS_MAX ; + add_timer = &entry->add_timer; + } +if (!check_id && entry) +list_del (&entry->list);spin_unlock_bh (&msk->pm.lock); -if (entry && (!check_id || entry->addr.id == addr->id)) -sk_stop_timer_sync (sk, &entry->add_timer); +/* no lock, because sk_stop_timer_sync() is calling del_timer_sync() */ +if (add_timer) +sk_stop_timer_sync (sk, add_timer);return entry; }
@@ -1493,7 +1499,6 @@ static bool remove_anno_list_by_saddr(st entry =mptcp_pm_del_add_timer (msk, addr, false);if (entry) { -list_del (&entry->list);kfree (entry);return true; }
Greg Kroah-Hartman
maintainerPATCH 39/91 selftests: mptcp: join: restrict fullmesh endp on 1st sf
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Matthieu Baerts (NGI0) <[email protected]>
commit 49ac6f05ace5bb0070c68a0193aa05d3c25d4c83 upstream.
A new endpoint using the IP of the initial subflow has been recently added to increase the code coverage. But it breaks the test when using old kernels not having commit 86e39e04482b ("mptcp: keep track of local endpoint still available for each msk"), e.g. on v5.15.
Similar to commit d4c81bbb8600 ("selftests: mptcp: join: support local endpoint being tracked or not"), it is possible to add the new endpoint conditionally, by checking if "mptcp_pm_subflow_check_next" is present in kallsyms: this is not directly linked to the commit introducing this symbol but for the parent one which is linked anyway. So we can know in advance what will be the expected behaviour, and add the new endpoint only when it makes sense to do so.
--- tools/testing/selftests/net/mptcp/mptcp_join.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
tools/testing/selftests/net/mptcp/mptcp_join.sh +3 -1
@@ -3222,7 +3222,9 @@ fullmesh_tests() pm_nl_set_limits $ns1 1 3 pm_nl_set_limits $ns2 1 3 pm_nl_add_endpoint $ns1 10.0.2.1 flags signal - pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,fullmesh + if mptcp_lib_kallsyms_has "mptcp_pm_subflow_check_next$"; then + pm_nl_add_endpoint $ns2 10.0.1.2 flags subflow,fullmesh + fi fullmesh=1 speed=slow \ run_tests $ns1 $ns2 10.0.1.1 chk_join_nr 3 3 3
Greg Kroah-Hartman
maintainerPATCH 40/91 arm64: dts: rockchip: fix eMMC/SPI corruption when audio has been used on RK3399 Puma
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Quentin Schulz <[email protected]>
commit bb94a157b37ec23f53906a279320f6ed64300eba upstream.
In commit 91419ae0420f ("arm64: dts: rockchip: use BCLK to GPIO switch on rk3399"), an additional pinctrl state was added whose default pinmux is for 8ch i2s0. However, Puma only has 2ch i2s0. It's been overriding the pinctrl-0 property but the second property override was missed in the aforementioned commit.
On Puma, a hardware slider called "BIOS Disable/Normal Boot" can disable eMMC and SPI to force booting from SD card. Another software-controlled GPIO is then configured to override this behavior to make eMMC and SPI available without human intervention. This is currently done in U-Boot and it was enough until the aforementioned commit.
Indeed, because of this additional not-yet-overridden property, this software-controlled GPIO is now muxed in a state that does not override this hardware slider anymore, rendering SPI and eMMC flashes unusable.
Let's override the property with the 2ch pinmux to fix this.
--- arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-)
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +11 -2
@@ -374,6 +374,7 @@ &i2s0 { pinctrl-0 = <&i2s0_2ch_bus>; + pinctrl-1 = <&i2s0_2ch_bus_bclk_off>; rockchip,playback-channels = <2>; rockchip,capture-channels = <2>; status = "okay";
@@ -382,8 +383,8 @@ /* * As Q7 does not specify neither a global nor a RX clock for I2S these * signals are not used. Furthermore I2S0_LRCK_RX is used as GPIO. - * Therefore we have to redefine the i2s0_2ch_bus definition to prevent - * conflicts. + * Therefore we have to redefine the i2s0_2ch_bus and i2s0_2ch_bus_bclk_off + * definitions to prevent conflicts. */ &i2s0_2ch_bus { rockchip,pins =
@@ -391,6 +392,14 @@ <3 RK_PD2 1 &pcfg_pull_none>, <3 RK_PD3 1 &pcfg_pull_none>, <3 RK_PD7 1 &pcfg_pull_none>; +}; + +&i2s0_2ch_bus_bclk_off { + rockchip,pins = + <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>, + <3 RK_PD2 1 &pcfg_pull_none>, + <3 RK_PD3 1 &pcfg_pull_none>, + <3 RK_PD7 1 &pcfg_pull_none>; }; &io_domains {
Greg Kroah-Hartman
maintainerPATCH 41/91 arm64: dts: rockchip: override BIOS_DISABLE signal via GPIO hog on RK3399 Puma
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Quentin Schulz <[email protected]>
commit 741f5ba7ccba5d7ae796dd11c320e28045524771 upstream.
The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module eMMC and SPI flash powered-down initially (in fact it keeps the reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to override that signal so that eMMC and SPI can be used regardless of the state of the signal.
Let's make this GPIO a hog so that it's reserved and locked in the proper state.
At the same time, make sure the pin is reserved for the hog and cannot be requested by another node.
--- arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-)
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi +22 -1
@@ -119,6 +119,22 @@ drive-impedance-ohm = <33>; }; +&gpio3 { + /* + * The Qseven BIOS_DISABLE signal on the RK3399-Q7 keeps the on-module + * eMMC and SPI flash powered-down initially (in fact it keeps the + * reset signal asserted). BIOS_DISABLE_OVERRIDE pin allows to override + * that signal so that eMMC and SPI can be used regardless of the state + * of the signal. + */ + bios-disable-override-hog { + gpios = <RK_PD5 GPIO_ACTIVE_LOW>; + gpio-hog; + line-name = "bios_disable_override"; + output-high; + }; +}; + &gmac { assigned-clocks = <&cru SCLK_RMII_SRC>; assigned-clock-parents = <&clkin_gmac>;
@@ -417,9 +433,14 @@ &pinctrl { pinctrl-names = "default"; - pinctrl-0 = <&q7_thermal_pin>; + pinctrl-0 = <&q7_thermal_pin &bios_disable_override_hog_pin>; gpios { + bios_disable_override_hog_pin: bios-disable-override-hog-pin { + rockchip,pins = + <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_down>; + }; + q7_thermal_pin: q7-thermal-pin { rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
Greg Kroah-Hartman
maintainerPATCH 42/91 minmax: reduce min/max macro expansion in atomisp driver
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Lorenzo Stoakes <[email protected]>
commit 7c6a3a65ace70f12b27b1a27c9a69cb791dc6e91 upstream.
Avoid unnecessary nested min()/max() which results in egregious macro expansion.
Use clamp_t() as this introduces the least possible expansion, and turn the {s,u}DIGIT_FITTING() macros into inline functions to avoid the nested expansion.
This resolves an issue with slackware 15.0 32-bit compilation as reported by Richard Narron.
Presumably the min/max fixups would be difficult to backport, this patch should be easier and fix's Richard's problem in 5.15.
--- drivers/staging/media/atomisp/pci/sh_css_frac.h | 26 +++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-)
drivers/staging/media/atomisp/pci/sh_css_frac.h +19 -7
@@ -30,12 +30,24 @@#define uISP_VAL_MAX ((unsigned int)((1 << uISP_REG_BIT) - 1))/* a:fraction bits for 16bit precision, b:fraction bits for ISP precision */ -#define sDIGIT_FITTING (v, a, b) \ - min_t(int, max_t(int, (((v) >> sSHIFT) >> max(sFRACTION_BITS_FITTING(a) - (b), 0)), \ - sISP_VAL_MIN), sISP_VAL_MAX) -#define uDIGIT_FITTING (v, a, b) \ - min((unsigned int)max((unsigned)(((v) >> uSHIFT) \ - >> max((int)(uFRACTION_BITS_FITTING(a) - (b)), 0)), \ - uISP_VAL_MIN), uISP_VAL_MAX) +static inline int sDIGIT_FITTING (int v,int a,int b) +{ +int fit_shift =sFRACTION_BITS_FITTING (a) - b; + + v >>= sSHIFT; + v >>= fit_shift >0 ? fit_shift :0 ; + +return clamp_t (int, v, sISP_VAL_MIN, sISP_VAL_MAX); +} + +static inline unsigned int uDIGIT_FITTING (unsigned int v,int a,int b) +{ +int fit_shift =uFRACTION_BITS_FITTING (a) - b; + + v >>= uSHIFT; + v >>= fit_shift >0 ? fit_shift :0 ; + + return clamp_t(unsigned int, v, uISP_VAL_MIN, uISP_VAL_MAX); +}#endif /* __SH_CSS_FRAC_H */
Greg Kroah-Hartman
maintainerPATCH 43/91 net: tighten bad gso csum offset check in virtio_net_hdr
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Willem de Bruijn <[email protected]>
commit 6513eb3d3191574b58859ef2d6dc26c0277c6f81 upstream.
The referenced commit drops bad input, but has false positives. Tighten the check to avoid these.
The check detects illegal checksum offload requests, which produce csum_start/csum_off beyond end of packet after segmentation.
But it is based on two incorrect assumptions:
1. virtio_net_hdr_to_skb with VIRTIO_NET_HDR_GSO_TCP[46] implies GSO. True in callers that inject into the tx path, such as tap. But false in callers that inject into rx, like virtio-net. Here, the flags indicate GRO, and CHECKSUM_UNNECESSARY or CHECKSUM_NONE without VIRTIO_NET_HDR_F_NEEDS_CSUM is normal.
2. TSO requires checksum offload, i.e., ip_summed == CHECKSUM_PARTIAL. False, as tcp[46]_gso_segment will fix up csum_start and offset for all other ip_summed by calling __tcp_v4_send_check.
Because of 2, we can limit the scope of the fix to virtio_net_hdr that do try to set these fields, with a bogus value.
--- include/linux/virtio_net.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
include/linux/virtio_net.h +2 -1
@@ -173,7 +173,8 @@ retry:break ;case SKB_GSO_TCPV4 :case SKB_GSO_TCPV6 : -if (skb->csum_offset != offsetof(struct tcphdr , check)) +if (skb->ip_summed ==CHECKSUM_PARTIAL && + skb->csum_offset != offsetof(struct tcphdr , check))return -EINVAL ;break ; }
Greg Kroah-Hartman
maintainerPATCH 44/91 dm-integrity: fix a race condition when accessing recalc_sector
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mikulas Patocka <[email protected]>
commit f8e1ca92e35e9041cc0a1bc226ef07a853a22de4 upstream.
There's a race condition when accessing the variable ic->sb->recalc_sector. The function integrity_recalc writes to this variable when it makes some progress and the function dm_integrity_map_continue may read this variable concurrently.
One problem is that on 32-bit architectures the 64-bit variable is not read and written atomically - it may be possible to read garbage if read races with write.
Another problem is that memory accesses to this variable are not guarded with memory barriers.
This commit fixes the race - it moves reading ic->sb->recalc_sector to an earlier place where we hold &ic->endio_wait.lock.
--- drivers/md/dm-integrity.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/md/dm-integrity.c +3 -1
@@ -2183,6 +2183,7 @@ static void dm_integrity_map_continue(ststruct bio *bio =dm_bio_from_per_bio_data (dio,sizeof (struct dm_integrity_io ));unsigned int journal_section, journal_entry;unsigned int journal_read_pos; +sector_t recalc_sector;struct completion read_comp;bool discard_retried = false;bool need_sync_io = ic->internal_hash && dio->op ==REQ_OP_READ ;
@@ -2323,6 +2324,7 @@ offload_to_thread: goto lock_retry; } } + recalc_sector =le64_to_cpu (ic->sb->recalc_sector);spin_unlock_irq (&ic->endio_wait.lock);if (unlikely (journal_read_pos !=NOT_FOUND )) {
@@ -2377,7 +2379,7 @@ offload_to_thread: if (need_sync_io) { wait_for_completion_io(&read_comp); if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING) && - dio->range.logical_sector + dio->range.n_sectors > le64_to_cpu(ic->sb->recalc_sector)) + dio->range.logical_sector + dio->range.n_sectors > recalc_sector) goto skip_check; if (ic->mode == 'B') { if (!block_bitmap_op(ic, ic->recalc_bitmap, dio->range.logical_sector,
Greg Kroah-Hartman
maintainerPATCH 45/91 x86/hyperv: fix kexec crash due to VP assist page corruption
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Anirudh Rayabharam (Microsoft) <[email protected]>
commit b9af6418279c4cf73ca073f8ea024992b38be8ab upstream.
commit 9636be85cc5b ("x86/hyperv: Fix hyperv_pcpu_input_arg handling when CPUs go online/offline") introduces a new cpuhp state for hyperv initialization.
cpuhp_setup_state() returns the state number if state is CPUHP_AP_ONLINE_DYN or CPUHP_BP_PREPARE_DYN and 0 for all other states. For the hyperv case, since a new cpuhp state was introduced it would return 0. However, in hv_machine_shutdown(), the cpuhp_remove_state() call is conditioned upon "hyperv_init_cpuhp > 0". This will never be true and so hv_cpu_die() won't be called on all CPUs. This means the VP assist page won't be reset. When the kexec kernel tries to setup the VP assist page again, the hypervisor corrupts the memory region of the old VP assist page causing a panic in case the kexec kernel is using that memory elsewhere. This was originally fixed in commit dfe94d4086e4 ("x86/hyperv: Fix kexec panic/hang issues").
Get rid of hyperv_init_cpuhp entirely since we are no longer using a dynamic cpuhp state and use CPUHP_AP_HYPERV_ONLINE directly with cpuhp_remove_state().
Message-ID: <[email protected]>
--- arch/x86/hyperv/hv_init.c | 5 +---- arch/x86/include/asm/mshyperv.h | 1 - arch/x86/kernel/cpu/mshyperv.c | 4 ++-- 3 files changed, 3 insertions(+), 7 deletions(-)
arch/x86/hyperv/hv_init.c +1 -4
@@ -35,7 +35,6 @@#include <clocksource/hyperv_timer.h> #include <linux/highmem.h> -int hyperv_init_cpuhp;u64 hv_current_partition_id = ~0ull ;EXPORT_SYMBOL_GPL (hv_current_partition_id);
@@ -607,8 +606,6 @@ skip_hypercall_pg_init:register_syscore_ops (&hv_syscore_ops); - hyperv_init_cpuhp = cpuhp; -if (cpuid_ebx (HYPERV_CPUID_FEATURES ) &HV_ACCESS_PARTITION_ID )hv_get_partition_id ();
@@ -637,7 +634,7 @@ skip_hypercall_pg_init: clean_guest_os_id:wrmsrl (HV_X64_MSR_GUEST_OS_ID ,0 );hv_ivm_msr_write (HV_X64_MSR_GUEST_OS_ID ,0 ); -cpuhp_remove_state (cpuhp); +cpuhp_remove_state (CPUHP_AP_HYPERV_ONLINE ); free_ghcb_page:free_percpu (hv_ghcb_pg); free_vp_assist_page:
arch/x86/include/asm/mshyperv.h +0 -1
@@ -40,7 +40,6 @@ static inline unsigned char hv_get_nmi_r }#if IS_ENABLED (CONFIG_HYPERV ) -extern int hyperv_init_cpuhp;extern bool hyperv_paravisor_present;extern void *hv_hypercall_pg;
arch/x86/kernel/cpu/mshyperv.c +2 -2
@@ -199,8 +199,8 @@ static void hv_machine_shutdown(void)* Call hv_cpu_die() on all the CPUs, otherwise later the hypervisor * corrupts the old VP Assist Pages and can crash the kexec kernel. */ -if (kexec_in_progress && hyperv_init_cpuhp >0 ) -cpuhp_remove_state (hyperv_init_cpuhp); +if (kexec_in_progress) +cpuhp_remove_state (CPUHP_AP_HYPERV_ONLINE );/* The function calls stop_other_cpus(). */ native_machine_shutdown ();
Greg Kroah-Hartman
maintainerPATCH 46/91 mm: avoid leaving partial pfn mappings around in error case
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Linus Torvalds <[email protected]>
commit 79a61cc3fc0466ad2b7b89618a6157785f0293b3 upstream.
As Jann points out, PFN mappings are special, because unlike normal memory mappings, there is no lifetime information associated with the mapping - it is just a raw mapping of PFNs with no reference counting of a 'struct page'.
That's all very much intentional, but it does mean that it's easy to mess up the cleanup in case of errors. Yes, a failed mmap() will always eventually clean up any partial mappings, but without any explicit lifetime in the page table mapping itself, it's very easy to do the error handling in the wrong order.
In particular, it's easy to mistakenly free the physical backing store before the page tables are actually cleaned up and (temporarily) have stale dangling PTE entries.
To make this situation less error-prone, just make sure that any partial pfn mapping is torn down early, before any other error handling.
--- mm/memory.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-)
mm/memory.c +22 -5
@@ -2424,11 +2424,7 @@ static inline int remap_p4d_range(structreturn 0 ; } -/* -* Variant of remap_pfn_range that does not call track_pfn_remap. The caller -* must have pre-validated the caching bits of the pgprot_t. -*/ -int remap_pfn_range_notrack (struct vm_area_struct *vma,unsigned long addr, +static int remap_pfn_range_internal (struct vm_area_struct *vma,unsigned long addr,unsigned long pfn,unsigned long size,pgprot_t prot) {pgd_t *pgd;
@@ -2481,6 +2477,27 @@ int remap_pfn_range_notrack(struct vm_arreturn 0 ; } +/* +* Variant of remap_pfn_range that does not call track_pfn_remap. The caller +* must have pre-validated the caching bits of the pgprot_t. +*/ +int remap_pfn_range_notrack (struct vm_area_struct *vma,unsigned long addr, +unsigned long pfn,unsigned long size,pgprot_t prot) +{ +int error =remap_pfn_range_internal (vma, addr, pfn, size, prot); + +if (!error) +return 0 ; + +/* +* A partial pfn range mapping is dangerous: it does not +* maintain page reference counts, and callers may free +* pages due to the error. So zap it early. +*/ +zap_page_range_single (vma, addr, size,NULL ); +return error; +} +/** * remap_pfn_range - remap kernel memory to userspace * @vma: user vma to map to
Greg Kroah-Hartman
maintainerPATCH 47/91 net: xilinx: axienet: Fix race in axienet_stop
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Anderson <[email protected]>
commit 858430db28a5f5a11f8faa3a6fa805438e6f0851 upstream.
axienet_dma_err_handler can race with axienet_stop in the following manner:
CPU 1 CPU 2
====================== ==================axienet_stop()
napi_disable()
axienet_dma_stop()
axienet_dma_err_handler()
napi_disable()
axienet_dma_stop()
axienet_dma_start()
napi_enable()
cancel_work_sync()
free_irq()Fix this by setting a flag in axienet_stop telling axienet_dma_err_handler not to bother doing anything. I chose not to use disable_work_sync to allow for easier backporting.
--- drivers/net/ethernet/xilinx/xilinx_axienet.h | 3 +++ drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 8 ++++++++ 2 files changed, 11 insertions(+)
drivers/net/ethernet/xilinx/xilinx_axienet.h +3 -0
@@ -419,6 +419,8 @@ struct axidma_bd {* @tx_bytes: TX byte count for statistics * @tx_stat_sync: Synchronization object for TX stats * @dma_err_task: Work structure to process Axi DMA errors +* @stopping: Set when @dma_err_task shouldn't do anything because we are +* about to stop the device. * @tx_irq: Axidma TX IRQ number * @rx_irq: Axidma RX IRQ number * @eth_irq: Ethernet core IRQ number
@@ -481,6 +483,7 @@ struct axienet_local {struct u64_stats_sync tx_stat_sync;struct work_struct dma_err_task; +bool stopping;int tx_irq;int rx_irq;
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +8 -0
@@ -1162,6 +1162,7 @@ static int axienet_open(struct net_devicphylink_start (lp->phylink);/* Enable worker thread for Axi DMA error handling */ + lp->stopping = false;INIT_WORK (&lp->dma_err_task, axienet_dma_err_handler);napi_enable (&lp->napi_rx);
@@ -1217,6 +1218,9 @@ static int axienet_stop(struct net_devicdev_dbg (&ndev->dev,"axienet_close()\n" ); +WRITE_ONCE (lp->stopping, true); +flush_work (&lp->dma_err_task); +napi_disable (&lp->napi_tx);napi_disable (&lp->napi_rx);
@@ -1761,6 +1765,10 @@ static void axienet_dma_err_handler(stru dma_err_task);struct net_device *ndev = lp->ndev; +/* Don't bother if we are going to stop anyway */ +if (READ_ONCE (lp->stopping)) +return ; +napi_disable (&lp->napi_tx);napi_disable (&lp->napi_rx);
Greg Kroah-Hartman
maintainerPATCH 48/91 arm64: dts: rockchip: fix PMIC interrupt pin in pinctrl for ROCK Pi E
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: FUKAUMI Naoki <[email protected]>
[ Upstream commit c623e9daf60a0275d623ce054601550e54987f5b ]
use GPIO0_A2 as PMIC interrupt pin in pinctrl.
(I forgot to fix this part in previous commit.)
--- arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm64/boot/dts/rockchip/rk3328-rock-pi-e.dts +1 -1
@@ -332,7 +332,7 @@ led_pin: led-pin { pmic { pmic_int_l: pmic-int-l { - rockchip,pins = <2 RK_PA6 RK_FUNC_GPIO &pcfg_pull_up>; + rockchip,pins = <0 RK_PA2 RK_FUNC_GPIO &pcfg_pull_up>; }; };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 49/91 drm/amd/display: Disable error correction if its not supported
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cruise <[email protected]>
[ Upstream commit a8ac994cf0693a1ce59410995594e56124a1c79f ]
[Why]
Error correction was enabled in a monitor which doesn't support.
[How]
Disable error correction if it's not supported
Stable-dep-of: a8baec4623ae ("drm/amd/display: Fix FEC_READY write on DP LT")
--- .../display/dc/link/protocols/link_dp_phy.c | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-)
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c +21 -26
@@ -143,32 +143,27 @@ enum dc_status dp_set_fec_ready(struct dc_link *link, const struct link_resource link_enc =link_enc_cfg_get_link_enc (link);ASSERT (link_enc); +if (link_enc->funcs->fec_set_ready ==NULL ) +return DC_NOT_SUPPORTED ; -if (!dp_should_enable_fec (link)) -return status; - -if (link_enc->funcs->fec_set_ready && - link->dpcd_caps.fec_cap.bits.FEC_CAPABLE) { -if (ready) { +if (ready &&dp_should_enable_fec (link)) { +if (link->fec_state == dc_link_fec_not_ready) { fec_config =1 ; - status =core_link_write_dpcd (link, -DP_FEC_CONFIGURATION , - &fec_config, -sizeof (fec_config)); + + status =core_link_write_dpcd (link,DP_FEC_CONFIGURATION , + &fec_config,sizeof (fec_config)); +if (status ==DC_OK ) { link_enc->funcs->fec_set_ready (link_enc, true); link->fec_state = dc_link_fec_ready; - }else { - link_enc->funcs->fec_set_ready (link_enc, false); - link->fec_state = dc_link_fec_not_ready; -dm_error ("dpcd write failed to set fec_ready" ); } - }else if (link->fec_state == dc_link_fec_ready) { + } + }else { +if (link->fec_state == dc_link_fec_ready) { fec_config =0 ; - status =core_link_write_dpcd (link, -DP_FEC_CONFIGURATION , - &fec_config, -sizeof (fec_config)); +core_link_write_dpcd (link,DP_FEC_CONFIGURATION , + &fec_config,sizeof (fec_config)); + link_enc->funcs->fec_set_ready (link_enc, false); link->fec_state = dc_link_fec_not_ready; }
@@ -183,14 +178,12 @@ void dp_set_fec_enable(struct dc_link *link, bool enable) link_enc =link_enc_cfg_get_link_enc (link);ASSERT (link_enc); - -if (!dp_should_enable_fec (link)) +if (link_enc->funcs->fec_set_enable ==NULL )return ; -if (link_enc->funcs->fec_set_enable && - link->dpcd_caps.fec_cap.bits.FEC_CAPABLE) { -if (link->fec_state == dc_link_fec_ready && enable) { -/* Accord to DP spec, FEC enable sequence can first +if (enable &&dp_should_enable_fec (link)) { +if (link->fec_state == dc_link_fec_ready) { +/* According to DP spec, FEC enable sequence can first * be transmitted anytime after 1000 LL codes have * been transmitted on the link after link training * completion. Using 1 lane RBR should have the maximum
@@ -200,7 +193,9 @@ void dp_set_fec_enable(struct dc_link *link, bool enable)udelay (7 ); link_enc->funcs->fec_set_enable (link_enc, true); link->fec_state = dc_link_fec_enabled; - }else if (link->fec_state == dc_link_fec_enabled && !enable) { + } + }else { +if (link->fec_state == dc_link_fec_enabled) { link_enc->funcs->fec_set_enable (link_enc, false); link->fec_state = dc_link_fec_ready; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 50/91 drm/amd/display: Fix FEC_READY write on DP LT
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilya Bakoulin <[email protected]>
[ Upstream commit a8baec4623aedf36d50767627f6eae5ebf07c6fb ]
[Why/How]
We can miss writing FEC_READY in some cases before LT start, which violates DP spec. Remove the condition guarding the DPCD write so that the write happens unconditionally.
--- .../amd/display/dc/link/protocols/link_dp_phy.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c +6 -8
@@ -147,16 +147,14 @@ enum dc_status dp_set_fec_ready(struct dc_link *link, const struct link_resourcereturn DC_NOT_SUPPORTED ;if (ready &&dp_should_enable_fec (link)) { -if (link->fec_state == dc_link_fec_not_ready) { - fec_config =1 ; + fec_config =1 ; - status =core_link_write_dpcd (link,DP_FEC_CONFIGURATION , - &fec_config,sizeof (fec_config)); + status =core_link_write_dpcd (link,DP_FEC_CONFIGURATION , + &fec_config,sizeof (fec_config)); -if (status ==DC_OK ) { - link_enc->funcs->fec_set_ready (link_enc, true); - link->fec_state = dc_link_fec_ready; - } +if (status ==DC_OK ) { + link_enc->funcs->fec_set_ready (link_enc, true); + link->fec_state = dc_link_fec_ready; } }else {if (link->fec_state == dc_link_fec_ready) {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 51/91 eeprom: digsy_mtc: Fix 93xx46 driver probe failure
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Shevchenko <[email protected]>
[ Upstream commit 2b82641ad0620b2d71dc05024b20f82db7e1c0b6 ]
The update to support other (bigger) types of EEPROMs broke the driver loading due to removal of the default size.
Fix this by adding the respective (new) flag to the platform data.
--- drivers/misc/eeprom/digsy_mtc_eeprom.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/misc/eeprom/digsy_mtc_eeprom.c +1 -1
@@ -42,7 +42,7 @@ static void digsy_mtc_op_finish(void *p) }struct eeprom_93xx46_platform_data digsy_mtc_eeprom_data = { - .flags =EE_ADDR8 , + .flags =EE_ADDR8 |EE_SIZE1K , .prepare = digsy_mtc_op_prepare, .finish = digsy_mtc_op_finish, };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 52/91 cxl/core: Fix incorrect vendor debug UUID define
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: peng guo <[email protected]>
[ Upstream commit 8ecef8e01a08c7e3e4ffc8f08d9f9663984f334b ]
When user send a mbox command whose opcode is CXL_MBOX_OP_CLEAR_LOG and the in_payload is normal vendor debug log UUID according to the CXL specification cxl_payload_from_user_allowed() will return false unexpectedly, Sending mbox cmd operation fails and the kernel log will print:
Clear Log: input payload not allowed.
All CXL devices that support a debug log shall support the Vendor Debug Log to allow the log to be accessed through a common host driver, for any device, all versions of the CXL specification define the same value with Log Identifier of: 5e1819d9-11a9-400c-811f-d60719403d86
Refer to CXL spec r3.1 Table 8-71
Fix the definition value of DEFINE_CXL_VENDOR_DEBUG_UUID to match the CXL specification.
--- drivers/cxl/cxlmem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/cxl/cxlmem.h +1 -1
@@ -538,7 +538,7 @@ enum cxl_opcode { 0x3b, 0x3f, 0x17)#define DEFINE_CXL_VENDOR_DEBUG_UUID \ - UUID_INIT(0xe1819d9, 0x11a9, 0x400c, 0x81, 0x1f, 0xd6, 0x07, 0x19, \ + UUID_INIT(0x5e1819d9, 0x11a9, 0x400c, 0x81, 0x1f, 0xd6, 0x07, 0x19, \ 0x40, 0x3d, 0x86)struct cxl_mbox_get_supported_logs {
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 53/91 selftests/bpf: Support SOCK_STREAM in unix_inet_redir_to_connected()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Luczaj <[email protected]>
[ Upstream commit 1b0ad43177c097d38b967b99c2b71d8be28b0223 ]
Function ignores the AF_UNIX socket type argument, SOCK_DGRAM is hardcoded. Fix to respect the argument provided.
--- tools/testing/selftests/bpf/prog_tests/sockmap_listen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
tools/testing/selftests/bpf/prog_tests/sockmap_listen.c +1 -2
@@ -1841,7 +1841,7 @@ static void unix_inet_redir_to_connected(int family, int type, int sock_mapfd,if (err)return ; -if (socketpair (AF_UNIX ,SOCK_DGRAM |SOCK_NONBLOCK ,0 , sfd)) +if (socketpair (AF_UNIX , type |SOCK_NONBLOCK ,0 , sfd)) goto close_cli0; c1 = sfd[0 ], p1 = sfd[1 ];
@@ -1876,7 +1876,6 @@ static void unix_inet_redir_to_connected(int family, int type, int sock_mapfd, close_cli0:xclose (c0);xclose (p0); - } static void unix_inet_skb_redir_to_connected(struct test_sockmap_listen *skel,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 54/91 hwmon: (pmbus) Conditionally clear individual status bits for pmbus rev >= 1.2
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Patryk Biel <[email protected]>
[ Upstream commit 20471071f198c8626dbe3951ac9834055b387844 ]
The current implementation of pmbus_show_boolean assumes that all devices support write-back operation of status register to clear pending warnings or faults. Since clearing individual bits in the status registers was only introduced in PMBus specification 1.2, this operation may not be supported by some older devices. This can result in an error while reading boolean attributes such as temp1_max_alarm.
Fetch PMBus revision supported by the device and modify pmbus_show_boolean so that it only tries to clear individual status bits if the device is compliant with PMBus specs >= 1.2. Otherwise clear all fault indicators on the current page after a fault status was reported.
Message-ID: <[email protected]> [groeck:
Rewrote description
Moved revision detection code ahead of clear faults command Assigned revision if return value from PMBUS_REVISION command is 0 Improved return value check from calling _pmbus_write_byte_data()]
--- drivers/hwmon/pmbus/pmbus.h | 6 ++++++ drivers/hwmon/pmbus/pmbus_core.c | 17 ++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-)
drivers/hwmon/pmbus/pmbus.h +6 -0
@@ -409,6 +409,12 @@ enum pmbus_sensor_classes {enum pmbus_data_format { linear =0 , ieee754, direct, vid };enum vrm_version { vr11 =0 , vr12, vr13, imvp9, amd625mv }; +/* PMBus revision identifiers */ +#define PMBUS_REV_10 0x00/* PMBus revision 1.0 */ +#define PMBUS_REV_11 0x11/* PMBus revision 1.1 */ +#define PMBUS_REV_12 0x22/* PMBus revision 1.2 */ +#define PMBUS_REV_13 0x33/* PMBus revision 1.3 */ +struct pmbus_driver_info {int pages;/* Total number of pages */ u8 phases[PMBUS_PAGES ];/* Number of phases per page */
drivers/hwmon/pmbus/pmbus_core.c +14 -3
@@ -85,6 +85,8 @@ struct pmbus_data {u32 flags;/* from platform data */ +u8 revision;/* The PMBus revision the device is compliant with */ +int exponent[PMBUS_PAGES ];/* linear mode: exponent for output voltages */
@@ -1095,9 +1097,14 @@ static int pmbus_get_boolean(struct i2c_client *client, struct pmbus_boolean *b, regval = status & mask;if (regval) { - ret =_pmbus_write_byte_data (client, page, reg, regval); -if (ret) - goto unlock; +if (data->revision >=PMBUS_REV_12 ) { + ret =_pmbus_write_byte_data (client, page, reg, regval); +if (ret) + goto unlock; + }else { +pmbus_clear_fault_page (client, page); + } + }if (s1 && s2) {s64 v1, v2;
@@ -2640,6 +2647,10 @@ static int pmbus_init_common(struct i2c_client *client, struct pmbus_data *data, data->flags |=PMBUS_WRITE_PROTECTED |PMBUS_SKIP_STATUS_CHECK ; } + ret =i2c_smbus_read_byte_data (client,PMBUS_REVISION ); +if (ret >=0 ) + data->revision = ret; +if (data->info->pages)pmbus_clear_faults (client);else
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 55/91 ice: Fix lldp packets dropping after changing the number of channels
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Martyna Szapar-Mudlaw <[email protected]>
[ Upstream commit 9debb703e14939dfafa5d403f27c4feb2e9f6501 ]
After vsi setup refactor commit 6624e780a577 ("ice: split ice_vsi_setup into smaller functions") ice_cfg_sw_lldp function which removes rx rule directing LLDP packets to vsi is moved from ice_vsi_release to ice_vsi_decfg function. ice_vsi_decfg is used in more cases than just in vsi_release resulting in unnecessary removal of rx lldp packets handling switch rule. This leads to lldp packets being dropped after a change number of channels via ethtool.
This patch moves ice_cfg_sw_lldp function that removes rx lldp sw rule back to ice_vsi_release function.
--- drivers/net/ethernet/intel/ice/ice_lib.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
drivers/net/ethernet/intel/ice/ice_lib.c +8 -7
@@ -2600,13 +2600,6 @@ void ice_vsi_decfg(struct ice_vsi *vsi)struct ice_pf *pf = vsi->back;int err; -/* The Rx rule will only exist to remove if the LLDP FW -* engine is currently stopped -*/ -if (!ice_is_safe_mode (pf) && vsi->type ==ICE_VSI_PF && - !test_bit (ICE_FLAG_FW_LLDP_AGENT , pf->flags)) -ice_cfg_sw_lldp (vsi, false, false); -ice_rm_vsi_lan_cfg (vsi->port_info, vsi->idx); err =ice_rm_vsi_rdma_cfg (vsi->port_info, vsi->idx);if (err)
@@ -2953,6 +2946,14 @@ int ice_vsi_release(struct ice_vsi *vsi)ice_rss_clean (vsi);ice_vsi_close (vsi); + +/* The Rx rule will only exist to remove if the LLDP FW +* engine is currently stopped +*/ +if (!ice_is_safe_mode (pf) && vsi->type ==ICE_VSI_PF && + !test_bit (ICE_FLAG_FW_LLDP_AGENT , pf->flags)) +ice_cfg_sw_lldp (vsi, false, false); +ice_vsi_decfg (vsi);/* retain SW VSI data structure since it is needed to unregister and
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 56/91 ice: fix accounting for filters shared by multiple VSIs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jacob Keller <[email protected]>
[ Upstream commit e843cf7b34fe2e0c1afc55e1f3057375c9b77a14 ]
When adding a switch filter (such as a MAC or VLAN filter), it is expected that the driver will detect the case where the filter already exists, and return -EEXIST. This is used by calling code such as ice_vc_add_mac_addr, and ice_vsi_add_vlan to avoid incrementing the accounting fields such as vsi->num_vlan or vf->num_mac.
This logic works correctly for the case where only a single VSI has added a given switch filter.
When a second VSI adds the same switch filter, the driver converts the existing filter from an ICE_FWD_TO_VSI filter into an ICE_FWD_TO_VSI_LIST filter. This saves switch resources, by ensuring that multiple VSIs can re-use the same filter.
The ice_add_update_vsi_list() function is responsible for doing this conversion. When first converting a filter from the FWD_TO_VSI into FWD_TO_VSI_LIST, it checks if the VSI being added is the same as the existing rule's VSI. In such a case it returns -EEXIST.
However, when the switch rule has already been converted to a FWD_TO_VSI_LIST, the logic is different. Adding a new VSI in this case just requires extending the VSI list entry. The logic for checking if the rule already exists in this case returns 0 instead of -EEXIST.
This breaks the accounting logic mentioned above, so the counters for how many MAC and VLAN filters exist for a given VF or VSI no longer accurately reflect the actual count. This breaks other code which relies on these counts.
In typical usage this primarily affects such filters generally shared by multiple VSIs such as VLAN 0, or broadcast and multicast MAC addresses.
Fix this by correctly reporting -EEXIST in the case of adding the same VSI to a switch rule already converted to ICE_FWD_TO_VSI_LIST.
--- drivers/net/ethernet/intel/ice/ice_switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/ice/ice_switch.c +1 -1
@@ -3072,7 +3072,7 @@ ice_add_update_vsi_list(struct ice_hw *hw,/* A rule already exists with the new VSI being added */ if (test_bit (vsi_handle, m_entry->vsi_list_info->vsi_map)) -return 0 ; +return -EEXIST ;/* Update the previously created VSI list set with * the new VSI ID passed in
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 57/91 ice: fix VSI lists confusion when adding VLANs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Schmidt <[email protected]>
[ Upstream commit d2940002b0aa42898de815a1453b29d440292386 ]
The description of function ice_find_vsi_list_entry says:
Search VSI list map with VSI count 1
However, since the blamed commit (see Fixes below), the function no longer checks vsi_count. This causes a problem in ice_add_vlan_internal, where the decision to share VSI lists between filter rules relies on the vsi_count of the found existing VSI list being 1.
The reproducing steps:
1. Have a PF and two VFs.
There will be a filter rule for VLAN 0, referring to a VSI list containing VSIs: 0 (PF), 2 (VF#0), 3 (VF#1).
2. Add VLAN 1234 to VF#0.
ice will make the wrong decision to share the VSI list with the new rule. The wrong behavior may not be immediately apparent, but it can be observed with debug prints.
3. Add VLAN 1234 to VF#1.
ice will unshare the VSI list for the VLAN 1234 rule. Due to the earlier bad decision, the newly created VSI list will contain VSIs 0 (PF) and 3 (VF#1), instead of expected 2 (VF#0) and 3 (VF#1).
4. Try pinging a network peer over the VLAN interface on VF#0. This fails.
Reproducer script at:
https://gitlab.com/mschmidt2/repro/-/blob/master/RHEL-46814/test-vlan-vsi-list-confusion.sh
Commented debug trace:
https://gitlab.com/mschmidt2/repro/-/blob/master/RHEL-46814/ice-vlan-vsi-lists-debug.txt
Patch adding the debug prints:
https://gitlab.com/mschmidt2/linux/-/commit/f8a8814623944a45091a77c6094c40bfe726bfdb
(Unsafe, by the way. Lacks rule_lock when dumping in ice_remove_vlan.)
Michal Swiatkowski added to the explanation that the bug is caused by reusing a VSI list created for VLAN 0. All created VFs' VSIs are added to VLAN 0 filter. When a non-zero VLAN is created on a VF which is already in VLAN 0 (normal case), the VSI list from VLAN 0 is reused. It leads to a problem because all VFs (VSIs to be specific) that are subscribed to VLAN 0 will now receive a new VLAN tag traffic. This is one bug, another is the bug described above. Removing filters from one VF will remove VLAN filter from the previous VF. It happens a VF is reset. Example:
- creation of 3 VFs
- we have VSI list (used for VLAN 0) [0 (pf), 2 (vf1), 3 (vf2), 4 (vf3)]
- we are adding VLAN 100 on VF1, we are reusing the previous list because 2 is there
- VLAN traffic works fine, but VLAN 100 tagged traffic can be received on all VSIs from the list (for example broadcast or unicast)
- trust is turning on VF2, VF2 is resetting, all filters from VF2 are removed; the VLAN 100 filter is also removed because 3 is on the list
- VLAN traffic to VF1 isn't working anymore, there is a need to recreate VLAN interface to readd VLAN filter
One thing I'm not certain about is the implications for the LAG feature, which is another caller of ice_find_vsi_list_entry. I don't have a LAG-capable card at hand to test.
--- drivers/net/ethernet/intel/ice/ice_switch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/intel/ice/ice_switch.c +1 -1
@@ -3142,7 +3142,7 @@ ice_find_vsi_list_entry(struct ice_hw *hw, u8 recp_id, u16 vsi_handle, list_head = &sw->recp_list[recp_id].filt_rules;list_for_each_entry (list_itr, list_head, list_entry) { -if (list_itr->vsi_list_info) { +if (list_itr->vsi_count ==1 && list_itr->vsi_list_info) { map_info = list_itr->vsi_list_info;if (test_bit (vsi_handle, map_info->vsi_map)) { *vsi_list_id = map_info->vsi_list_id;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 58/91 igb: Always call igb_xdp_ring_update_tail() under Tx lock
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sriram Yagnaraman <[email protected]>
[ Upstream commit 27717f8b17c098c4373ddb8fe89e1a1899c7779d ]
Always call igb_xdp_ring_update_tail() under __netif_tx_lock, add a comment and lockdep assert to indicate that. This is needed to share the same TX ring between XDP, XSK and slow paths. Furthermore, the current XDP implementation is racy on tail updates.
--- drivers/net/ethernet/intel/igb/igb_main.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
drivers/net/ethernet/intel/igb/igb_main.c +13 -4
@@ -33,6 +33,7 @@#include <linux/bpf_trace.h> #include <linux/pm_runtime.h> #include <linux/etherdevice.h> +#include <linux/lockdep.h> #ifdef CONFIG_IGB_DCA #include <linux/dca.h> #endif
@@ -2939,8 +2940,11 @@ static int igb_xdp(struct net_device *dev, struct netdev_bpf *xdp) } } +/* This function assumes __netif_tx_lock is held by the caller. */ static void igb_xdp_ring_update_tail (struct igb_ring *ring) { +lockdep_assert_held (&txring_txq (ring)->_xmit_lock); +/* Force memory writes to complete before letting h/w know there * are new descriptors to fetch. */
@@ -3025,11 +3029,11 @@ static int igb_xdp_xmit(struct net_device *dev, int n, nxmit++; } -__netif_tx_unlock (nq); -if (unlikely (flags &XDP_XMIT_FLUSH ))igb_xdp_ring_update_tail (tx_ring); +__netif_tx_unlock (nq); +return nxmit; }
@@ -8889,12 +8893,14 @@ static void igb_put_rx_buffer(struct igb_ring *rx_ring,static int igb_clean_rx_irq (struct igb_q_vector *q_vector,const int budget) { +unsigned int total_bytes =0 , total_packets =0 ;struct igb_adapter *adapter = q_vector->adapter;struct igb_ring *rx_ring = q_vector->rx.ring; -struct sk_buff *skb = rx_ring->skb; -unsigned int total_bytes =0 , total_packets =0 ;u16 cleaned_count =igb_desc_unused (rx_ring); +struct sk_buff *skb = rx_ring->skb; +int cpu =smp_processor_id ();unsigned int xdp_xmit =0 ; +struct netdev_queue *nq;struct xdp_buff xdp;u32 frame_sz =0 ;int rx_buf_pgcnt;
@@ -9022,7 +9028,10 @@ static int igb_clean_rx_irq(struct igb_q_vector *q_vector, const int budget)if (xdp_xmit &IGB_XDP_TX ) {struct igb_ring *tx_ring =igb_xdp_tx_queue_mapping (adapter); + nq =txring_txq (tx_ring); +__netif_tx_lock (nq, cpu);igb_xdp_ring_update_tail (tx_ring); +__netif_tx_unlock (nq); }u64_stats_update_begin (&rx_ring->rx_syncp);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 59/91 net/mlx5: Update the list of the PCI supported devices
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Maher Sanalla <[email protected]>
[ Upstream commit 7472d157cb8014103105433bcc0705af2e6f7184 ]
Add the upcoming ConnectX-9 device ID to the table of supported PCI device IDs.
--- drivers/net/ethernet/mellanox/mlx5/core/main.c | 1 + 1 file changed, 1 insertion(+)
drivers/net/ethernet/mellanox/mlx5/core/main.c +1 -0
@@ -2205,6 +2205,7 @@ static const struct pci_device_id mlx5_core_pci_table[] = { { PCI_VDEVICE(MELLANOX, 0x101f) }, /* ConnectX-6 LX */ { PCI_VDEVICE(MELLANOX, 0x1021) }, /* ConnectX-7 */ { PCI_VDEVICE(MELLANOX, 0x1023) }, /* ConnectX-8 */ + { PCI_VDEVICE(MELLANOX, 0x1025) }, /* ConnectX-9 */ { PCI_VDEVICE(MELLANOX, 0xa2d2) }, /* BlueField integrated ConnectX-5 network controller */ { PCI_VDEVICE(MELLANOX, 0xa2d3), MLX5_PCI_DEV_IS_VF}, /* BlueField integrated ConnectX-5 network controller VF */ { PCI_VDEVICE(MELLANOX, 0xa2d6) }, /* BlueField-2 integrated ConnectX-6 Dx network controller */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 60/91 net/mlx5e: Add missing link modes to ptys2ethtool_map
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shahar Shitrit <[email protected]>
[ Upstream commit 7617d62cba4a8a3ff3ed3fda0171c43f135c142e ]
Add MLX5E_1000BASE_T and MLX5E_100BASE_TX to the legacy modes in ptys2legacy_ethtool_table, since they were missing.
--- drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +4 -0
@@ -136,6 +136,10 @@ void mlx5e_build_ptys2ethtool_map(void) ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT);MLX5_BUILD_PTYS2ETHTOOL_CONFIG (MLX5E_100GBASE_LR4 , legacy, ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT); +MLX5_BUILD_PTYS2ETHTOOL_CONFIG (MLX5E_100BASE_TX , legacy, + ETHTOOL_LINK_MODE_100baseT_Full_BIT); +MLX5_BUILD_PTYS2ETHTOOL_CONFIG (MLX5E_1000BASE_T , legacy, + ETHTOOL_LINK_MODE_1000baseT_Full_BIT);MLX5_BUILD_PTYS2ETHTOOL_CONFIG (MLX5E_10GBASE_T , legacy, ETHTOOL_LINK_MODE_10000baseT_Full_BIT); MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_25GBASE_CR, legacy,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 61/91 IB/mlx5: Rename 400G_8X speed to comply to naming convention
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Patrisious Haddad <[email protected]>
[ Upstream commit b28ad32442bec2f0d9cb660d7d698a1a53c13d08 ]
Rename 400G_8X speed to comply to naming convention.
Stable-dep-of: 80bf474242b2 ("net/mlx5e: Add missing link mode to ptys2ext_ethtool_map")
--- drivers/infiniband/hw/mlx5/main.c | 2 +- drivers/net/ethernet/mellanox/mlx5/core/port.c | 2 +- include/linux/mlx5/port.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)
drivers/infiniband/hw/mlx5/main.c +1 -1
@@ -444,7 +444,7 @@ static int translate_eth_ext_proto_oper(u32 eth_proto_oper, u16 *active_speed, *active_width =IB_WIDTH_2X ; *active_speed =IB_SPEED_NDR ;break ; -case MLX5E_PROT_MASK (MLX5E_400GAUI_8 ): +case MLX5E_PROT_MASK (MLX5E_400GAUI_8_400GBASE_CR8 ): *active_width =IB_WIDTH_8X ; *active_speed =IB_SPEED_HDR ;break ;
drivers/net/ethernet/mellanox/mlx5/core/port.c +1 -1
@@ -1098,7 +1098,7 @@ static const u32 mlx5e_ext_link_speed[MLX5E_EXT_LINK_MODES_NUMBER] = { [MLX5E_CAUI_4_100GBASE_CR4_KR4] = 100000, [MLX5E_100GAUI_2_100GBASE_CR2_KR2] = 100000, [MLX5E_200GAUI_4_200GBASE_CR4_KR4] = 200000, - [MLX5E_400GAUI_8] = 400000, + [MLX5E_400GAUI_8_400GBASE_CR8] = 400000, [MLX5E_100GAUI_1_100GBASE_CR_KR] = 100000, [MLX5E_200GAUI_2_200GBASE_CR2_KR2] = 200000, [MLX5E_400GAUI_4_400GBASE_CR4_KR4] = 400000,
include/linux/mlx5/port.h +1 -1
@@ -115,7 +115,7 @@ enum mlx5e_ext_link_mode {MLX5E_100GAUI_1_100GBASE_CR_KR =11 ,MLX5E_200GAUI_4_200GBASE_CR4_KR4 =12 ,MLX5E_200GAUI_2_200GBASE_CR2_KR2 =13 , -MLX5E_400GAUI_8 =15 , +MLX5E_400GAUI_8_400GBASE_CR8 =15 ,MLX5E_400GAUI_4_400GBASE_CR4_KR4 =16 , MLX5E_EXT_LINK_MODES_NUMBER, };
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 62/91 net/mlx5e: Add missing link mode to ptys2ext_ethtool_map
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Shahar Shitrit <[email protected]>
[ Upstream commit 80bf474242b21d64a514fd2bb65faa7a17ca8d8d ]
Add MLX5E_400GAUI_8_400GBASE_CR8 to the extended modes in ptys2ext_ethtool_table, since it was missing.
--- drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +6 -0
@@ -205,6 +205,12 @@ void mlx5e_build_ptys2ethtool_map(void) ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT, ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT, ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT); +MLX5_BUILD_PTYS2ETHTOOL_CONFIG (MLX5E_400GAUI_8_400GBASE_CR8 , ext, + ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT, + ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT, + ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT, + ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT, + ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT); MLX5_BUILD_PTYS2ETHTOOL_CONFIG(MLX5E_100GAUI_1_100GBASE_CR_KR, ext, ETHTOOL_LINK_MODE_100000baseKR_Full_BIT, ETHTOOL_LINK_MODE_100000baseSR_Full_BIT,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 63/91 net/mlx5: Explicitly set scheduling element and TSAR type
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Carolina Jubran <[email protected]>
[ Upstream commit c88146abe4d0f8cf659b2b8883fdc33936d2e3b8 ]
Ensure the scheduling element type and TSAR type are explicitly initialized in the QoS rate group creation.
This prevents potential issues due to default values.
--- drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +7 -0
@@ -420,6 +420,7 @@ __esw_qos_create_rate_group(struct mlx5_eswitch *esw, struct netlink_ext_ack *ex {u32 tsar_ctx[MLX5_ST_SZ_DW (scheduling_context)] = {};struct mlx5_esw_rate_group *group; +__be32 *attr;u32 divider;int err;
@@ -427,6 +428,12 @@ __esw_qos_create_rate_group(struct mlx5_eswitch *esw, struct netlink_ext_ack *exif (!group)return ERR_PTR (-ENOMEM ); +MLX5_SET (scheduling_context, tsar_ctx, element_type, +SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR ); + + attr =MLX5_ADDR_OF (scheduling_context, tsar_ctx, element_attributes); + *attr =cpu_to_be32 (TSAR_ELEMENT_TSAR_TYPE_DWRR <<16 ); +MLX5_SET (scheduling_context, tsar_ctx, parent_element_id, esw->qos.root_tsar_ix); err = mlx5_create_scheduling_element_cmd(esw->dev,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 64/91 net/mlx5: Add missing masks and QoS bit masks for scheduling elements
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Carolina Jubran <[email protected]>
[ Upstream commit 452ef7f86036392005940de54228d42ca0044192 ]
Add the missing masks for supported element types and Transmit Scheduling Arbiter (TSAR) types in scheduling elements.
Also, add the corresponding bit masks for these types in the QoS capabilities of a NIC scheduler.
--- include/linux/mlx5/mlx5_ifc.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
include/linux/mlx5/mlx5_ifc.h +9 -1
@@ -1010,7 +1010,8 @@ struct mlx5_ifc_qos_cap_bits {u8 max_tsar_bw_share[0x20 ]; -u8 reserved_at_100[0x20 ]; +u8 nic_element_type[0x10 ]; +u8 nic_tsar_type[0x10 ];u8 reserved_at_120[0x3 ];u8 log_meter_aso_granularity[0x5 ];
@@ -3847,6 +3848,7 @@ enum {ELEMENT_TYPE_CAP_MASK_VPORT =1 <<1 ,ELEMENT_TYPE_CAP_MASK_VPORT_TC =1 <<2 ,ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC =1 <<3 , + ELEMENT_TYPE_CAP_MASK_QUEUE_GROUP = 1 << 4, }; struct mlx5_ifc_scheduling_context_bits {
@@ -4546,6 +4548,12 @@ enum { TSAR_ELEMENT_TSAR_TYPE_ETS = 0x2, }; +enum { +TSAR_TYPE_CAP_MASK_DWRR =1 <<0 , +TSAR_TYPE_CAP_MASK_ROUND_ROBIN =1 <<1 , +TSAR_TYPE_CAP_MASK_ETS =1 <<2 , +}; +struct mlx5_ifc_tsar_element_bits {u8 reserved_at_0[0x8 ];u8 tsar_type[0x8 ];
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 65/91 net/mlx5: Correct TASR typo into TSAR
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Cosmin Ratiu <[email protected]>
[ Upstream commit e575d3a6dd22123888defb622b1742aa2d45b942 ]
TSAR is the correct spelling (Transmit Scheduling ARbiter).
Stable-dep-of: 861cd9b9cb62 ("net/mlx5: Verify support for scheduling element and TSAR type")
--- drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c | 2 +- include/linux/mlx5/mlx5_ifc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +1 -1
@@ -537,7 +537,7 @@ static bool esw_qos_element_type_supported(struct mlx5_core_dev *dev, int type)switch (type) {case SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR :return MLX5_CAP_QOS (dev, esw_element_type) & -ELEMENT_TYPE_CAP_MASK_TASR ; +ELEMENT_TYPE_CAP_MASK_TSAR ;case SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT :return MLX5_CAP_QOS (dev, esw_element_type) &ELEMENT_TYPE_CAP_MASK_VPORT ;
include/linux/mlx5/mlx5_ifc.h +1 -1
@@ -3844,7 +3844,7 @@ enum { };enum { -ELEMENT_TYPE_CAP_MASK_TASR =1 <<0 , +ELEMENT_TYPE_CAP_MASK_TSAR =1 <<0 ,ELEMENT_TYPE_CAP_MASK_VPORT =1 <<1 ,ELEMENT_TYPE_CAP_MASK_VPORT_TC =1 <<2 ,ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC =1 <<3 ,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 66/91 net/mlx5: Verify support for scheduling element and TSAR type
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Carolina Jubran <[email protected]>
[ Upstream commit 861cd9b9cb62feb244b8d77e68fd6ddedbbf66e9 ]
Before creating a scheduling element in a NIC or E-Switch scheduler, ensure that the requested element type is supported. If the element is of type Transmit Scheduling Arbiter (TSAR), also verify that the specific TSAR type is supported.
--- .../net/ethernet/mellanox/mlx5/core/esw/qos.c | 44 ++++++++++--------- drivers/net/ethernet/mellanox/mlx5/core/qos.c | 7 +++ 2 files changed, 31 insertions(+), 20 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/esw/qos.c +24 -20
@@ -311,6 +311,25 @@ static int esw_qos_set_group_max_rate(struct mlx5_eswitch *esw,return err; } +static bool esw_qos_element_type_supported (struct mlx5_core_dev *dev,int type) +{ +switch (type) { +case SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR : +return MLX5_CAP_QOS (dev, esw_element_type) & +ELEMENT_TYPE_CAP_MASK_TSAR ; +case SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT : +return MLX5_CAP_QOS (dev, esw_element_type) & +ELEMENT_TYPE_CAP_MASK_VPORT ; +case SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT_TC : +return MLX5_CAP_QOS (dev, esw_element_type) & +ELEMENT_TYPE_CAP_MASK_VPORT_TC ; +case SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC : +return MLX5_CAP_QOS (dev, esw_element_type) & +ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC ; + } +return false; +} +static int esw_qos_vport_create_sched_element (struct mlx5_eswitch *esw,struct mlx5_vport *vport,u32 max_rate,u32 bw_share)
@@ -322,6 +341,9 @@ static int esw_qos_vport_create_sched_element(struct mlx5_eswitch *esw,void *vport_elem;int err; +if (!esw_qos_element_type_supported (dev,SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT )) +return -EOPNOTSUPP ; + parent_tsar_ix = group ? group->tsar_ix : esw->qos.root_tsar_ix;MLX5_SET (scheduling_context, sched_ctx, element_type,SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT );
@@ -532,25 +554,6 @@ static int esw_qos_destroy_rate_group(struct mlx5_eswitch *esw,return err; } -static bool esw_qos_element_type_supported (struct mlx5_core_dev *dev,int type) -{ -switch (type) { -case SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR : -return MLX5_CAP_QOS (dev, esw_element_type) & -ELEMENT_TYPE_CAP_MASK_TSAR ; -case SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT : -return MLX5_CAP_QOS (dev, esw_element_type) & -ELEMENT_TYPE_CAP_MASK_VPORT ; -case SCHEDULING_CONTEXT_ELEMENT_TYPE_VPORT_TC : -return MLX5_CAP_QOS (dev, esw_element_type) & -ELEMENT_TYPE_CAP_MASK_VPORT_TC ; -case SCHEDULING_CONTEXT_ELEMENT_TYPE_PARA_VPORT_TC : -return MLX5_CAP_QOS (dev, esw_element_type) & -ELEMENT_TYPE_CAP_MASK_PARA_VPORT_TC ; - } -return false; -} -static int esw_qos_create (struct mlx5_eswitch *esw,struct netlink_ext_ack *extack) {u32 tsar_ctx[MLX5_ST_SZ_DW (scheduling_context)] = {};
@@ -561,7 +564,8 @@ static int esw_qos_create(struct mlx5_eswitch *esw, struct netlink_ext_ack *extaif (!MLX5_CAP_GEN (dev, qos) || !MLX5_CAP_QOS (dev, esw_scheduling))return -EOPNOTSUPP ; -if (!esw_qos_element_type_supported (dev,SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR )) +if (!esw_qos_element_type_supported (dev,SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR ) || + !(MLX5_CAP_QOS (dev, esw_tsar_type) &TSAR_TYPE_CAP_MASK_DWRR ))return -EOPNOTSUPP ; MLX5_SET(scheduling_context, tsar_ctx, element_type,
drivers/net/ethernet/mellanox/mlx5/core/qos.c +7 -0
@@ -28,6 +28,9 @@ int mlx5_qos_create_leaf_node(struct mlx5_core_dev *mdev, u32 parent_id, {u32 sched_ctx[MLX5_ST_SZ_DW (scheduling_context)] = {0 }; +if (!(MLX5_CAP_QOS (mdev, nic_element_type) &ELEMENT_TYPE_CAP_MASK_QUEUE_GROUP )) +return -EOPNOTSUPP ; +MLX5_SET (scheduling_context, sched_ctx, parent_element_id, parent_id);MLX5_SET (scheduling_context, sched_ctx, element_type,SCHEDULING_CONTEXT_ELEMENT_TYPE_QUEUE_GROUP );
@@ -44,6 +47,10 @@ int mlx5_qos_create_inner_node(struct mlx5_core_dev *mdev, u32 parent_id,u32 sched_ctx[MLX5_ST_SZ_DW (scheduling_context)] = {0 };void *attr; +if (!(MLX5_CAP_QOS (mdev, nic_element_type) &ELEMENT_TYPE_CAP_MASK_TSAR ) || + !(MLX5_CAP_QOS (mdev, nic_tsar_type) &TSAR_TYPE_CAP_MASK_DWRR )) +return -EOPNOTSUPP ; +MLX5_SET (scheduling_context, sched_ctx, parent_element_id, parent_id);MLX5_SET (scheduling_context, sched_ctx, element_type,SCHEDULING_CONTEXT_ELEMENT_TYPE_TSAR );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 67/91 net/mlx5: Fix bridge mode operations when there are no VFs
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Benjamin Poirier <[email protected]>
[ Upstream commit b1d305abef4640af1b4f1b4774d513cd81b10cfc ]
Currently, trying to set the bridge mode attribute when numvfs=0 leads to a crash:
bridge link set dev eth2 hwmode vepa
[ 168.967392] BUG: kernel NULL pointer dereference, address: 0000000000000030 [...] [ 168.969989] RIP: 0010:mlx5_add_flow_rules+0x1f/0x300 [mlx5_core] [...] [ 168.976037] Call Trace: [ 168.976188] <TASK> [ 168.978620] _mlx5_eswitch_set_vepa_locked+0x113/0x230 [mlx5_core] [ 168.979074] mlx5_eswitch_set_vepa+0x7f/0xa0 [mlx5_core] [ 168.979471] rtnl_bridge_setlink+0xe9/0x1f0 [ 168.979714] rtnetlink_rcv_msg+0x159/0x400 [ 168.980451] netlink_rcv_skb+0x54/0x100 [ 168.980675] netlink_unicast+0x241/0x360 [ 168.980918] netlink_sendmsg+0x1f6/0x430 [ 168.981162] ____sys_sendmsg+0x3bb/0x3f0 [ 168.982155] ___sys_sendmsg+0x88/0xd0 [ 168.985036] __sys_sendmsg+0x59/0xa0 [ 168.985477] do_syscall_64+0x79/0x150 [ 168.987273] entry_SYSCALL_64_after_hwframe+0x76/0x7e [ 168.987773] RIP: 0033:0x7f8f7950f917
(esw->fdb_table.legacy.vepa_fdb is null)
The bridge mode is only relevant when there are multiple functions per port. Therefore, prevent setting and getting this setting when there are no VFs.
Note that after this change, there are no settings to change on the PF interface using bridge link when there are no VFs, so the interface no longer appears in the bridge link output.
--- drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/net/ethernet/mellanox/mlx5/core/esw/legacy.c +2 -2
@@ -319,7 +319,7 @@ int mlx5_eswitch_set_vepa(struct mlx5_eswitch *esw, u8 setting)return -EPERM ;mutex_lock (&esw->state_lock); -if (esw->mode !=MLX5_ESWITCH_LEGACY ) { +if (esw->mode !=MLX5_ESWITCH_LEGACY || !mlx5_esw_is_fdb_created (esw)) { err = -EOPNOTSUPP ; goto out; }
@@ -339,7 +339,7 @@ int mlx5_eswitch_get_vepa(struct mlx5_eswitch *esw, u8 *setting)if (!mlx5_esw_allowed (esw))return -EPERM ; -if (esw->mode !=MLX5_ESWITCH_LEGACY ) +if (esw->mode !=MLX5_ESWITCH_LEGACY || !mlx5_esw_is_fdb_created (esw))return -EOPNOTSUPP ; *setting = esw->fdb_table.legacy.vepa_uplink_rule ?1 :0 ;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 68/91 fou: fix initialization of grc
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Muhammad Usama Anjum <[email protected]>
[ Upstream commit 4c8002277167125078e6b9b90137bdf443ebaa08 ]
The grc must be initialize first. There can be a condition where if fou is NULL, goto out will be executed and grc would be used uninitialized.
--- net/ipv4/fou_core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
net/ipv4/fou_core.c +2 -2
@@ -336,11 +336,11 @@ static struct sk_buff *gue_gro_receive(struct sock *sk,struct gro_remcsum grc;u8 proto; +skb_gro_remcsum_init (&grc); +if (!fou) goto out; -skb_gro_remcsum_init (&grc); - off =skb_gro_offset (skb); len = off +sizeof (*guehdr);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 69/91 octeontx2-af: Modify SMQ flush sequence to drop packets
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Naveen Mamindlapalli <[email protected]>
[ Upstream commit 019aba04f08c2102b35ce7fee9d4628d349f56c0 ]
The current implementation of SMQ flush sequence waits for the packets in the TM pipeline to be transmitted out of the link. This sequence doesn't succeed in HW when there is any issue with link such as lack of link credits, link down or any other traffic that is fully occupying the link bandwidth (QoS). This patch modifies the SMQ flush sequence to drop the packets after TL1 level (SQM) instead of polling for the packets to be sent out of RPM/CGX link.
--- .../net/ethernet/marvell/octeontx2/af/rvu.h | 3 +- .../ethernet/marvell/octeontx2/af/rvu_nix.c | 59 +++++++++++++++---- 2 files changed, 48 insertions(+), 14 deletions(-)
drivers/net/ethernet/marvell/octeontx2/af/rvu.h +1 -2
@@ -290,6 +290,7 @@ struct nix_mark_format {/* smq(flush) to tl1 cir/pir info */ struct nix_smq_tree_ctx { +u16 schq;u64 cir_off;u64 cir_val;u64 pir_off;
@@ -299,8 +300,6 @@ struct nix_smq_tree_ctx {/* smq flush context */ struct nix_smq_flush_ctx {int smq; -u16 tl1_schq; -u16 tl2_schq;struct nix_smq_tree_ctx smq_tree_ctx[NIX_TXSCH_LVL_CNT ]; };
drivers/net/ethernet/marvell/octeontx2/af/rvu_nix.c +47 -12
117 lines not on this page · raw message
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 70/91 net: ftgmac100: Enable TX interrupt to avoid TX timeout
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jacky Chou <[email protected]>
[ Upstream commit fef2843bb49f414d1523ca007d088071dee0e055 ]
Currently, the driver only enables RX interrupt to handle RX packets and TX resources. Sometimes there is not RX traffic, so the TX resource needs to wait for RX interrupt to free. This situation will toggle the TX timeout watchdog when the MAC TX ring has no more resources to transmit packets. Therefore, enable TX interrupt to release TX resources at any time.
When I am verifying iperf3 over UDP, the network hangs. Like the log below.
root# iperf3 -c 192.168.100.100 -i1 -t10 -u -b0
Connecting to host 192.168.100.100, port 5201
[ 4] local 192.168.100.101 port 35773 connected to 192.168.100.100 port 5201
[ ID] Interval Transfer Bandwidth Total Datagrams [ 4] 0.00-20.42 sec 160 KBytes 64.2 Kbits/sec 20 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0 [ 4] 20.42-20.42 sec 0.00 Bytes 0.00 bits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-20.42 sec 160 KBytes 64.2 Kbits/sec 0.000 ms 0/20 (0%)
[ 4] Sent 20 datagrams
iperf3: error - the server has terminated
The network topology is FTGMAC connects directly to a PC.
UDP does not need to wait for ACK, unlike TCP.
Therefore, FTGMAC needs to enable TX interrupt to release TX resources instead of waiting for the RX interrupt.
--- drivers/net/ethernet/faraday/ftgmac100.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/faraday/ftgmac100.h +1 -1
@@ -84,7 +84,7 @@ FTGMAC100_INT_RPKT_BUF)/* All the interrupts we care about */ -#define FTGMAC100_INT_ALL (FTGMAC100_INT_RPKT_BUF | \ +#define FTGMAC100_INT_ALL (FTGMAC100_INT_RXTX | \ FTGMAC100_INT_BAD)/*
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 71/91 selftests: net: csum: Fix checksums for packets with non-zero padding
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Anderson <[email protected]>
[ Upstream commit e8a63d473b49011a68a748aea1c8aefa046ebacf ]
Padding is not included in UDP and TCP checksums. Therefore, reduce the length of the checksummed data to include only the data in the IP payload. This fixes spurious reported checksum failures like
rx: pkt: sport=33000 len=26 csum=0xc850 verify=0xf9fe
pkt: bad csum
Technically it is possible for there to be trailing bytes after the UDP data but before the Ethernet padding (e.g. if sizeof(ip) + sizeof(udp) + udp.len < ip.len). However, we don't generate such packets.
--- tools/testing/selftests/net/csum.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-)
tools/testing/selftests/net/csum.c +14 -2
@@ -654,10 +654,16 @@ static int recv_verify_packet_ipv4(void *nh, int len) {struct iphdr *iph = nh;uint16_t proto = cfg_encap ?IPPROTO_UDP : cfg_proto; +uint16_t ip_len;if (len <sizeof (*iph) || iph->protocol != proto)return -1 ; + ip_len =ntohs (iph->tot_len); +if (ip_len > len || ip_len <sizeof (*iph)) +return -1 ; + + len = ip_len; iph_addr_p = &iph->saddr;if (proto ==IPPROTO_TCP )return recv_verify_packet_tcp (iph +1 , len -sizeof (*iph));
@@ -669,16 +675,22 @@ static int recv_verify_packet_ipv6(void *nh, int len) {struct ipv6hdr *ip6h = nh;uint16_t proto = cfg_encap ?IPPROTO_UDP : cfg_proto; +uint16_t ip_len;if (len <sizeof (*ip6h) || ip6h->nexthdr != proto)return -1 ; + ip_len =ntohs (ip6h->payload_len); +if (ip_len > len -sizeof (*ip6h)) +return -1 ; + + len = ip_len; iph_addr_p = &ip6h->saddr;if (proto ==IPPROTO_TCP ) -return recv_verify_packet_tcp (ip6h +1 , len -sizeof (*ip6h)); +return recv_verify_packet_tcp (ip6h +1 , len);else -return recv_verify_packet_udp (ip6h +1 , len -sizeof (*ip6h)); +return recv_verify_packet_udp (ip6h +1 , len); }/* return whether auxdata includes TP_STATUS_CSUM_VALID */
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 72/91 netfilter: nft_socket: fix sk refcount leaks
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Westphal <[email protected]>
[ Upstream commit 8b26ff7af8c32cb4148b3e147c52f9e4c695209c ]
We must put 'sk' reference before returning.
--- net/netfilter/nft_socket.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
net/netfilter/nft_socket.c +4 -3
@@ -110,13 +110,13 @@ static void nft_socket_eval(const struct nft_expr *expr, *dest =READ_ONCE (sk->sk_mark); }else { regs->verdict.code =NFT_BREAK ; -return ; + goto out_put_sk; }break ;case NFT_SOCKET_WILDCARD :if (!sk_fullsock (sk)) { regs->verdict.code =NFT_BREAK ; -return ; + goto out_put_sk; }nft_socket_wildcard (pkt, regs, sk, dest);break ;
@@ -124,7 +124,7 @@ static void nft_socket_eval(const struct nft_expr *expr,case NFT_SOCKET_CGROUPV2 :if (!nft_sock_get_eval_cgroupv2 (dest, sk, pkt, priv->level)) { regs->verdict.code =NFT_BREAK ; -return ; + goto out_put_sk; }break ;#endif
@@ -133,6 +133,7 @@ static void nft_socket_eval(const struct nft_expr *expr, regs->verdict.code =NFT_BREAK ; } +out_put_sk:if (sk != skb->sk)sock_gen_put (sk); }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 73/91 netfilter: nft_socket: make cgroupsv2 matching work with namespaces
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Florian Westphal <[email protected]>
[ Upstream commit 7f3287db654395f9c5ddd246325ff7889f550286 ]
When running in container environmment, /sys/fs/cgroup/ might not be the real root node of the sk-attached cgroup.
Example:
In container:
% stat /sys//fs/cgroup/
Device: 0,21 Inode: 2214 ..
% stat /sys/fs/cgroup/foo
Device: 0,21 Inode: 2264 ..
The expectation would be for:
nft add rule .. socket cgroupv2 level 1 "foo" counter
to match traffic from a process that got added to "foo" via "echo $pid > /sys/fs/cgroup/foo/cgroup.procs".
However, 'level 3' is needed to make this work.
Seen from initial namespace, the complete hierarchy is:
% stat /sys/fs/cgroup/system.slice/docker-.../foo
Device: 0,21 Inode: 2264 ..
i.e. hierarchy is
0 1 2 3
/ -> system.slice -> docker-1... -> foo
... but the container doesn't know that its "/" is the "docker-1.." cgroup. Current code will retrieve the 'system.slice' cgroup node and store its kn->id in the destination register, so compare with 2264 ("foo" cgroup id) will not match.
Fetch "/" cgroup from ->init() and add its level to the level we try to extract. cgroup root-level is 0 for the init-namespace or the level of the ancestor that is exposed as the cgroup root inside the container.
In the above case, cgrp->level of "/" resolved in the container is 2 (docker-1...scope/) and request for 'level 1' will get adjusted to fetch the actual level (3).
v2: use CONFIG_SOCK_CGROUP_DATA, eval function depends on it.
(kernel test robot)
--- net/netfilter/nft_socket.c | 41 +++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-)
net/netfilter/nft_socket.c +38 -3
@@ -9,7 +9,8 @@struct nft_socket {enum nft_socket_keys key:8 ; -u8 level; +u8 level;/* cgroupv2 level to extract */ +u8 level_user;/* cgroupv2 level provided by userspace */ u8 len;union {u8 dreg;
@@ -53,6 +54,28 @@ nft_sock_get_eval_cgroupv2(u32 *dest, struct sock *sk, const struct nft_pktinfomemcpy (dest, &cgid,sizeof (u64)); return true; } + +/* process context only, uses current->nsproxy. */ +static noinline int nft_socket_cgroup_subtree_level(void) +{ +struct cgroup *cgrp =cgroup_get_from_path ("/" ); +int level; + +if (!cgrp) +return -ENOENT ; + + level = cgrp->level; + +cgroup_put (cgrp); + +if (WARN_ON_ONCE (level >255 )) +return -ERANGE ; + +if (WARN_ON_ONCE (level <0 )) +return -EINVAL ; + +return level; +}#endif static struct sock *nft_socket_do_lookup (const struct nft_pktinfo *pkt)
@@ -174,9 +197,10 @@ static int nft_socket_init(const struct nft_ctx *ctx,case NFT_SOCKET_MARK : len =sizeof (u32);break ; -#ifdef CONFIG_CGROUPS +#ifdef CONFIG_SOCK_CGROUP_DATA case NFT_SOCKET_CGROUPV2 : {unsigned int level; +int err;if (!tb[NFTA_SOCKET_LEVEL ])return -EINVAL ;
@@ -185,6 +209,17 @@ static int nft_socket_init(const struct nft_ctx *ctx,if (level >255 )return -EOPNOTSUPP ; + err =nft_socket_cgroup_subtree_level (); +if (err <0 ) +return err; + + priv->level_user = level; + + level += err; +/* Implies a giant cgroup tree */ +if (WARN_ON_ONCE (level >255 )) +return -EOPNOTSUPP ; + priv->level = level; len =sizeof (u64);break ;
@@ -209,7 +244,7 @@ static int nft_socket_dump(struct sk_buff *skb,if (nft_dump_register (skb,NFTA_SOCKET_DREG , priv->dreg))return -1 ;if (priv->key ==NFT_SOCKET_CGROUPV2 && -nla_put_be32 (skb,NFTA_SOCKET_LEVEL ,htonl (priv->level))) +nla_put_be32 (skb,NFTA_SOCKET_LEVEL ,htonl (priv->level_user)))return -1 ;return 0 ; }
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 74/91 net: dsa: felix: ignore pending status of TAS module when its disabled
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Xiaoliang Yang <[email protected]>
[ Upstream commit 70654f4c212e83898feced125d91ebb3695950d8 ]
The TAS module could not be configured when it's running in pending status. We need disable the module and configure it again. However, the pending status is not cleared after the module disabled. TC taprio set will always return busy even it's disabled.
For example, a user uses tc-taprio to configure Qbv and a future basetime. The TAS module will run in a pending status. There is no way to reconfigure Qbv, it always returns busy.
Actually the TAS module can be reconfigured when it's disabled. So it doesn't need to check the pending status if the TAS module is disabled.
After the patch, user can delete the tc taprio configuration to disable Qbv and reconfigure it again.
--- drivers/net/dsa/ocelot/felix_vsc9959.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
drivers/net/dsa/ocelot/felix_vsc9959.c +7 -4
@@ -1474,10 +1474,13 @@ static int vsc9959_qos_port_tas_set(struct ocelot *ocelot, int port,/* Hardware errata - Admin config could not be overwritten if * config is pending, need reset the TAS module */ - val =ocelot_read (ocelot,QSYS_PARAM_STATUS_REG_8 ); -if (val &QSYS_PARAM_STATUS_REG_8_CONFIG_PENDING ) { - ret = -EBUSY ; - goto err_reset_tc; + val =ocelot_read_rix (ocelot,QSYS_TAG_CONFIG , port); +if (val &QSYS_TAG_CONFIG_ENABLE ) { + val =ocelot_read (ocelot,QSYS_PARAM_STATUS_REG_8 ); +if (val &QSYS_PARAM_STATUS_REG_8_CONFIG_PENDING ) { + ret = -EBUSY ; + goto err_reset_tc; + } } ocelot_rmw_rix(ocelot,
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 75/91 net: dpaa: Pad packets to ETH_ZLEN
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Sean Anderson <[email protected]>
[ Upstream commit cbd7ec083413c6a2e0c326d49e24ec7d12c7a9e0 ]
When sending packets under 60 bytes, up to three bytes of the buffer following the data may be leaked. Avoid this by extending all packets to ETH_ZLEN, ensuring nothing is leaked in the padding. This bug can be reproduced by running
$ ping -s 11 destination
--- drivers/net/ethernet/freescale/dpaa/dpaa_eth.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +8 -1
@@ -2285,12 +2285,12 @@ static netdev_tx_t dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev) { const int queue_mapping = skb_get_queue_mapping(skb); -bool nonlinear =skb_is_nonlinear (skb);struct rtnl_link_stats64 *percpu_stats;struct dpaa_percpu_priv *percpu_priv;struct netdev_queue *txq;struct dpaa_priv *priv;struct qm_fd fd; +bool nonlinear;int offset =0 ;int err =0 ;
@@ -2300,6 +2300,13 @@ dpaa_start_xmit(struct sk_buff *skb, struct net_device *net_dev)qm_fd_clear_fd (&fd); +/* Packet data is always read as 32-bit words, so zero out any part of +* the skb which might be sent if we have to pad the packet +*/ +if (__skb_put_padto (skb,ETH_ZLEN , false)) + goto enomem; + + nonlinear =skb_is_nonlinear (skb);if (!nonlinear) {/* We're going to store the skb backpointer at the beginning * of the data buffer, so we need a privately owned skb
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 76/91 tracing/osnoise: Fix build when timerlat is not enabled
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steven Rostedt <[email protected]>
commit af178143343028fdec9d5960a22d17f5587fd3f5 upstream.
To fix some critical section races, the interface_lock was added to a few locations. One of those locations was above where the interface_lock was declared, so the declaration was moved up before that usage. Unfortunately, where it was placed was inside a CONFIG_TIMERLAT_TRACER ifdef block. As the interface_lock is used outside that config, this broke the build when CONFIG_OSNOISE_TRACER was enabled but CONFIG_TIMERLAT_TRACER was not.
--- kernel/trace/trace_osnoise.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
kernel/trace/trace_osnoise.c +5 -5
@@ -228,6 +228,11 @@ static inline struct osnoise_variables *this_cpu_osn_var(void)return this_cpu_ptr (&per_cpu_osnoise_var); } +/* +* Protect the interface. +*/ +static struct mutex interface_lock; +#ifdef CONFIG_TIMERLAT_TRACER /* * Runtime information for the timer mode.
@@ -252,11 +257,6 @@ static inline struct timerlat_variables *this_cpu_tmr_var(void)return this_cpu_ptr (&per_cpu_timerlat_var); } -/* -* Protect the interface. -*/ -static struct mutex interface_lock; -/* * tlat_var_reset - Reset the values of the given timerlat_variables */
Signature · 1 line
2.46.0
Greg Kroah-Hartman
maintainerPATCH 77/91 spi: nxp-fspi: fix the KASAN report out-of-bounds bug
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Han Xu <[email protected]>
commit 2a8787c1cdc7be24fdd8953ecd1a8743a1006235 upstream.
Change the memcpy length to fix the out-of-bounds issue when writing the data that is not 4 byte aligned to TX FIFO.
To reproduce the issue, write 3 bytes data to NOR chip.
dd if=3b of=/dev/mtd0
[ 36.926103] ================================================================== [ 36.933409] BUG: KASAN: slab-out-of-bounds in nxp_fspi_exec_op+0x26ec/0x2838 [ 36.940514] Read of size 4 at addr ffff00081037c2a0 by task dd/455 [ 36.946721] [ 36.948235] CPU: 3 UID: 0 PID: 455 Comm: dd Not tainted 6.11.0-rc5-gc7b0e37c8434 #1070 [ 36.956185] Hardware name: Freescale i.MX8QM MEK (DT) [ 36.961260] Call trace: [ 36.963723] dump_backtrace+0x90/0xe8 [ 36.967414] show_stack+0x18/0x24 [ 36.970749] dump_stack_lvl+0x78/0x90 [ 36.974451] print_report+0x114/0x5cc [ 36.978151] kasan_report+0xa4/0xf0 [ 36.981670] __asan_report_load_n_noabort+0x1c/0x28 [ 36.986587] nxp_fspi_exec_op+0x26ec/0x2838 [ 36.990800] spi_mem_exec_op+0x8ec/0xd30 [ 36.994762] spi_mem_no_dirmap_read+0x190/0x1e0 [ 36.999323] spi_mem_dirmap_write+0x238/0x32c [ 37.003710] spi_nor_write_data+0x220/0x374 [ 37.007932] spi_nor_write+0x110/0x2e8 [ 37.011711] mtd_write_oob_std+0x154/0x1f0 [ 37.015838] mtd_write_oob+0x104/0x1d0 [ 37.019617] mtd_write+0xb8/0x12c [ 37.022953] mtdchar_write+0x224/0x47c [ 37.026732] vfs_write+0x1e4/0x8c8 [ 37.030163] ksys_write+0xec/0x1d0 [ 37.033586] __arm64_sys_write+0x6c/0x9c [ 37.037539] invoke_syscall+0x6c/0x258 [ 37.041327] el0_svc_common.constprop.0+0x160/0x22c [ 37.046244] do_el0_svc+0x44/0x5c [ 37.049589] el0_svc+0x38/0x78 [ 37.052681] el0t_64_sync_handler+0x13c/0x158 [ 37.057077] el0t_64_sync+0x190/0x194 [ 37.060775] [ 37.062274] Allocated by task 455: [ 37.065701] kasan_save_stack+0x2c/0x54 [ 37.069570] kasan_save_track+0x20/0x3c [ 37.073438] kasan_save_alloc_info+0x40/0x54 [ 37.077736] __kasan_kmalloc+0xa0/0xb8 [ 37.081515] __kmalloc_noprof+0x158/0x2f8 [ 37.085563] mtd_kmalloc_up_to+0x120/0x154 [ 37.089690] mtdchar_write+0x130/0x47c [ 37.093469] vfs_write+0x1e4/0x8c8 [ 37.096901] ksys_write+0xec/0x1d0 [ 37.100332] __arm64_sys_write+0x6c/0x9c [ 37.104287] invoke_syscall+0x6c/0x258 [ 37.108064] el0_svc_common.constprop.0+0x160/0x22c [ 37.112972] do_el0_svc+0x44/0x5c [ 37.116319] el0_svc+0x38/0x78 [ 37.119401] el0t_64_sync_handler+0x13c/0x158 [ 37.123788] el0t_64_sync+0x190/0x194 [ 37.127474] [ 37.128977] The buggy address belongs to the object at ffff00081037c2a0 [ 37.128977] which belongs to the cache kmalloc-8 of size 8 [ 37.141177] The buggy address is located 0 bytes inside of [ 37.141177] allocated 3-byte region [ffff00081037c2a0, ffff00081037c2a3) [ 37.153465] [ 37.154971] The buggy address belongs to the physical page: [ 37.160559] page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x89037c [ 37.168596] flags: 0xbfffe0000000000(node=0|zone=2|lastcpupid=0x1ffff) [ 37.175149] page_type: 0xfdffffff(slab) [ 37.179021] raw: 0bfffe0000000000 ffff000800002500 dead000000000122 0000000000000000 [ 37.186788] raw: 0000000000000000 0000000080800080 00000001fdffffff 0000000000000000 [ 37.194553] page dumped because: kasan: bad access detected [ 37.200144] [ 37.201647] Memory state around the buggy address: [ 37.206460] ffff00081037c180: fa fc fc fc fa fc fc fc fa fc fc fc fa fc fc fc [ 37.213701] ffff00081037c200: fa fc fc fc 05 fc fc fc 03 fc fc fc 02 fc fc fc [ 37.220946] >ffff00081037c280: 06 fc fc fc 03 fc fc fc fc fc fc fc fc fc fc fc [ 37.228186] ^ [ 37.232473] ffff00081037c300: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc [ 37.239718] ffff00081037c380: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc [ 37.246962] ================================================================== [ 37.254394] Disabling lock debugging due to kernel taint
0+1 records in
0+1 records out
3 bytes copied, 0.335911 s, 0.0 kB/s
--- drivers/spi/spi-nxp-fspi.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/spi/spi-nxp-fspi.c +3 -2
@@ -805,14 +805,15 @@ static void nxp_fspi_fill_txfifo(structif (i < op->data.nbytes) {u32 data =0 ;int j; +int remaining = op->data.nbytes - i;/* Wait for TXFIFO empty */ ret =fspi_readl_poll_tout (f, f->iobase +FSPI_INTR ,FSPI_INTR_IPTXWE ,0 ,POLL_TOUT , true);WARN_ON (ret); -for (j =0 ; j <ALIGN (op->data.nbytes - i,4 ); j +=4 ) { -memcpy (&data, buf + i + j,4 ); +for (j =0 ; j <ALIGN (remaining,4 ); j +=4 ) { +memcpy (&data, buf + i + j,min_t (int,4 , remaining - j));fspi_writel (f, data, base +FSPI_TFDR + j); }fspi_writel (f,FSPI_INTR_IPTXWE , base +FSPI_INTR );
Greg Kroah-Hartman
maintainerPATCH 78/91 soundwire: stream: Revert "soundwire: stream: fix programming slave ports for non-continous port maps"
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Krzysztof Kozlowski <[email protected]>
commit 233a95fd574fde1c375c486540a90304a2d2d49f upstream.
This reverts commit ab8d66d132bc8f1992d3eb6cab8d32dda6733c84 because it breaks codecs using non-continuous masks in source and sink ports. The commit missed the point that port numbers are not used as indices for iterating over prop.sink_ports or prop.source_ports.
Soundwire core and existing codecs expect that the array passed as prop.sink_ports and prop.source_ports is continuous. The port mask still might be non-continuous, but that's unrelated.
--- drivers/soundwire/stream.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/soundwire/stream.c +4 -4
@@ -1286,18 +1286,18 @@ struct sdw_dpn_prop *sdw_get_slave_dpn_p unsigned int port_num) {struct sdw_dpn_prop *dpn_prop; -unsigned long mask; +u8 num_ports;int i;if (direction ==SDW_DATA_DIR_TX ) { - mask = slave->prop.source_ports; + num_ports =hweight32 (slave->prop.source_ports); dpn_prop = slave->prop.src_dpn_prop; }else { - mask = slave->prop.sink_ports; + num_ports =hweight32 (slave->prop.sink_ports); dpn_prop = slave->prop.sink_dpn_prop; } -for_each_set_bit (i, &mask,32 ) { +for (i =0 ; i < num_ports; i++) {if (dpn_prop[i].num == port_num)return &dpn_prop[i]; }
Greg Kroah-Hartman
maintainerPATCH 79/91 drm/syncobj: Fix syncobj leak in drm_syncobj_eventfd_ioctl
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: T.J. Mercier <[email protected]>
commit 8c7c44be57672e1474bf15a451011c291e85fda4 upstream.
A syncobj reference is taken in drm_syncobj_find, but not released if eventfd_ctx_fdget or kzalloc fails. Put the reference in these error paths.
Reviewed-by. Christian König <[email protected]>
--- drivers/gpu/drm/drm_syncobj.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-)
drivers/gpu/drm/drm_syncobj.c +13 -4
@@ -1421,6 +1421,7 @@ drm_syncobj_eventfd_ioctl(struct drm_devstruct drm_syncobj *syncobj;struct eventfd_ctx *ev_fd_ctx;struct syncobj_eventfd_entry *entry; +int ret;if (!drm_core_check_feature (dev,DRIVER_SYNCOBJ_TIMELINE ))return -EOPNOTSUPP ;
@@ -1436,13 +1437,15 @@ drm_syncobj_eventfd_ioctl(struct drm_devreturn -ENOENT ; ev_fd_ctx =eventfd_ctx_fdget (args->fd); -if (IS_ERR (ev_fd_ctx)) -return PTR_ERR (ev_fd_ctx); +if (IS_ERR (ev_fd_ctx)) { + ret =PTR_ERR (ev_fd_ctx); + goto err_fdget; + } entry =kzalloc (sizeof (*entry),GFP_KERNEL );if (!entry) { -eventfd_ctx_put (ev_fd_ctx); -return -ENOMEM ; + ret = -ENOMEM ; + goto err_kzalloc; } entry->syncobj = syncobj; entry->ev_fd_ctx = ev_fd_ctx;
@@ -1453,6 +1456,12 @@ drm_syncobj_eventfd_ioctl(struct drm_devdrm_syncobj_put (syncobj);return 0 ; + +err_kzalloc: +eventfd_ctx_put (ev_fd_ctx); +err_fdget: +drm_syncobj_put (syncobj); +return ret; }int
Greg Kroah-Hartman
maintainerPATCH 80/91 dma-buf: heaps: Fix off-by-one in CMA heap fault handler
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: T.J. Mercier <[email protected]>
commit ea5ff5d351b520524019f7ff7f9ce418de2dad87 upstream.
Until VM_DONTEXPAND was added in commit 1c1914d6e8c6 ("dma-buf: heaps:
Don't track CMA dma-buf pages under RssFile") it was possible to obtain a mapping larger than the buffer size via mremap and bypass the overflow check in dma_buf_mmap_internal. When using such a mapping to attempt to fault past the end of the buffer, the CMA heap fault handler also checks the fault offset against the buffer size, but gets the boundary wrong by
1. Fix the boundary check so that we don't read off the end of the pages array and insert an arbitrary page in the mapping.
--- drivers/dma-buf/heaps/cma_heap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/dma-buf/heaps/cma_heap.c +1 -1
@@ -165,7 +165,7 @@ static vm_fault_t cma_heap_vm_fault(strustruct vm_area_struct *vma = vmf->vma;struct cma_heap_buffer *buffer = vma->vm_private_data; -if (vmf->pgoff > buffer->pagecount) +if (vmf->pgoff >= buffer->pagecount)return VM_FAULT_SIGBUS ; vmf->page = buffer->pages[vmf->pgoff];
Greg Kroah-Hartman
maintainerPATCH 81/91 drm/nouveau/fb: restore init() for ramgp102
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ben Skeggs <[email protected]>
commit 6db9df4f7055eb4ea339e7b83ca676edd9ec1277 upstream.
init() was removed from ramgp102 when reworking the memory detection, as it was thought that the code was only necessary when the driver performs mclk changes, which nouveau doesn't support on pascal.
However, it turns out that we still need to execute this on some GPUs to restore settings after DEVINIT, so revert to the original behaviour.
v2: fix tags in commit message, cc stable
--- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h | 2 ++ drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.c | 2 +- drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp102.c | 1 + 3 files changed, 4 insertions(+), 1 deletion(-)
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ram.h +2 -0
@@ -46,6 +46,8 @@ u32 gm107_ram_probe_fbp(const struct nvku32 gm200_ram_probe_fbp_amount (const struct nvkm_ram_func *,u32 ,struct nvkm_device *,int ,int *); +int gp100_ram_init (struct nvkm_ram *); +/* RAM type-specific MR calculation routines */ int nvkm_sddr2_calc (struct nvkm_ram *);int nvkm_sddr3_calc (struct nvkm_ram *);
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp100.c +1 -1
@@ -27,7 +27,7 @@#include <subdev/bios/init.h> #include <subdev/bios/rammap.h> -static int +int gp100_ram_init (struct nvkm_ram *ram) {struct nvkm_subdev *subdev = &ram->fb->subdev;
drivers/gpu/drm/nouveau/nvkm/subdev/fb/ramgp102.c +1 -0
@@ -5,6 +5,7 @@static const struct nvkm_ram_func gp102_ram = { + .init = gp100_ram_init, };int
Greg Kroah-Hartman
maintainerPATCH 82/91 drm/amdgpu/atomfirmware: Silence UBSAN warning
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Alex Deucher <[email protected]>
commit 17ea4383649fdeaff3181ddcf1ff03350d42e591 upstream.
Per the comments, these are variable sized arrays.
--- drivers/gpu/drm/amd/include/atomfirmware.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/amd/include/atomfirmware.h +2 -2
@@ -1006,7 +1006,7 @@ struct display_object_info_table_v1_4uint16_t supporteddevices;uint8_t number_of_path;uint8_t reserved; -struct atom_display_object_path_v2 display_path[8 ];//the real number of this included in the structure is calculated by using the (whole structure size - the header size- number_of_path)/size of atom_display_object_path +struct atom_display_object_path_v2 display_path[];//the real number of this included in the structure is calculated by using the (whole structure size - the header size- number_of_path)/size of atom_display_object_path };struct display_object_info_table_v1_5 {
@@ -1016,7 +1016,7 @@ struct display_object_info_table_v1_5 {uint8_t reserved;// the real number of this included in the structure is calculated by using the // (whole structure size - the header size- number_of_path)/size of atom_display_object_path -struct atom_display_object_path_v3 display_path[8 ]; +struct atom_display_object_path_v3 display_path[]; };/*
Greg Kroah-Hartman
maintainerPATCH 83/91 drm/amd/amdgpu: apply command submission parser for JPEG v1
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: David (Ming Qiang) Wu <[email protected]>
commit 8409fb50ce48d66cf9dc5391f03f05c56c430605 upstream.
Similar to jpeg_v2_dec_ring_parse_cs() but it has different register ranges and a few other registers access.
--- drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c | 76 ++++++++++++++++++++++++++++++++- drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.h | 11 ++++ 2 files changed, 86 insertions(+), 1 deletion(-)
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.c +75 -1
@@ -23,6 +23,7 @@#include "amdgpu.h" #include "amdgpu_jpeg.h" +#include "amdgpu_cs.h" #include "soc15.h" #include "soc15d.h" #include "vcn_v1_0.h"
@@ -34,6 +35,9 @@static void jpeg_v1_0_set_dec_ring_funcs (struct amdgpu_device *adev);static void jpeg_v1_0_set_irq_funcs (struct amdgpu_device *adev);static void jpeg_v1_0_ring_begin_use (struct amdgpu_ring *ring); +static int jpeg_v1_dec_ring_parse_cs (struct amdgpu_cs_parser *parser, +struct amdgpu_job *job, +struct amdgpu_ib *ib);static void jpeg_v1_0_decode_ring_patch_wreg (struct amdgpu_ring *ring,uint32_t *ptr,uint32_t reg_offset,uint32_t val) {
@@ -300,7 +304,10 @@ static void jpeg_v1_0_decode_ring_emit_iamdgpu_ring_write (ring,PACKETJ (SOC15_REG_OFFSET (JPEG ,0 , mmUVD_LMI_JRBC_IB_VMID),0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +if (ring->funcs->parse_cs) +amdgpu_ring_write (ring,0 ); +else +amdgpu_ring_write (ring, (vmid | (vmid <<4 )));amdgpu_ring_write (ring,PACKETJ (SOC15_REG_OFFSET (JPEG ,0 , mmUVD_LMI_JPEG_VMID),0 ,0 ,PACKETJ_TYPE0 ));
@@ -554,6 +561,7 @@ static const struct amdgpu_ring_funcs jp .get_rptr = jpeg_v1_0_decode_ring_get_rptr, .get_wptr = jpeg_v1_0_decode_ring_get_wptr, .set_wptr = jpeg_v1_0_decode_ring_set_wptr, + .parse_cs = jpeg_v1_dec_ring_parse_cs, .emit_frame_size =6 +6 +/* hdp invalidate / flush */ SOC15_FLUSH_GPU_TLB_NUM_WREG * 6 +
@@ -612,3 +620,69 @@ static void jpeg_v1_0_ring_begin_use(strvcn_v1_0_set_pg_for_begin_use (ring, set_clocks); } + +/** +* jpeg_v1_dec_ring_parse_cs - command submission parser +* +* @parser: Command submission parser context +* @job: the job to parse +* @ib: the IB to parse +* +* Parse the command stream, return -EINVAL for invalid packet, +* 0 otherwise +*/ +static int jpeg_v1_dec_ring_parse_cs (struct amdgpu_cs_parser *parser, +struct amdgpu_job *job, +struct amdgpu_ib *ib) +{ +u32 i, reg, res, cond, type; +int ret =0 ; +struct amdgpu_device *adev = parser->adev; + +for (i =0 ; i < ib->length_dw ; i +=2 ) { + reg =CP_PACKETJ_GET_REG (ib->ptr[i]); + res =CP_PACKETJ_GET_RES (ib->ptr[i]); + cond =CP_PACKETJ_GET_COND (ib->ptr[i]); + type =CP_PACKETJ_GET_TYPE (ib->ptr[i]); + +if (res || cond !=PACKETJ_CONDITION_CHECK0 )/* only allow 0 for now */ +return -EINVAL ; + +if (reg >=JPEG_V1_REG_RANGE_START && reg <=JPEG_V1_REG_RANGE_END ) +continue ; + +switch (type) { +case PACKETJ_TYPE0 : +if (reg !=JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_HIGH && + reg !=JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_LOW && + reg !=JPEG_V1_LMI_JPEG_READ_64BIT_BAR_HIGH && + reg !=JPEG_V1_LMI_JPEG_READ_64BIT_BAR_LOW && + reg !=JPEG_V1_REG_CTX_INDEX && + reg !=JPEG_V1_REG_CTX_DATA ) { + ret = -EINVAL ; + } +break ; +case PACKETJ_TYPE1 : +if (reg !=JPEG_V1_REG_CTX_DATA ) + ret = -EINVAL ; +break ; +case PACKETJ_TYPE3 : +if (reg !=JPEG_V1_REG_SOFT_RESET ) + ret = -EINVAL ; +break ; +case PACKETJ_TYPE6 : +if (ib->ptr[i] !=CP_PACKETJ_NOP ) + ret = -EINVAL ; +break ; +default : + ret = -EINVAL ; + } + +if (ret) { +dev_err (adev->dev,"Invalid packet [0x%08x]!\n" , ib->ptr[i]); +break ; + } + } + +return ret; +}
drivers/gpu/drm/amd/amdgpu/jpeg_v1_0.h +11 -0
@@ -29,4 +29,15 @@ int jpeg_v1_0_sw_init(void *handle);void jpeg_v1_0_sw_fini (void *handle);void jpeg_v1_0_start (struct amdgpu_device *adev,int mode); +#define JPEG_V1_REG_RANGE_START 0x8000 +#define JPEG_V1_REG_RANGE_END 0x803f + +#define JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_HIGH 0x8238 +#define JPEG_V1_LMI_JPEG_WRITE_64BIT_BAR_LOW 0x8239 +#define JPEG_V1_LMI_JPEG_READ_64BIT_BAR_HIGH 0x825a +#define JPEG_V1_LMI_JPEG_READ_64BIT_BAR_LOW 0x825b +#define JPEG_V1_REG_CTX_INDEX 0x8328 +#define JPEG_V1_REG_CTX_DATA 0x8329 +#define JPEG_V1_REG_SOFT_RESET 0x83a0 +#endif /*__JPEG_V1_0_H__*/
Greg Kroah-Hartman
maintainerPATCH 84/91 spi: geni-qcom: Undo runtime PM changes at driver exit time
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <[email protected]>
[ Upstream commit 89e362c883c65ff94b76b9862285f63545fb5274 ]
It's important to undo pm_runtime_use_autosuspend() with pm_runtime_dont_use_autosuspend() at driver exit time unless driver initially enabled pm_runtime with devm_pm_runtime_enable() (which handles it for you).
Hence, switch to devm_pm_runtime_enable() to fix it, so the pm_runtime_disable() in probe error path and remove function can be removed.
--- drivers/spi/spi-geni-qcom.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
drivers/spi/spi-geni-qcom.c +6 -7
@@ -1110,25 +1110,27 @@ static int spi_geni_probe(struct platform_device *pdev)spin_lock_init (&mas->lock);pm_runtime_use_autosuspend (&pdev->dev);pm_runtime_set_autosuspend_delay (&pdev->dev,250 ); -pm_runtime_enable (dev); + ret =devm_pm_runtime_enable (dev); +if (ret) +return ret;if (device_property_read_bool (&pdev->dev,"spi-slave" )) spi->slave = true; ret =geni_icc_get (&mas->se,NULL );if (ret) - goto spi_geni_probe_runtime_disable; +return ret;/* Set the bus quota to a reasonable value for register access */ mas->se.icc_paths[GENI_TO_CORE ].avg_bw =Bps_to_icc (CORE_2X_50_MHZ ); mas->se.icc_paths[CPU_TO_GENI ].avg_bw =GENI_DEFAULT_BW ; ret =geni_icc_set_bw (&mas->se);if (ret) - goto spi_geni_probe_runtime_disable; +return ret; ret =spi_geni_init (mas);if (ret) - goto spi_geni_probe_runtime_disable; +return ret;/* * check the mode supported and set_cs for fifo mode only
@@ -1157,8 +1159,6 @@ static int spi_geni_probe(struct platform_device *pdev)free_irq (mas->irq, spi); spi_geni_release_dma:spi_geni_release_dma_chan (mas); -spi_geni_probe_runtime_disable: -pm_runtime_disable (dev);return ret; }
@@ -1173,7 +1173,6 @@ static void spi_geni_remove(struct platform_device *pdev)spi_geni_release_dma_chan (mas);free_irq (mas->irq, spi); -pm_runtime_disable (&pdev->dev); }static int __maybe_unused spi_geni_runtime_suspend (struct device *dev)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 85/91 spi: geni-qcom: Fix incorrect free_irq() sequence
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jinjie Ruan <[email protected]>
[ Upstream commit b787a33864121a565aeb0e88561bf6062a19f99c ]
In spi_geni_remove(), the free_irq() sequence is different from that on the probe error path. And the IRQ will still remain and it's interrupt handler may use the dma channel after release dma channel and before free irq, which is not secure, fix it.
--- drivers/spi/spi-geni-qcom.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/spi/spi-geni-qcom.c +2 -2
@@ -1170,9 +1170,9 @@ static void spi_geni_remove(struct platform_device *pdev)/* Unregister _before_ disabling pm_runtime() so we stop transfers */ spi_unregister_master (spi); -spi_geni_release_dma_chan (mas); -free_irq (mas->irq, spi); + +spi_geni_release_dma_chan (mas); }static int __maybe_unused spi_geni_runtime_suspend (struct device *dev)
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 86/91 drm/i915/guc: prevent a possible int overflow in wq offsets
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Nikita Zhandarovich <[email protected]>
[ Upstream commit d3d37f74683e2f16f2635ee265884f7ca69350ae ]
It may be possible for the sum of the values derived from i915_ggtt_offset() and __get_parent_scratch_offset()/ i915_ggtt_offset() to go over the u32 limit before being assigned to wq offsets of u64 type.
Mitigate these issues by expanding one of the right operands to u64 to avoid any overflow issues just in case.
Found by Linux Verification Center (linuxtesting.org) with static analysis tool SVACE.
--- drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/gpu/drm/i915/gt/uc/intel_guc_submission.c +2 -2
@@ -2695,9 +2695,9 @@ static void prepare_context_registration_info_v70(struct intel_context *ce, ce->parallel.guc.wqi_tail =0 ; ce->parallel.guc.wqi_head =0 ; - wq_desc_offset =i915_ggtt_offset (ce->state) + + wq_desc_offset = (u64 )i915_ggtt_offset (ce->state) +__get_parent_scratch_offset (ce); - wq_base_offset =i915_ggtt_offset (ce->state) + + wq_base_offset = (u64 )i915_ggtt_offset (ce->state) +__get_wq_offset (ce); info->wq_desc_lo =lower_32_bits (wq_desc_offset); info->wq_desc_hi =upper_32_bits (wq_desc_offset);
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 87/91 ASoC: codecs: avoid possible garbage value in peb2466_reg_read()
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Su Hui <[email protected]>
[ Upstream commit 38cc0334baabc5baf08a1db753de521e016c0432 ]
Clang static checker (scan-build) warning:sound/soc/codecs/peb2466.c:232:8:
Assigned value is garbage or undefined [core.uninitialized.Assign]
232 | *val = tmp;
| ^ ~~~
When peb2466_read_byte() fails, 'tmp' will have a garbage value. Add a judgemnet to avoid this problem.
--- sound/soc/codecs/peb2466.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
sound/soc/codecs/peb2466.c +2 -1
@@ -229,7 +229,8 @@ static int peb2466_reg_read(void *context, unsigned int reg, unsigned int *val)case PEB2466_CMD_XOP :case PEB2466_CMD_SOP : ret =peb2466_read_byte (peb2466, reg, &tmp); - *val = tmp; +if (!ret) + *val = tmp;break ;default :dev_err (&peb2466->spi->dev,"Not a XOP or SOP command\n" );
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 88/91 cifs: Fix signature miscalculation
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: David Howells <[email protected]>
[ Upstream commit 5a20b7cb0d8d3ee490a8e088dc2584aa782e3355 ]
Fix the calculation of packet signatures by adding the offset into a page in the read or write data payload when hashing the pages from it.
--- fs/smb/client/cifsencrypt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/smb/client/cifsencrypt.c +1 -1
@@ -129,7 +129,7 @@ static ssize_t cifs_shash_xarray(const struct iov_iter *iter, ssize_t maxsize,for (j = foffset /PAGE_SIZE ; j < npages; j++) { len =min_t (size_t, maxsize,PAGE_SIZE - offset); p =kmap_local_page (folio_page (folio, j)); - ret =crypto_shash_update (shash, p, len); + ret =crypto_shash_update (shash, p + offset, len);kunmap_local (p);if (ret <0 )return ret;
Signature · 1 line
2.43.0
Greg Kroah-Hartman
maintainerPATCH 89/91 pinctrl: meteorlake: Add Arrow Lake-H/U ACPI ID
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mika Westerberg <[email protected]>
commit a366e46da10d7bfa1a52c3bd31f342a3d0e8e7fe upstream.
Intel Arrow Lake-H/U has the same GPIO hardware than Meteor Lake-P but the ACPI ID is different. Add this new ACPI ID to the list of supported devices.
--- drivers/pinctrl/intel/pinctrl-meteorlake.c | 1 + 1 file changed, 1 insertion(+)
drivers/pinctrl/intel/pinctrl-meteorlake.c +1 -0
@@ -583,6 +583,7 @@ static const struct intel_pinctrl_soc_da };static const struct acpi_device_id mtl_pinctrl_acpi_match[] = { + {"INTC105E" , (kernel_ulong_t)&mtlp_soc_data }, {"INTC1083" , (kernel_ulong_t)&mtlp_soc_data }, {"INTC1082" , (kernel_ulong_t)&mtls_soc_data }, { }
Greg Kroah-Hartman
maintainerPATCH 90/91 ASoC: meson: axg-card: fix use-after-free
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arseniy Krasnov <[email protected]>
commit 4f9a71435953f941969a4f017e2357db62d85a86 upstream.
Buffer 'card->dai_link' is reallocated in 'meson_card_reallocate_links()', so move 'pad' pointer initialization after this function when memory is already reallocated.
Kasan bug report:
==================================================================
BUG: KASAN: slab-use-after-free in axg_card_add_link+0x76c/0x9bc Read of size 8 at addr ffff000000e8b260 by task modprobe/356 CPU: 0 PID: 356 Comm: modprobe Tainted: G O 6.9.12-sdkernel #1 Call trace: dump_backtrace+0x94/0xec show_stack+0x18/0x24 dump_stack_lvl+0x78/0x90 print_report+0xfc/0x5c0 kasan_report+0xb8/0xfc __asan_load8+0x9c/0xb8 axg_card_add_link+0x76c/0x9bc [snd_soc_meson_axg_sound_card] meson_card_probe+0x344/0x3b8 [snd_soc_meson_card_utils] platform_probe+0x8c/0xf4 really_probe+0x110/0x39c __driver_probe_device+0xb8/0x18c driver_probe_device+0x108/0x1d8 __driver_attach+0xd0/0x25c bus_for_each_dev+0xe0/0x154 driver_attach+0x34/0x44 bus_add_driver+0x134/0x294 driver_register+0xa8/0x1e8 __platform_driver_register+0x44/0x54 axg_card_pdrv_init+0x20/0x1000 [snd_soc_meson_axg_sound_card] do_one_initcall+0xdc/0x25c do_init_module+0x10c/0x334 load_module+0x24c4/0x26cc init_module_from_file+0xd4/0x128 __arm64_sys_finit_module+0x1f4/0x41c invoke_syscall+0x60/0x188 el0_svc_common.constprop.0+0x78/0x13c do_el0_svc+0x30/0x40 el0_svc+0x38/0x78 el0t_64_sync_handler+0x100/0x12c el0t_64_sync+0x190/0x194
--- sound/soc/meson/axg-card.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
sound/soc/meson/axg-card.c +2 -1
@@ -104,7 +104,7 @@ static int axg_card_add_tdm_loopback(str int *index) {struct meson_card *priv =snd_soc_card_get_drvdata (card); -struct snd_soc_dai_link *pad = &card->dai_link[*index]; +struct snd_soc_dai_link *pad;struct snd_soc_dai_link *lb;struct snd_soc_dai_link_component *dlc;int ret;
@@ -114,6 +114,7 @@ static int axg_card_add_tdm_loopback(strif (ret)return ret; + pad = &card->dai_link[*index]; lb = &card->dai_link[*index +1 ]; lb->name =devm_kasprintf (card->dev,GFP_KERNEL ,"%s-lb" , pad->name);
Greg Kroah-Hartman
maintainerPATCH 91/91 riscv: dts: starfive: add assigned-clock* to limit frquency
In reply to Greg Kroah-Hartman6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: William Qiu <[email protected]>
commit af571133f7ae028ec9b5fdab78f483af13bf28d3 upstream.
In JH7110 SoC, we need to go by-pass mode, so we need add the assigned-clock* properties to limit clock frquency.
--- arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi +4 -0
@@ -204,6 +204,8 @@ &mmc0 { max-frequency = <100000000>; + assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>; + assigned-clock-rates = <50000000>; bus-width = <8>; cap-mmc-highspeed; mmc-ddr-1_8v;
@@ -220,6 +222,8 @@ &mmc1 { max-frequency = <100000000>; + assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>; + assigned-clock-rates = <50000000>; bus-width = <4>; no-sdio; no-mmc;
Hi Greg
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 9 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
6.6.52-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)
[ 0.000000] Linux version 6.6.52-rc1rv
(takeshi@ThinkPadX1Gen10J0764) (gcc (GCC) 14.2.1 20240910, GNU ld (GNU Binutils) 2.43.0) #1 SMP PREEMPT_DYNAMIC Mon Sep 16 22:24:01 JST 2024
Thanks
Quoted 7 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too l
Hi Greg,
No problems seen on x86_64 and aarch64 with our testing.
Thanks,
Harshit
Am 16.09.2024 um 13:43 schrieb Greg Kroah-Hartman:
Quoted 4 lines
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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.
Builds, boots and works on my 2-socket Ivy Bridge Xeon E5-2697 v2 server. No dmesg oddities or regressions found.
Beste Grüße,
Peter Schneider
Signature · 8 lines
Climb the mountain not to plant your flag, but to embrace the challenge, enjoy the air and behold the view. Climb it so you can see the world, not so the world can see you. -- David McCullough Jr. OpenPGP: 0xA3828BD796CCE11A8CADE8866E3A92C92C3FF244 Download: https://www.peters-netzplatz.de/download/pschneider1968_pub.asc https://keys.mailvelope.com/pks/lookup?op=get&[email protected] https://keys.mailvelope.com/pks/lookup?op=get&[email protected]
Quoted 4 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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.
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
The s390 builds failed on the Linux stable-rc linux-6.6.y and linux-6.10.y due to following build warnings / errors with gcc-13 and clang-19 with defconfig.
* s390, build
- clang-19-allnoconfig
- clang-19-defconfig
- clang-19-tinyconfig
- clang-nightly-allnoconfig
- clang-nightly-defconfig
- clang-nightly-tinyconfig
- gcc-13-allmodconfig
- gcc-13-allnoconfig
- gcc-13-defconfig
- gcc-13-tinyconfig
- gcc-8-allnoconfig
- gcc-8-defconfig-fe40093d
- gcc-8-tinyconfig
First seen on v6.6.51-92-gfd49ddc1e5f8
Good: v6.6.51
BAD: v6.6.51-92-gfd49ddc1e5f8
build log:
--------arch/s390/kernel/setup.c: In function 'reserve_lowcore':arch/s390/kernel/setup.c:748:31: error: implicit declaration of function 'get_lowcore'; did you mean 'setup_lowcore'? [-Werror=implicit-function-declaration]
748 | void *lowcore_start = get_lowcore();
| ^~~~~~~~~~~
| setup_lowcorearch/s390/kernel/setup.c:748:31: warning: initialization of 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]arch/s390/kernel/setup.c:752:21: error: '__identity_base' undeclared (first use in this function)
752 | if ((void *)__identity_base < lowcore_end) {
| ^~~~~~~~~~~~~~~
arch/s390/kernel/setup.c:752:21: note: each undeclared identifier is
reported only once for each function it appears in
In file included from include/linux/bits.h:21,
from arch/s390/include/asm/ptrace.h:10,
from arch/s390/include/asm/lowcore.h:13,
from arch/s390/include/asm/current.h:13,
from include/linux/sched.h:12,
from arch/s390/kernel/setup.c:21:include/linux/minmax.h:31:9: error: first argument to '__builtin_choose_expr' not a constant
31 |
__builtin_choose_expr(__is_constexpr(is_signed_type(typeof(x))),
\
| ^~~~~~~~~~~~~~~~~~~~~Build Log links,
--------
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.6.y/build/v6.6.51-92-gfd49ddc1e5f8/testrun/25153617/suite/build/test/gcc-13-defconfig/log
- https://storage.tuxsuite.com/public/linaro/lkft/builds/2m9YUHx7PsQwr4lBdvjITAfP9Pp/
Build failed comparison:
- https://qa-reports.linaro.org/lkft/linux-stable-rc-linux-6.6.y/build/v6.6.51-92-gfd49ddc1e5f8/testrun/25153617/suite/build/test/gcc-13-defconfig/history/
metadata:
----
git describe: v6.6.51-92-gfd49ddc1e5f8
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git sha: fd49ddc1e5f8121355db23e04b94f6df460a5051
kernel config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2m9YUHx7PsQwr4lBdvjITAfP9Pp/config
build url: https://storage.tuxsuite.com/public/linaro/lkft/builds/2m9YUHx7PsQwr4lBdvjITAfP9Pp/
toolchain: gcc-13, gcc-8 and clang-19
config: defconfig
arch: s390
Steps to reproduce:
---------
- # tuxmake --runtime podman --target-arch s390 --toolchain gcc-13
--kconfig defconfig
--
Linaro LKFT
https://lkft.linaro.org
Greg Kroah-Hartman
maintainerQuoted 71 lines · Naresh Kamboju
Quoted 10 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
The s390 builds failed on the Linux stable-rc linux-6.6.y and linux-6.10.y due to following build warnings / errors with gcc-13 and clang-19 with defconfig.
* s390, build
- clang-19-allnoconfig
- clang-19-defconfig
- clang-19-tinyconfig
- clang-nightly-allnoconfig
- clang-nightly-defconfig
- clang-nightly-tinyconfig
- gcc-13-allmodconfig
- gcc-13-allnoconfig
- gcc-13-defconfig
- gcc-13-tinyconfig
- gcc-8-allnoconfig
- gcc-8-defconfig-fe40093d
- gcc-8-tinyconfigFirst seen on v6.6.51-92-gfd49ddc1e5f8
Good: v6.6.51
BAD: v6.6.51-92-gfd49ddc1e5f8build log:
--------arch/s390/kernel/setup.c: In function 'reserve_lowcore':arch/s390/kernel/setup.c:748:31: error: implicit declaration of function 'get_lowcore'; did you mean 'setup_lowcore'? [-Werror=implicit-function-declaration]748 | void *lowcore_start = get_lowcore(); | ^~~~~~~~~~~ | setup_lowcore
arch/s390/kernel/setup.c:748:31: warning: initialization of 'void *' from 'int' makes pointer from integer without a cast [-Wint-conversion]arch/s390/kernel/setup.c:752:21: error: '__identity_base' undeclared (first use in this function)752 | if ((void *)__identity_base < lowcore_end) { | ^~~~~~~~~~~~~~~ arch/s390/kernel/setup.c:752:21: note: each undeclared identifier is reported only once for each function it appears in In file included from include/linux/bits.h:21, from arch/s390/include/asm/ptrace.h:10, from arch/s390/include/asm/lowcore.h:13, from arch/s390/include/asm/current.h:13, from include/linux/sched.h:12, from arch/s390/kernel/setup.c:21:
Quoted 6 lines
include/linux/minmax.h:31:9: error: first argument to '__builtin_choose_expr' not a constant
31 |
__builtin_choose_expr(__is_constexpr(is_signed_type(typeof(x))),\ | ^~~~~~~~~~~~~~~~~~~~~
Offending commit now removed from 6.6.y and 6.10.y, thanks!
greg k-h
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
All tests passing for Tegra ...
Test results for stable-v6.6:
10 builds: 10 pass, 0 fail
26 boots: 26 pass, 0 fail
116 tests: 116 pass, 0 failLinux version: 6.6.52-rc1-gfd49ddc1e5f8
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-a04Jon
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.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:
Signature · 1 line
Florian
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
Built and booted successfully on RISC-V RV64 (HiFive Unmatched).
Quoted 9 lines · Greg Kroah-Hartman
This is the start of the stable review cycle for the 6.6.52 release. There are 91 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, 18 Sep 2024 11:42:05 +0000. Anything received after that time might be too late.
The whole patch series can be found in one patch at:
Quoted 8 lines
https://www.kernel.org/pub/linux/kernel/v6.x/stable-review/patch-6.6.52-rc1.gzor in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.gitlinux-6.6.y
and the diffstat can be found below.thanks,
greg k-h
Building passed on amd64, arm64, loongarch64, ppc64el, and riscv64. Smoke testing passed on 9 amd64 and 1 arm64 test systems.
https://github.com/AOSC-Dev/aosc-os-abbs/pull/8027
Signature · 2 lines
Best Regards, Kexy Biscuit