Linux 5.15.110
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.110 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
------------
Documentation/riscv/vm-layout.rst | 2 Makefile | 2 arch/arm64/kvm/mmu.c | 47 +++----- arch/arm64/kvm/psci.c | 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 | 68 ++++++------ drivers/base/dd.c | 7 + drivers/gpu/drm/drm_fb_helper.c | 3 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 5 drivers/pci/pci.c | 3 drivers/pci/pci.h | 2 drivers/pci/pcie/aspm.c | 19 --- drivers/usb/serial/option.c | 6 + net/bluetooth/hci_sock.c | 9 + tools/testing/selftests/kselftest/runner.sh | 28 +++- tools/testing/selftests/net/mptcp/mptcp_join.sh | 2 18 files changed, 123 insertions(+), 104 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
Dan Carpenter (1):
KVM: arm64: Fix buffer overflow in kvm_arm_set_fw_reg()
Daniel Vetter (1):
drm/fb-helper: set x/yres_virtual in drm_fb_helper_check_var
David Matlack (1):
KVM: arm64: Retry fault if vma_lookup() results become invalid
Greg Kroah-Hartman (1):
Linux 5.15.110
Jisoo Jang (1):
wifi: brcmfmac: slab-out-of-bounds read in brcmf_get_assoc_ies()
Kai-Heng Feng (1):
PCI/ASPM: Remove pcie_aspm_pm_state_change()
Matthieu Baerts (1):
selftests: mptcp: join: fix "invalid address, ADD_ADDR timeout"
Ruihan Li (1):
bluetooth: Perform careful capability checks in hci_sock_ioctl()
SeongJae Park (1):
selftests/kselftest/runner/run_one(): allow running non-executable files
Stephen Boyd (1):
driver core: Don't require dynamic_debug for initcall_debug probe timing
Greg Kroah-Hartman
maintainerDocumentation/riscv/vm-layout.rst +1 -1
@@ -48,7 +48,7 @@ RISC-V Linux Kernel SV39 ____________________________________________________________|___________________________________________________________ | | | | ffffffc000000000 | -256 GB | ffffffc7ffffffff | 32 GB | kasan - ffffffcefee00000 | -196 GB | ffffffcefeffffff | 2 MB | fixmap + ffffffcefea00000 | -196 GB | ffffffcefeffffff | 6 MB | fixmap ffffffceff000000 | -196 GB | ffffffceffffffff | 16 MB | PCI io ffffffcf00000000 | -196 GB | ffffffcfffffffff | 4 GB | vmemmap ffffffd000000000 | -192 GB | ffffffdfffffffff | 64 GB | vmalloc/ioremap space
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 109 +SUBLEVEL = 110 EXTRAVERSION = NAME = Trick or Treat
arch/arm64/kvm/mmu.c +21 -26
63 lines not on this page · raw message
arch/arm64/kvm/psci.c +2 -0
@@ -508,6 +508,8 @@ int kvm_arm_set_fw_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)u64 val;int wa_level; +if (KVM_REG_SIZE (reg->id) !=sizeof (val)) +return -ENOENT ;if (copy_from_user (&val, uaddr,KVM_REG_SIZE (reg->id)))return -EFAULT ;
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_TEXT_POKE1 ,
arch/riscv/include/asm/pgtable.h +6 -2
@@ -66,9 +66,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
@@ -286,12 +286,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 -32
118 lines not on this page · raw message
drivers/base/dd.c +6 -1
@@ -690,7 +690,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/gpu/drm/drm_fb_helper.c +3 -0
@@ -1327,6 +1327,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/cfg80211.c +5 -0
@@ -5890,6 +5890,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/pci/pci.c +0 -3
@@ -1140,9 +1140,6 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)if (need_restore)pci_restore_bars (dev); -if (dev->bus->self) -pcie_aspm_pm_state_change (dev->bus->self); -return 0 ; }
drivers/pci/pci.h +0 -2
@@ -595,12 +595,10 @@ bool pcie_wait_for_link(struct pci_dev *pdev, bool active);#ifdef CONFIG_PCIEASPM void pcie_aspm_init_link_state (struct pci_dev *pdev);void pcie_aspm_exit_link_state (struct pci_dev *pdev); -void pcie_aspm_pm_state_change (struct pci_dev *pdev);void pcie_aspm_powersave_config_link (struct pci_dev *pdev);#else static inline void pcie_aspm_init_link_state (struct pci_dev *pdev) { }static inline void pcie_aspm_exit_link_state (struct pci_dev *pdev) { } -static inline void pcie_aspm_pm_state_change (struct pci_dev *pdev) { }static inline void pcie_aspm_powersave_config_link (struct pci_dev *pdev) { }#endif
drivers/pci/pcie/aspm.c +0 -19
@@ -1020,25 +1020,6 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev)up_read (&pci_bus_sem); } -/* @pdev: the root port or switch downstream port */ -void pcie_aspm_pm_state_change (struct pci_dev *pdev) -{ -struct pcie_link_state *link = pdev->link_state; - -if (aspm_disabled || !link) -return ; -/* -* Devices changed PM state, we should recheck if latency -* meets all functions' requirement -*/ -down_read (&pci_bus_sem); -mutex_lock (&aspm_lock); -pcie_update_aspm_capable (link->root); -pcie_config_aspm_path (link); -mutex_unlock (&aspm_lock); -up_read (&pci_bus_sem); -} -void pcie_aspm_powersave_config_link (struct pci_dev *pdev) {struct pcie_link_state *link = pdev->link_state;
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);
net/bluetooth/hci_sock.c +8 -1
@@ -996,7 +996,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 */
tools/testing/selftests/kselftest/runner.sh +18 -10
@@ -33,9 +33,9 @@ tap_timeout() { # Make sure tests will time out if utility is available. if [ -x /usr/bin/timeout ] ; then - /usr/bin/timeout --foreground "$kselftest_timeout" "$1" + /usr/bin/timeout --foreground "$kselftest_timeout" $1 else - "$1" + $1 fi }
@@ -65,17 +65,25 @@ run_one() TEST_HDR_MSG="selftests: $DIR: $BASENAME_TEST" echo "# $TEST_HDR_MSG" - if [ ! -x "$TEST" ]; then - echo -n "# Warning: file $TEST is " - if [ ! -e "$TEST" ]; then - echo "missing!" - else - echo "not executable, correct this." - fi + if [ ! -e "$TEST" ]; then + echo "# Warning: file $TEST is missing!" echo "not ok $test_num $TEST_HDR_MSG" else + cmd="./$BASENAME_TEST" + if [ ! -x "$TEST" ]; then + echo "# Warning: file $TEST is not executable" + + if [ $(head -n 1 "$TEST" | cut -c -2) = "#!" ] + then + interpreter=$(head -n 1 "$TEST" | cut -c 3-) + cmd="$interpreter ./$BASENAME_TEST" + else + echo "not ok $test_num $TEST_HDR_MSG" + return + fi + fi cd `dirname $TEST` > /dev/null - ((((( tap_timeout ./$BASENAME_TEST 2>&1; echo $? >&3) | + ((((( tap_timeout "$cmd" 2>&1; echo $? >&3) | tap_prefix >&4) 3>&1) | (read xs; exit $xs)) 4>>"$logfile" && echo "ok $test_num $TEST_HDR_MSG") ||
tools/testing/selftests/net/mptcp/mptcp_join.sh +1 -1
@@ -732,7 +732,7 @@ chk_add_nr() local dump_stats printf "%-39s %s" " " "add" - count=`ip netns exec $ns2 nstat -as | grep MPTcpExtAddAddr | awk '{print $2}'` + count=`ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddAddr | awk '{print $2}'` [ -z "$count" ] && count=0 if [ "$count" != "$add_nr" ]; then echo "[fail] got $count ADD_ADDR[s] expected $add_nr"