I'm announcing the release of the 5.15.172 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2
arch/arm/boot/dts/rk3036-kylin.dts | 4
arch/arm/boot/dts/rk3036.dtsi | 14 -
arch/arm64/boot/dts/freescale/imx8mp.dtsi | 6
arch/arm64/boot/dts/rockchip/rk3308-roc-cc.dts | 4
arch/arm64/boot/dts/rockchip/rk3328.dtsi | 3
arch/arm64/boot/dts/rockchip/rk3368-lion.dtsi | 1
arch/arm64/boot/dts/rockchip/rk3399-rock960.dtsi | 2
arch/arm64/boot/dts/rockchip/rk3399-sapphire-excavator.dts | 2
drivers/acpi/prmt.c | 2
drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 4
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c | 8
drivers/hid/hid-core.c | 2
drivers/irqchip/irq-gic-v3.c | 7
drivers/md/dm-cache-target.c | 35 +-
drivers/md/dm-unstripe.c | 4
drivers/media/cec/usb/pulse8/pulse8-cec.c | 2
drivers/media/common/v4l2-tpg/v4l2-tpg-core.c | 3
drivers/media/dvb-core/dvb_frontend.c | 4
drivers/media/dvb-core/dvbdev.c | 17 +
drivers/media/dvb-frontends/cx24116.c | 7
drivers/media/dvb-frontends/stb0899_algo.c | 2
drivers/media/i2c/adv7604.c | 26 +
drivers/media/platform/s5p-jpeg/jpeg-core.c | 17 -
drivers/media/usb/uvc/uvc_driver.c | 2
drivers/media/v4l2-core/v4l2-ctrls-api.c | 17 -
drivers/net/can/c_can/c_can_main.c | 7
drivers/net/ethernet/arc/emac_main.c | 27 +-
drivers/net/ethernet/freescale/enetc/enetc_vf.c | 9
drivers/net/ethernet/hisilicon/hns3/hnae3.c | 5
drivers/net/ethernet/intel/i40e/i40e.h | 1
drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 1
drivers/net/ethernet/intel/i40e/i40e_main.c | 12
drivers/net/ethernet/intel/ice/ice_ethtool_fdir.c | 2
drivers/net/ethernet/intel/ice/ice_fdir.h | 3
drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.c | 16 +
drivers/net/ethernet/intel/ice/ice_virtchnl_fdir.h | 1
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 1
drivers/net/phy/dp83848.c | 2
drivers/pwm/pwm-imx-tpm.c | 4
drivers/scsi/sd_zbc.c | 3
drivers/thermal/qcom/lmh.c | 7
drivers/usb/dwc3/core.c | 25 -
drivers/usb/musb/sunxi.c | 2
drivers/usb/serial/io_edgeport.c | 8
drivers/usb/serial/option.c | 6
drivers/usb/serial/qcserial.c | 2
drivers/usb/typec/ucsi/ucsi_ccg.c | 2
fs/btrfs/delayed-ref.c | 2
fs/nfs/inode.c | 126 ++++++++-
fs/nfs/nfstrace.h | 1
fs/nfs/super.c | 10
fs/ocfs2/xattr.c | 3
fs/proc/vmcore.c | 9
include/linux/fs.h | 36 ++
include/linux/nfs_fs.h | 47 +++
include/linux/tick.h | 8
io_uring/io_uring.c | 50 ++-
kernel/fork.c | 2
kernel/ucount.c | 3
net/bridge/br_device.c | 5
net/core/dst.c | 17 -
net/sctp/sm_statefuns.c | 2
net/vmw_vsock/hyperv_transport.c | 1
net/vmw_vsock/virtio_transport_common.c | 1
security/keys/keyring.c | 7
sound/firewire/tascam/amdtp-tascam.c | 2
sound/pci/hda/patch_conexant.c | 2
sound/soc/stm/stm32_spdifrx.c | 2
sound/usb/mixer.c | 1
sound/usb/mixer_quirks.c | 170 +++++++++++++
sound/usb/quirks.c | 2
72 files changed, 673 insertions(+), 179 deletions(-)
Ahmed Zaki (1):
ice: Add a per-VF limit on number of FDIR filters
Aleksandr Loktionov (1):
i40e: fix race condition by adding filter's intermediate sync state
Alex Deucher (2):
drm/amdgpu: Adjust debugfs eviction and IB access permissions
drm/amdgpu: add missing size check in amdgpu_debugfs_gprwave_read()
Amelie Delaunay (1):
ASoC: stm32: spdifrx: fix dma channel release in stm32_spdifrx_remove
Amir Goldstein (3):
io_uring: rename kiocb_end_write() local helper
fs: create kiocb_{start,end}_write() helpers
io_uring: use kiocb_{start,end}_write() helpers
Andrei Vagin (1):
ucounts: fix counter leak in inc_rlimit_get_ucounts()
Andrew Kanner (1):
ocfs2: remove entry once instead of null-ptr-dereference in ocfs2_xa_remove()
Antonio Quartulli (1):
drm/amdgpu: prevent NULL pointer dereference if ATIF is not supported
Benjamin Coddington (1):
NFS: Add a tracepoint to show the results of nfs_set_cache_invalid()
Benjamin Segall (1):
posix-cpu-timers: Clear TICK_DEP_BIT_POSIX_TIMER on clone
Benoit Sevens (1):
media: uvcvideo: Skip parsing frames of type UVC_VS_UNDEFINED in uvc_parse_format
Benoît Monin (1):
USB: serial: option: add Quectel RG650V
Chen Ridong (1):
security/keys: fix slab-out-of-bounds in key_task_permission
Dan Carpenter (3):
usb: typec: fix potential out of bounds in ucsi_ccg_update_set_new_cam_cmd()
USB: serial: io_edgeport: fix use after free in debug printk
ACPI: PRM: Clean up guid type in struct prm_handler_info
Dario Binacchi (1):
can: c_can: fix {rx,tx}_errors statistics
Diederik de Haas (1):
arm64: dts: rockchip: Remove hdmi's 2nd interrupt on rk3328
Diogo Silva (1):
net: phy: ti: add PHY_RST_AFTER_CLK_EN flag
Dmitry Baryshkov (1):
thermal/drivers/qcom/lmh: Remove false lockdep backtrace
Eric Dumazet (1):
net: do not delay dst_entries_add() in dst_release()
Erik Schumacher (1):
pwm: imx-tpm: Use correct MODULO value for EPWM mode
Filipe Manana (1):
btrfs: reinitialize delayed ref list after deleting it from the list
Geert Uytterhoeven (1):
arm64: dts: rockchip: Fix rt5651 compatible value on rk3399-sapphire-excavator
Greg Kroah-Hartman (1):
Linux 5.15.172
Heiko Stuebner (7):
arm64: dts: rockchip: Fix bluetooth properties on Rock960 boards
arm64: dts: rockchip: Remove #cooling-cells from fan on Theobroma lion
arm64: dts: rockchip: Fix LED triggers on rk3308-roc-cc
ARM: dts: rockchip: fix rk3036 acodec node
ARM: dts: rockchip: drop grf reference from rk3036 hdmi
ARM: dts: rockchip: Fix the spi controller on rk3036
ARM: dts: rockchip: Fix the realtek audio codec on rk3036-kylin
Hyunwoo Kim (2):
hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
Jack Wu (1):
USB: serial: qcserial: add support for Sierra Wireless EM86xx
Jan Schär (3):
ALSA: usb-audio: Support jack detection on Dell dock
ALSA: usb-audio: Add quirks for Dell WD19 dock
ALSA: usb-audio: Add endianness annotations
Jarosław Janik (1):
Revert "ALSA: hda/conexant: Mute speakers at suspend / shutdown"
Jens Axboe (1):
io_uring/rw: fix missing NOWAIT check for O_DIRECT start write
Jiri Kosina (1):
HID: core: zero-initialize the report buffer
Johan Jonker (1):
net: arc: fix the device for dma_map_single/dma_unmap_single
Johannes Thumshirn (1):
scsi: sd_zbc: Use kvzalloc() to allocate REPORT ZONES buffer
Marc Zyngier (1):
irqchip/gic-v3: Force propagation of the active state with a read-back
Mauro Carvalho Chehab (9):
media: stb0899_algo: initialize cfr before using it
media: dvbdev: prevent the risk of out of memory access
media: dvb_frontend: don't play tricks with underflow values
media: adv7604: prevent underflow condition when reporting colorspace
media: s5p-jpeg: prevent buffer overflows
media: cx24116: prevent overflows on SNR calculus
media: pulse8-cec: fix data timestamp at pulse8_setup()
media: v4l2-tpg: prevent the risk of a division by zero
media: v4l2-ctrls-api: fix error handling for v4l2_g_ctrl()
Mike Snitzer (1):
nfs: avoid i_lock contention in nfs_clear_invalid_mapping
Ming-Hung Tsai (4):
dm cache: correct the number of origin blocks to match the target length
dm cache: fix out-of-bounds access to the dirty bitset when resizing
dm cache: optimize dirty bit checking with find_next_bit when resizing
dm cache: fix potential out-of-bounds access on the first resume
Murad Masimov (1):
ALSA: firewire-lib: fix return value on fail in amdtp_tscm_init()
NeilBrown (2):
NFSv3: only use NFS timeout for MOUNT when protocols are compatible
NFSv3: handle out-of-order write replies.
Nikolay Aleksandrov (1):
net: bridge: xmit: make sure we have at least eth header len bytes
Nícolas F. R. A. Prado (1):
net: stmmac: Fix unbalanced IRQ wake disable warning on single irq case
Peiyang Wang (1):
net: hns3: fix kernel crash when uninstalling driver
Peng Fan (1):
arm64: dts: imx8mp: correct sdhc ipg clk
Qi Xi (1):
fs/proc: fix compile warning about variable 'vmcore_mmap_ops'
Reinhard Speyerer (1):
USB: serial: option: add Fibocom FG132 0x0112 composition
Roberto Sassu (1):
nfs: Fix KMSAN warning in decode_getfattr_attrs()
Roger Quadros (1):
usb: dwc3: fix fault at system suspend if device was already runtime suspended
Takashi Iwai (1):
ALSA: usb-audio: Add quirk for HP 320 FHD Webcam
Wei Fang (1):
net: enetc: set MAC address to the VF net_device
Xin Long (1):
sctp: properly validate chunk size in sctp_sf_ootb()
Zichen Xie (1):
dm-unstriped: cast an operand to sector_t to prevent potential uint32_t overflow
Zijun Hu (1):
usb: musb: sunxi: Fix accessing an released usb phy
The patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable(a)vger.kernel.org>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 0fb4a7ad270b3b209e510eb9dc5b07bf02b7edaf
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable(a)vger.kernel.org>' --in-reply-to '2024111112-follicle-scapegoat-c6bf@gregkh' --subject-prefix 'PATCH 5.10.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 0fb4a7ad270b3b209e510eb9dc5b07bf02b7edaf Mon Sep 17 00:00:00 2001
From: Lorenzo Stoakes <lorenzo.stoakes(a)oracle.com>
Date: Tue, 29 Oct 2024 18:11:46 +0000
Subject: [PATCH] mm: refactor map_deny_write_exec()
Refactor the map_deny_write_exec() to not unnecessarily require a VMA
parameter but rather to accept VMA flags parameters, which allows us to
use this function early in mmap_region() in a subsequent commit.
While we're here, we refactor the function to be more readable and add
some additional documentation.
Link: https://lkml.kernel.org/r/6be8bb59cd7c68006ebb006eb9d8dc27104b1f70.17302246…
Fixes: deb0f6562884 ("mm/mmap: undo ->mmap() when arch_validate_flags() fails")
Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes(a)oracle.com>
Reported-by: Jann Horn <jannh(a)google.com>
Reviewed-by: Liam R. Howlett <Liam.Howlett(a)oracle.com>
Reviewed-by: Vlastimil Babka <vbabka(a)suse.cz>
Reviewed-by: Jann Horn <jannh(a)google.com>
Cc: Andreas Larsson <andreas(a)gaisler.com>
Cc: Catalin Marinas <catalin.marinas(a)arm.com>
Cc: David S. Miller <davem(a)davemloft.net>
Cc: Helge Deller <deller(a)gmx.de>
Cc: James E.J. Bottomley <James.Bottomley(a)HansenPartnership.com>
Cc: Linus Torvalds <torvalds(a)linux-foundation.org>
Cc: Mark Brown <broonie(a)kernel.org>
Cc: Peter Xu <peterx(a)redhat.com>
Cc: Will Deacon <will(a)kernel.org>
Cc: <stable(a)vger.kernel.org>
Signed-off-by: Andrew Morton <akpm(a)linux-foundation.org>
diff --git a/include/linux/mman.h b/include/linux/mman.h
index bcb201ab7a41..8ddca62d6460 100644
--- a/include/linux/mman.h
+++ b/include/linux/mman.h
@@ -188,16 +188,31 @@ static inline bool arch_memory_deny_write_exec_supported(void)
*
* d) mmap(PROT_READ | PROT_EXEC)
* mmap(PROT_READ | PROT_EXEC | PROT_BTI)
+ *
+ * This is only applicable if the user has set the Memory-Deny-Write-Execute
+ * (MDWE) protection mask for the current process.
+ *
+ * @old specifies the VMA flags the VMA originally possessed, and @new the ones
+ * we propose to set.
+ *
+ * Return: false if proposed change is OK, true if not ok and should be denied.
*/
-static inline bool map_deny_write_exec(struct vm_area_struct *vma, unsigned long vm_flags)
+static inline bool map_deny_write_exec(unsigned long old, unsigned long new)
{
+ /* If MDWE is disabled, we have nothing to deny. */
if (!test_bit(MMF_HAS_MDWE, ¤t->mm->flags))
return false;
- if ((vm_flags & VM_EXEC) && (vm_flags & VM_WRITE))
+ /* If the new VMA is not executable, we have nothing to deny. */
+ if (!(new & VM_EXEC))
+ return false;
+
+ /* Under MDWE we do not accept newly writably executable VMAs... */
+ if (new & VM_WRITE)
return true;
- if (!(vma->vm_flags & VM_EXEC) && (vm_flags & VM_EXEC))
+ /* ...nor previously non-executable VMAs becoming executable. */
+ if (!(old & VM_EXEC))
return true;
return false;
diff --git a/mm/mmap.c b/mm/mmap.c
index ac0604f146f6..ab71d4c3464c 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1505,7 +1505,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
vma_set_anonymous(vma);
}
- if (map_deny_write_exec(vma, vma->vm_flags)) {
+ if (map_deny_write_exec(vma->vm_flags, vma->vm_flags)) {
error = -EACCES;
goto close_and_free_vma;
}
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 0c5d6d06107d..6f450af3252e 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -810,7 +810,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
break;
}
- if (map_deny_write_exec(vma, newflags)) {
+ if (map_deny_write_exec(vma->vm_flags, newflags)) {
error = -EACCES;
break;
}
diff --git a/mm/vma.h b/mm/vma.h
index 75558b5e9c8c..d58068c0ff2e 100644
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -42,7 +42,7 @@ struct vma_munmap_struct {
int vma_count; /* Number of vmas that will be removed */
bool unlock; /* Unlock after the munmap */
bool clear_ptes; /* If there are outstanding PTE to be cleared */
- /* 1 byte hole */
+ /* 2 byte hole */
unsigned long nr_pages; /* Number of pages being removed */
unsigned long locked_vm; /* Number of locked pages */
unsigned long nr_accounted; /* Number of VM_ACCOUNT pages */
Commit 18011eac28c7 ("arm64: tls: Avoid unconditional zeroing of
tpidrro_el0 for native tasks") tried to optimise the context switching
of tpidrro_el0 by eliding the clearing of the register when switching
to a native task with kpti enabled, on the erroneous assumption that
the kpti trampoline entry code would already have taken care of the
write.
Although the kpti trampoline does zero the register on entry from a
native task, the check in tls_thread_switch() is on the *next* task and
so we can end up leaving a stale, non-zero value in the register if the
previous task was 32-bit.
Drop the broken optimisation and zero tpidrro_el0 unconditionally when
switching to a native 64-bit task.
Cc: Mark Rutland <mark.rutland(a)arm.com>
Cc: <stable(a)vger.kernel.org>
Fixes: 18011eac28c7 ("arm64: tls: Avoid unconditional zeroing of tpidrro_el0 for native tasks")
Signed-off-by: Will Deacon <will(a)kernel.org>
---
You fix one side-channel and introduce another... :(
arch/arm64/kernel/process.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
index 3e7c8c8195c3..2bbcbb11d844 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
@@ -442,7 +442,7 @@ static void tls_thread_switch(struct task_struct *next)
if (is_compat_thread(task_thread_info(next)))
write_sysreg(next->thread.uw.tp_value, tpidrro_el0);
- else if (!arm64_kernel_unmapped_at_el0())
+ else
write_sysreg(0, tpidrro_el0);
write_sysreg(*task_user_tls(next), tpidr_el0);
--
2.47.0.277.g8800431eea-goog
When tb[IPSET_ATTR_IP_TO] is not present but tb[IPSET_ATTR_CIDR] exists,
the values of ip and ip_to are slightly swapped. Therefore, the range check
for ip should be done later, but this part is missing and it seems that the
vulnerability occurs.
So we should add missing range checks and remove unnecessary range checks.
Cc: <stable(a)vger.kernel.org>
Reported-by: syzbot+58c872f7790a4d2ac951(a)syzkaller.appspotmail.com
Fixes: 72205fc68bd1 ("netfilter: ipset: bitmap:ip set type support")
Signed-off-by: Jeongjun Park <aha310510(a)gmail.com>
---
net/netfilter/ipset/ip_set_bitmap_ip.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/net/netfilter/ipset/ip_set_bitmap_ip.c b/net/netfilter/ipset/ip_set_bitmap_ip.c
index e4fa00abde6a..5988b9bb9029 100644
--- a/net/netfilter/ipset/ip_set_bitmap_ip.c
+++ b/net/netfilter/ipset/ip_set_bitmap_ip.c
@@ -163,11 +163,8 @@ bitmap_ip_uadt(struct ip_set *set, struct nlattr *tb[],
ret = ip_set_get_hostipaddr4(tb[IPSET_ATTR_IP_TO], &ip_to);
if (ret)
return ret;
- if (ip > ip_to) {
+ if (ip > ip_to)
swap(ip, ip_to);
- if (ip < map->first_ip)
- return -IPSET_ERR_BITMAP_RANGE;
- }
} else if (tb[IPSET_ATTR_CIDR]) {
u8 cidr = nla_get_u8(tb[IPSET_ATTR_CIDR]);
@@ -178,7 +175,7 @@ bitmap_ip_uadt(struct ip_set *set, struct nlattr *tb[],
ip_to = ip;
}
- if (ip_to > map->last_ip)
+ if (ip < map->first_ip || ip_to > map->last_ip)
return -IPSET_ERR_BITMAP_RANGE;
for (; !before(ip_to, ip); ip += map->hosts) {
--
When bailing out due to group_priority_permit() failure, the queue_args
need to be freed. Fix it by rearranging the function to use the
goto-on-error pattern, such that the success case flows straight without
indentation while error cases jump forward to cleanup.
Cc: stable(a)vger.kernel.org
Fixes: 5f7762042f8a ("drm/panthor: Restrict high priorities on group_create")
Signed-off-by: Jann Horn <jannh(a)google.com>
---
testcase:
```
#include <err.h>
#include <fcntl.h>
#include <stddef.h>
#include <sys/ioctl.h>
#include <drm/panthor_drm.h>
#define SYSCHK(x) ({ \
typeof(x) __res = (x); \
if (__res == (typeof(x))-1) \
err(1, "SYSCHK(" #x ")"); \
__res; \
})
#define GPU_PATH "/dev/dri/by-path/platform-fb000000.gpu-card"
int main(void) {
int fd = SYSCHK(open(GPU_PATH, O_RDWR));
while (1) {
struct drm_panthor_queue_create qc[16] = {};
struct drm_panthor_group_create gc = {
.queues = {
.stride = sizeof(struct drm_panthor_queue_create),
.count = 16,
.array = (unsigned long)qc
},
.priority = PANTHOR_GROUP_PRIORITY_HIGH+1/*invalid*/
};
ioctl(fd, DRM_IOCTL_PANTHOR_GROUP_CREATE, &gc);
}
}
```
I have tested that without this patch, after running the testcase for a
few seconds and then manually killing it, 2G of RAM in kmalloc-128 have
been leaked. With the patch applied, the memory leak is gone.
(By the way, get_maintainer.pl suggests that I also send this patch to
the general DRM maintainers and the DRM-misc maintainers; looking at
MAINTAINERS, it looks like it is normal that the general DRM maintainers
are listed for everything under drivers/gpu/, but DRM-misc has exclusion
rules for a bunch of drivers but not panthor. I don't know if that is
intentional.)
---
drivers/gpu/drm/panthor/panthor_drv.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
index c520f156e2d73f7e735f8bf2d6d8e8efacec9362..815c23cff25f305d884e8e3e263fa22888f7d5ce 100644
--- a/drivers/gpu/drm/panthor/panthor_drv.c
+++ b/drivers/gpu/drm/panthor/panthor_drv.c
@@ -1032,14 +1032,15 @@ static int panthor_ioctl_group_create(struct drm_device *ddev, void *data,
ret = group_priority_permit(file, args->priority);
if (ret)
- return ret;
+ goto out;
ret = panthor_group_create(pfile, args, queue_args);
- if (ret >= 0) {
- args->group_handle = ret;
- ret = 0;
- }
+ if (ret < 0)
+ goto out;
+ args->group_handle = ret;
+ ret = 0;
+out:
kvfree(queue_args);
return ret;
}
---
base-commit: 9f8e716d46c68112484a23d1742d9ec725e082fc
change-id: 20241113-panthor-fix-gcq-bailout-2d9ac36590ed
--
Jann Horn <jannh(a)google.com>