Linux 6.2.14
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.2.14 kernel.
All users of the 6.2 kernel series must upgrade.
The updated 6.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.2.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
------------
Documentation/riscv/vm-layout.rst | 6 Makefile | 2 arch/riscv/include/asm/fixmap.h | 8 arch/riscv/include/asm/pgtable.h | 8 arch/riscv/kernel/setup.c | 6 arch/riscv/mm/init.c | 82 +++----- arch/x86/Makefile.um | 11 + drivers/base/dd.c | 7 drivers/gpio/gpiolib-acpi.c | 13 + drivers/gpu/drm/drm_fb_helper.c | 3 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 9 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 drivers/usb/serial/option.c | 6 fs/btrfs/send.c | 2 fs/btrfs/volumes.c | 2 include/linux/mmc/sdio_ids.h | 5 kernel/rcu/tree.c | 27 +- mm/mempolicy.c | 115 +++++------- net/bluetooth/hci_sock.c | 9 19 files changed, 193 insertions(+), 133 deletions(-)
Alexandre Ghiti (3):
riscv: Move early dtb mapping into the fixmap region
riscv: Do not set initial_boot_params to the linear address of the dtb
riscv: No need to relocate the dtb as it lies in the fixmap region
Arınç ÜNAL (1):
USB: serial: option: add UNISOC vendor and TOZED LT70C product
Daniel Vetter (1):
drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var
David Gow (2):
rust: arch/um: Disable FP/SIMD instruction to match x86
um: Only disable SSE on clang to work around old GCC bugs
Genjian Zhang (1):
btrfs: fix uninitialized variable warnings
Greg Kroah-Hartman (1):
Linux 6.2.14
Jisoo Jang (1):
wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies()
Liam R. Howlett (1):
mm/mempolicy: fix use-after-free of VMA iterator
Marek Vasut (1):
wifi: brcmfmac: add Cypress 43439 SDIO ids
Ruihan Li (1):
bluetooth: Perform careful capability checks in hci_sock_ioctl()
Stephen Boyd (1):
driver core: Don't require dynamic_debug for initcall_debug probe timing
Werner Sembach (1):
gpiolib: acpi: Add a ignore wakeup quirk for Clevo NL5xNU
Ziwei Dai (1):
rcu/kvfree: Avoid freeing new kfree_rcu() memory after old grace period
Greg Kroah-Hartman
maintainerDocumentation/riscv/vm-layout.rst +3 -3
@@ -47,7 +47,7 @@ RISC-V Linux Kernel SV39 | Kernel-space virtual memory, shared between all processes: ____________________________________________________________|___________________________________________________________ | | | | - ffffffc6fee00000 | -228 GB | ffffffc6feffffff | 2 MB | fixmap + ffffffc6fea00000 | -228 GB | ffffffc6feffffff | 6 MB | fixmap ffffffc6ff000000 | -228 GB | ffffffc6ffffffff | 16 MB | PCI io ffffffc700000000 | -228 GB | ffffffc7ffffffff | 4 GB | vmemmap ffffffc800000000 | -224 GB | ffffffd7ffffffff | 64 GB | vmalloc/ioremap space
@@ -83,7 +83,7 @@ RISC-V Linux Kernel SV48 | Kernel-space virtual memory, shared between all processes: ____________________________________________________________|___________________________________________________________ | | | | - ffff8d7ffee00000 | -114.5 TB | ffff8d7ffeffffff | 2 MB | fixmap + ffff8d7ffea00000 | -114.5 TB | ffff8d7ffeffffff | 6 MB | fixmap ffff8d7fff000000 | -114.5 TB | ffff8d7fffffffff | 16 MB | PCI io ffff8d8000000000 | -114.5 TB | ffff8f7fffffffff | 2 TB | vmemmap ffff8f8000000000 | -112.5 TB | ffffaf7fffffffff | 32 TB | vmalloc/ioremap space
@@ -119,7 +119,7 @@ RISC-V Linux Kernel SV57 | Kernel-space virtual memory, shared between all processes: ____________________________________________________________|___________________________________________________________ | | | | - ff1bfffffee00000 | -57 PB | ff1bfffffeffffff | 2 MB | fixmap + ff1bfffffea00000 | -57 PB | ff1bfffffeffffff | 6 MB | fixmap ff1bffffff000000 | -57 PB | ff1bffffffffffff | 16 MB | PCI io ff1c000000000000 | -57 PB | ff1fffffffffffff | 1 PB | vmemmap ff20000000000000 | -56 PB | ff5fffffffffffff | 16 PB | vmalloc/ioremap space
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 2 -SUBLEVEL = 13 +SUBLEVEL = 14 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/riscv/include/asm/fixmap.h +8 -0
@@ -22,6 +22,14 @@*/ enum fixed_addresses {FIX_HOLE , +/* +* The fdt fixmap mapping must be PMD aligned and will be mapped +* using PMD entries in fixmap_pmd in 64-bit and a PGD entry in 32-bit. +*/ +FIX_FDT_END , +FIX_FDT =FIX_FDT_END +FIX_FDT_SIZE /PAGE_SIZE -1 , + +/* Below fixmaps will be mapped using fixmap_pte */ FIX_PTE ,FIX_PMD ,FIX_PUD ,
arch/riscv/include/asm/pgtable.h +6 -2
@@ -87,9 +87,13 @@#define FIXADDR_TOP PCI_IO_START#ifdef CONFIG_64BIT -#define FIXADDR_SIZE PMD_SIZE +#define MAX_FDT_SIZE PMD_SIZE +#define FIX_FDT_SIZE (MAX_FDT_SIZE + SZ_2M) +#define FIXADDR_SIZE (PMD_SIZE + FIX_FDT_SIZE)#else -#define FIXADDR_SIZE PGDIR_SIZE +#define MAX_FDT_SIZE PGDIR_SIZE +#define FIX_FDT_SIZE MAX_FDT_SIZE +#define FIXADDR_SIZE (PGDIR_SIZE + FIX_FDT_SIZE)#endif #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
arch/riscv/kernel/setup.c +1 -5
@@ -278,12 +278,8 @@ void __init setup_arch(char **cmdline_p)#if IS_ENABLED (CONFIG_BUILTIN_DTB )unflatten_and_copy_device_tree ();#else -if (early_init_dt_verify (__va (XIP_FIXUP (dtb_early_pa)))) -unflatten_device_tree (); -else -pr_err ("No DTB found in kernel mappings\n" ); +unflatten_device_tree ();#endif -early_init_fdt_scan_reserved_mem ();misc_mem_init ();init_resources ();
arch/riscv/mm/init.c +36 -46
144 lines not on this page · raw message
arch/x86/Makefile.um +11 -0
@@ -1,6 +1,17 @@ # SPDX-License-Identifier: GPL-2.0 core-y += arch/x86/crypto/ +# +# Disable SSE and other FP/SIMD instructions to match normal x86 +# This is required to work around issues in older LLVM versions, but breaks +# GCC versions < 11. See: +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99652 +# +ifeq ($(CONFIG_CC_IS_CLANG),y) +KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx +KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2 +endif + ifeq ($(CONFIG_X86_32),y) START := 0x8048000
drivers/base/dd.c +6 -1
@@ -718,7 +718,12 @@ static int really_probe_debug(struct device *dev, struct device_driver *drv) calltime =ktime_get (); ret =really_probe (dev, drv); rettime =ktime_get (); -pr_debug ("probe of %s returned %d after %lld usecs\n" , +/* +* Don't change this to pr_debug() because that requires +* CONFIG_DYNAMIC_DEBUG and we want a simple 'initcall_debug' on the +* kernel commandline to print this all the time at the debug level. +*/ +printk (KERN_DEBUG "probe of %s returned %d after %lld usecs\n" ,dev_name (dev), ret,ktime_us_delta (rettime, calltime));return ret; }
drivers/gpio/gpiolib-acpi.c +13 -0
@@ -1627,6 +1627,19 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_interrupt = "AMDI0030:00@18", }, }, + { +/* +* Spurious wakeups from TP_ATTN# pin +* Found in BIOS 1.7.8 +* https://gitlab.freedesktop.org/drm/amd/-/issues/1722#note_1720627 +*/ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "NL5xNU"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk ) { + .ignore_wake ="ELAN0415:00@9" , + }, + }, {/* * Spurious wakeups from TP_ATTN# pin
drivers/gpu/drm/drm_fb_helper.c +3 -0
@@ -1558,6 +1558,9 @@ int drm_fb_helper_check_var(struct fb_var_screeninfo *var,return -EINVAL ; } + var->xres_virtual = fb->width; + var->yres_virtual = fb->height; +/* * Workaround for SDL 1.2, which is known to be setting all pixel format * fields values to zero in some cases. We treat this situation as a
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +8 -1
@@ -965,6 +965,12 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev) .driver_data = BRCMF_FWVENDOR_ ## fw_vend \ } +#define CYW_SDIO_DEVICE (dev_id, fw_vend) \ + { \ + SDIO_DEVICE(SDIO_VENDOR_ID_CYPRESS, dev_id), \ + .driver_data = BRCMF_FWVENDOR_ ## fw_vend \ + } +/* devices we support, null terminated */ static const struct sdio_device_id brcmf_sdmmc_ids[] = {BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_43143 ,WCC ),
@@ -979,6 +985,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_4335_4339 ,WCC ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_4339 ,WCC ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_43430 ,WCC ), +BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_43439 ,WCC ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_4345 ,WCC ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_43455 ,WCC ), BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
@@ -986,9 +993,9 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_4359 ,WCC ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373 ,CYW ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012 ,CYW ), -BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 ,CYW ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 ,CYW ),BRCMF_SDIO_DEVICE (SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359 ,CYW ), + CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW), { /* end: all zeroes */ } };MODULE_DEVICE_TABLE (sdio, brcmf_sdmmc_ids);
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +5 -0
@@ -6164,6 +6164,11 @@ static s32 brcmf_get_assoc_ies(struct brcmf_cfg80211_info *cfg, (struct brcmf_cfg80211_assoc_ielen_le *)cfg->extra_buf; req_len =le32_to_cpu (assoc_info->req_len); resp_len =le32_to_cpu (assoc_info->resp_len); +if (req_len >WL_EXTRA_BUF_MAX || resp_len >WL_EXTRA_BUF_MAX ) { +bphy_err (drvr,"invalid lengths in assoc info: req %u resp %u\n" , + req_len, resp_len); +return -EINVAL ; + }if (req_len) { err = brcmf_fil_iovar_data_get(ifp, "assoc_req_ies", cfg->extra_buf,
drivers/usb/serial/option.c +6 -0
@@ -595,6 +595,11 @@ static void option_instat_callback(struct urb *urb);#define SIERRA_VENDOR_ID 0x1199#define SIERRA_PRODUCT_EM9191 0x90d3 +/* UNISOC (Spreadtrum) products */ +#define UNISOC_VENDOR_ID 0x1782 +/* TOZED LT70-C based on UNISOC SL8563 uses UNISOC's vendor ID */ +#define TOZED_PRODUCT_LT70C 0x4055 +/* Device flags */ /* Highest interface number which can be used with NCTRL() and RSVD() */
@@ -2225,6 +2230,7 @@ static const struct usb_device_id option_ids[] = { { USB_DEVICE_AND_INTERFACE_INFO(OPPO_VENDOR_ID, OPPO_PRODUCT_R11, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0xff, 0x30) }, { USB_DEVICE_AND_INTERFACE_INFO(SIERRA_VENDOR_ID, SIERRA_PRODUCT_EM9191, 0xff, 0, 0) }, + { USB_DEVICE_AND_INTERFACE_INFO(UNISOC_VENDOR_ID, TOZED_PRODUCT_LT70C, 0xff, 0, 0) }, { } /* Terminating entry */ };MODULE_DEVICE_TABLE (usb, option_ids);
fs/btrfs/send.c +1 -1
@@ -1892,7 +1892,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen)int left_ret;int right_ret;u64 left_gen; -u64 right_gen; +u64 right_gen =0 ;struct btrfs_inode_info info; ret =get_inode_info (sctx->send_root, ino, &info);
fs/btrfs/volumes.c +1 -1
@@ -2618,7 +2618,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_pathstruct block_device *bdev;struct super_block *sb = fs_info->sb;struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; -struct btrfs_fs_devices *seed_devices; +struct btrfs_fs_devices *seed_devices =NULL ;u64 orig_super_total_bytes;u64 orig_super_num_devices;int ret =0 ;
include/linux/mmc/sdio_ids.h +4 -1
@@ -74,10 +74,13 @@#define SDIO_DEVICE_ID_BROADCOM_43362 0xa962#define SDIO_DEVICE_ID_BROADCOM_43364 0xa9a4#define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6 -#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xa9af +#define SDIO_DEVICE_ID_BROADCOM_43439 0xa9af#define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8 +#define SDIO_VENDOR_ID_CYPRESS 0x04b4 +#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xbd3d +#define SDIO_VENDOR_ID_MARVELL 0x02df#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103#define SDIO_DEVICE_ID_MARVELL_8688_WLAN 0x9104
kernel/rcu/tree.c +19 -8
@@ -3131,6 +3131,18 @@ need_offload_krc(struct kfree_rcu_cpu *krcp)return !!krcp->head; } +static bool +need_wait_for_krwp_work (struct kfree_rcu_cpu_work *krwp) +{ +int i; + +for (i =0 ; i <FREE_N_CHANNELS ; i++) +if (krwp->bkvhead_free[i]) +return true; + +return !!krwp->head_free; +} +static void schedule_delayed_monitor_work (struct kfree_rcu_cpu *krcp) {
@@ -3162,14 +3174,13 @@ static void kfree_rcu_monitor(struct work_struct *work)for (i =0 ; i <KFREE_N_BATCHES ; i++) {struct kfree_rcu_cpu_work *krwp = &(krcp->krw_arr[i]); -// Try to detach bkvhead or head and attach it over any -// available corresponding free channel. It can be that -// a previous RCU batch is in progress, it means that -// immediately to queue another one is not possible so -// in that case the monitor work is rearmed. -if ((krcp->bkvhead[0 ] && !krwp->bkvhead_free[0 ]) || - (krcp->bkvhead[1 ] && !krwp->bkvhead_free[1 ]) || - (krcp->head && !krwp->head_free)) { +// Try to detach bulk_head or head and attach it, only when +// all channels are free. Any channel is not free means at krwp +// there is on-going rcu work to handle krwp's free business. +if (need_wait_for_krwp_work (krwp)) +continue ; + +if (need_offload_krc (krcp)) {// Channel 1 corresponds to the SLAB-pointer bulk path. // Channel 2 corresponds to vmalloc-pointer bulk path. for (j =0 ; j <FREE_N_CHANNELS ; j++) {
mm/mempolicy.c +53 -62
162 lines not on this page · raw message
net/bluetooth/hci_sock.c +8 -1
@@ -1003,7 +1003,14 @@ static int hci_sock_ioctl(struct socket *sock, unsigned int cmd,if (hci_sock_gen_cookie (sk)) {struct sk_buff *skb; -if (capable (CAP_NET_ADMIN )) +/* Perform careful checks before setting the HCI_SOCK_TRUSTED +* flag. Make sure that not only the current task but also +* the socket opener has the required capability, since +* privileged programs can be tricked into making ioctl calls +* on HCI sockets, and the socket should not be marked as +* trusted simply because the ioctl caller is privileged. +*/ +if (sk_capable (sk,CAP_NET_ADMIN ))hci_sock_set_flag (sk,HCI_SOCK_TRUSTED );/* Send event to monitor */