Linux 5.10.35
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 34 +SUBLEVEL = 35 EXTRAVERSION = NAME = Dare mighty things
arch/mips/include/asm/vdso/gettimeofday.h +21 -5
@@ -20,6 +20,12 @@#define VDSO_HAS_CLOCK_GETRES 1 +#if MIPS_ISA_REV <6 +#define VDSO_SYSCALL_CLOBBERS "hi", "lo", +#else +#define VDSO_SYSCALL_CLOBBERS +#endif +static __always_inline long gettimeofday_fallback (struct __kernel_old_timeval *_tv,struct timezone *_tz)
@@ -35,7 +41,9 @@ static __always_inline long gettimeofday_fallback( : "=r" (ret), "=r" (error) : "r" (tv), "r" (tz), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -59,7 +67,9 @@ static __always_inline long clock_gettime_fallback( : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -83,7 +93,9 @@ static __always_inline int clock_getres_fallback( : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -105,7 +117,9 @@ static __always_inline long clock_gettime32_fallback( : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
@@ -125,7 +139,9 @@ static __always_inline int clock_getres32_fallback( : "=r" (ret), "=r" (error) : "r" (clkid), "r" (ts), "r" (nr) : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", - "$14", "$15", "$24", "$25", "hi", "lo", "memory"); +"$14" ,"$15" ,"$24" ,"$25" , +VDSO_SYSCALL_CLOBBERS + "memory");return error ? -ret : ret; }
drivers/net/ethernet/intel/igb/igb_main.c +1 -2
@@ -4482,8 +4482,7 @@ static void igb_setup_mrqc(struct igb_adapter *adapter)else mrqc |=E1000_MRQC_ENABLE_VMDQ ; }else { -if (hw->mac.type != e1000_i211) - mrqc |=E1000_MRQC_ENABLE_RSS_MQ ; + mrqc |=E1000_MRQC_ENABLE_RSS_MQ ; }igb_vmm_control (adapter);
drivers/net/usb/ax88179_178a.c +4 -2
@@ -296,12 +296,12 @@ static int ax88179_read_cmd(struct usbnet *dev, u8 cmd, u16 value, u16 index,int ret;if (2 == size) { -u16 buf; +u16 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le16_to_cpus (&buf); *((u16 *)data) = buf; }else if (4 == size) { -u32 buf; +u32 buf =0 ; ret =__ax88179_read_cmd (dev, cmd, value, index, size, &buf,0 );le32_to_cpus (&buf); *((u32 *)data) = buf;
@@ -1296,6 +1296,8 @@ static void ax88179_get_mac_addr(struct usbnet *dev) {u8 mac[ETH_ALEN ]; +memset (mac,0 ,sizeof (mac)); +/* Maybe the boot loader passed the MAC address via device tree */ if (!eth_platform_get_mac_address (&dev->udev->dev, mac)) { netif_dbg(dev, ifup, dev->net,
drivers/nvme/host/pci.c +1 -0
@@ -2634,6 +2634,7 @@ static void nvme_reset_work(struct work_struct *work)* Don't limit the IOMMU merged segment size. */ dma_set_max_seg_size (dev->dev,0xffffffff ); +dma_set_min_align_mask (dev->dev,NVME_CTRL_PAGE_SIZE -1 );mutex_unlock (&dev->shutdown_lock);
drivers/platform/x86/thinkpad_acpi.c +22 -9
@@ -6258,6 +6258,7 @@ enum thermal_access_mode {enum {/* TPACPI_THERMAL_TPEC_* */ TP_EC_THERMAL_TMP0 =0x78 ,/* ACPI EC regs TMP 0..7 */ TP_EC_THERMAL_TMP8 =0xC0 ,/* ACPI EC regs TMP 8..15 */ +TP_EC_FUNCREV =0xEF ,/* ACPI EC Functional revision */ TP_EC_THERMAL_TMP_NA =-128 ,/* ACPI EC sensor not available */ TPACPI_THERMAL_SENSOR_NA =-128000 ,/* Sensor not available */
@@ -6456,7 +6457,7 @@ static const struct attribute_group thermal_temp_input8_group = {static int __init thermal_init (struct ibm_init_struct *iibm) { -u8 t, ta1, ta2; +u8 t, ta1, ta2, ver =0 ;int i;int acpi_tmp7;int res;
@@ -6471,7 +6472,14 @@ static int __init thermal_init(struct ibm_init_struct *iibm)* 0x78-0x7F, 0xC0-0xC7. Registers return 0x00 for * non-implemented, thermal sensors return 0x80 when * not available +* The above rule is unfortunately flawed. This has been seen with +* 0xC2 (power supply ID) causing thermal control problems. +* The EC version can be determined by offset 0xEF and at least for +* version 3 the Lenovo firmware team confirmed that registers 0xC0-0xC7 +* are not thermal registers. */ +if (!acpi_ec_read (TP_EC_FUNCREV , &ver)) +pr_warn ("Thinkpad ACPI EC unable to access EC version\n" ); ta1 = ta2 =0 ;for (i =0 ; i <8 ; i++) {
@@ -6481,11 +6489,13 @@ static int __init thermal_init(struct ibm_init_struct *iibm) ta1 =0 ;break ; } -if (acpi_ec_read (TP_EC_THERMAL_TMP8 + i, &t)) { - ta2 |= t; - }else { - ta1 =0 ; -break ; +if (ver <3 ) { +if (acpi_ec_read (TP_EC_THERMAL_TMP8 + i, &t)) { + ta2 |= t; + }else { + ta1 =0 ; +break ; + } } }if (ta1 ==0 ) {
@@ -6498,9 +6508,12 @@ static int __init thermal_init(struct ibm_init_struct *iibm) thermal_read_mode =TPACPI_THERMAL_NONE ; } }else { - thermal_read_mode = - (ta2 !=0 ) ? -TPACPI_THERMAL_TPEC_16 :TPACPI_THERMAL_TPEC_8 ; +if (ver >=3 ) + thermal_read_mode =TPACPI_THERMAL_TPEC_8 ; +else + thermal_read_mode = + (ta2 !=0 ) ? +TPACPI_THERMAL_TPEC_16 :TPACPI_THERMAL_TPEC_8 ; } }else if (acpi_tmp7) { if (tpacpi_is_ibm() &&
drivers/usb/core/quirks.c +4 -0
@@ -406,6 +406,7 @@ static const struct usb_device_id usb_quirk_list[] = {/* Realtek hub in Dell WD19 (Type-C) */ { USB_DEVICE(0x0bda, 0x0487), .driver_info = USB_QUIRK_NO_LPM }, + { USB_DEVICE(0x0bda, 0x5487), .driver_info = USB_QUIRK_RESET_RESUME }, /* Generic RTL8153 based ethernet adapters */ { USB_DEVICE(0x0bda, 0x8153), .driver_info = USB_QUIRK_NO_LPM },
@@ -438,6 +439,9 @@ static const struct usb_device_id usb_quirk_list[] = { { USB_DEVICE(0x17ef, 0xa012), .driver_info = USB_QUIRK_DISCONNECT_SUSPEND }, + /* Lenovo ThinkPad USB-C Dock Gen2 Ethernet (RTL8153 GigE) */ + { USB_DEVICE(0x17ef, 0xa387), .driver_info = USB_QUIRK_NO_LPM }, + /* BUILDWIN Photo Frame */ { USB_DEVICE(0x1908, 0x1315), .driver_info = USB_QUIRK_HONOR_BNUMINTERFACES },
drivers/vfio/Kconfig +1 -1
@@ -22,7 +22,7 @@ config VFIO_VIRQFD menuconfig VFIO tristate "VFIO Non-Privileged userspace driver framework" select IOMMU_API - select VFIO_IOMMU_TYPE1 if (X86 || S390 || ARM || ARM64) + select VFIO_IOMMU_TYPE1 if MMU && (X86 || S390 || ARM || ARM64) help VFIO provides a framework for secure userspace device drivers. See Documentation/driver-api/vfio.rst for more details.
fs/overlayfs/namei.c +1 -0
@@ -913,6 +913,7 @@ struct dentry *ovl_lookup(struct inode *dir, struct dentry *dentry,continue ;if ((uppermetacopy || d.metacopy) && !ofs->config.metacopy) { +dput (this); err = -EPERM ;pr_warn_ratelimited ("refusing to follow metacopy origin for (%pd2)\n" , dentry); goto out_put;
fs/overlayfs/super.c +7 -5
@@ -1759,7 +1759,8 @@ static struct ovl_entry *ovl_get_lowerstack(struct super_block *sb,* - upper/work dir of any overlayfs instance */ static int ovl_check_layer (struct super_block *sb,struct ovl_fs *ofs, -struct dentry *dentry,const char *name) +struct dentry *dentry,const char *name, +bool is_lower) {struct dentry *next = dentry, *parent;int err =0 ;
@@ -1771,7 +1772,7 @@ static int ovl_check_layer(struct super_block *sb, struct ovl_fs *ofs,/* Walk back ancestors to root (inclusive) looking for traps */ while (!err && parent != next) { -if (ovl_lookup_trap_inode (sb, parent)) { +if (is_lower &&ovl_lookup_trap_inode (sb, parent)) { err = -ELOOP ;pr_err ("overlapping %s path\n" , name); }else if (ovl_is_inuse (parent)) {
@@ -1797,7 +1798,7 @@ static int ovl_check_overlapping_layers(struct super_block *sb,if (ovl_upper_mnt (ofs)) { err =ovl_check_layer (sb, ofs,ovl_upper_mnt (ofs)->mnt_root, -"upperdir" ); +"upperdir" , false);if (err)return err;
@@ -1808,7 +1809,8 @@ static int ovl_check_overlapping_layers(struct super_block *sb,* workbasedir. In that case, we already have their traps in * inode cache and we will catch that case on lookup. */ - err =ovl_check_layer (sb, ofs, ofs->workbasedir,"workdir" ); + err =ovl_check_layer (sb, ofs, ofs->workbasedir,"workdir" , + false);if (err)return err; }
@@ -1816,7 +1818,7 @@ static int ovl_check_overlapping_layers(struct super_block *sb,for (i =1 ; i < ofs->numlayer; i++) { err =ovl_check_layer (sb, ofs, ofs->layers[i].mnt->mnt_root, -"lowerdir" ); +"lowerdir" , true);if (err)return err; }
include/linux/bpf_verifier.h +3 -2
@@ -291,10 +291,11 @@ struct bpf_verifier_state_list { };/* Possible states for alu_state member. */ -#define BPF_ALU_SANITIZE_SRC 1U -#define BPF_ALU_SANITIZE_DST 2U +#define BPF_ALU_SANITIZE_SRC (1U << 0) +#define BPF_ALU_SANITIZE_DST (1U << 1)#define BPF_ALU_NEG_VALUE (1U << 2)#define BPF_ALU_NON_POINTER (1U << 3) +#define BPF_ALU_IMMEDIATE (1U << 4)#define BPF_ALU_SANITIZE (BPF_ALU_SANITIZE_SRC | \ BPF_ALU_SANITIZE_DST)
include/linux/device.h +1 -0
@@ -291,6 +291,7 @@ struct device_dma_parameters {* sg limitations. */ unsigned int max_segment_size; +unsigned int min_align_mask;unsigned long segment_boundary_mask; };
include/linux/dma-mapping.h +16 -0
@@ -500,6 +500,22 @@ static inline int dma_set_seg_boundary(struct device *dev, unsigned long mask)return -EIO ; } +static inline unsigned int dma_get_min_align_mask (struct device *dev) +{ +if (dev->dma_parms) +return dev->dma_parms->min_align_mask; +return 0 ; +} + +static inline int dma_set_min_align_mask (struct device *dev, +unsigned int min_align_mask) +{ +if (WARN_ON_ONCE (!dev->dma_parms)) +return -EIO ; + dev->dma_parms->min_align_mask = min_align_mask; +return 0 ; +} +static inline int dma_get_cache_alignment (void ) {#ifdef ARCH_DMA_MINALIGN
include/linux/swiotlb.h +1 -0
@@ -29,6 +29,7 @@ enum swiotlb_force {* controllable. */ #define IO_TLB_SHIFT 11 +#define IO_TLB_SIZE (1 << IO_TLB_SHIFT)extern void swiotlb_init (int verbose);int swiotlb_init_with_tbl (char *tlb,unsigned long nslabs,int verbose);
include/linux/user_namespace.h +3 -0
@@ -64,6 +64,9 @@ struct user_namespace {kgid_t group;struct ns_common ns;unsigned long flags; +/* parent_could_setfcap: true if the creator if this ns had CAP_SETFCAP +* in its effective capability set at the child ns creation time. */ +bool parent_could_setfcap;#ifdef CONFIG_KEYS /* List of joinable keyrings in this namespace. Modification access of
include/uapi/linux/capability.h +2 -1
@@ -335,7 +335,8 @@ struct vfs_ns_cap_data {#define CAP_AUDIT_CONTROL 30 -/* Set or remove capabilities on files */ +/* Set or remove capabilities on files. +Map uid=0 into a child user namespace. */ #define CAP_SETFCAP 31
kernel/bpf/verifier.c +18 -15
@@ -5755,6 +5755,7 @@ static int sanitize_ptr_alu(struct bpf_verifier_env *env, {struct bpf_insn_aux_data *aux = commit_window ?cur_aux (env) : tmp_aux;struct bpf_verifier_state *vstate = env->cur_state; +bool off_is_imm =tnum_is_const (off_reg->var_off);bool off_is_neg = off_reg->smin_value <0 ;bool ptr_is_dst_reg = ptr_reg == dst_reg;u8 opcode =BPF_OP (insn->code);
@@ -5785,6 +5786,7 @@ static int sanitize_ptr_alu(struct bpf_verifier_env *env, alu_limit =abs (tmp_aux->alu_limit - alu_limit); }else { alu_state = off_is_neg ?BPF_ALU_NEG_VALUE :0 ; + alu_state |= off_is_imm ?BPF_ALU_IMMEDIATE :0 ; alu_state |= ptr_is_dst_reg ?BPF_ALU_SANITIZE_SRC :BPF_ALU_SANITIZE_DST ; }
@@ -11383,7 +11385,7 @@ static int fixup_bpf_calls(struct bpf_verifier_env *env)const u8 code_sub =BPF_ALU64 |BPF_SUB |BPF_X ;struct bpf_insn insn_buf[16 ];struct bpf_insn *patch = &insn_buf[0 ]; -bool issrc, isneg; +bool issrc, isneg, isimm;u32 off_reg; aux = &env->insn_aux_data[i + delta];
@@ -11394,28 +11396,29 @@ static int fixup_bpf_calls(struct bpf_verifier_env *env) isneg = aux->alu_state &BPF_ALU_NEG_VALUE ; issrc = (aux->alu_state &BPF_ALU_SANITIZE ) ==BPF_ALU_SANITIZE_SRC ; + isimm = aux->alu_state &BPF_ALU_IMMEDIATE ; off_reg = issrc ? insn->src_reg : insn->dst_reg; -if (isneg) - *patch++ =BPF_ALU64_IMM (BPF_MUL , off_reg,-1 ); - *patch++ =BPF_MOV32_IMM (BPF_REG_AX , aux->alu_limit); - *patch++ =BPF_ALU64_REG (BPF_SUB ,BPF_REG_AX , off_reg); - *patch++ =BPF_ALU64_REG (BPF_OR ,BPF_REG_AX , off_reg); - *patch++ =BPF_ALU64_IMM (BPF_NEG ,BPF_REG_AX ,0 ); - *patch++ =BPF_ALU64_IMM (BPF_ARSH ,BPF_REG_AX ,63 ); -if (issrc) { - *patch++ =BPF_ALU64_REG (BPF_AND ,BPF_REG_AX , - off_reg); - insn->src_reg =BPF_REG_AX ; +if (isimm) { + *patch++ =BPF_MOV32_IMM (BPF_REG_AX , aux->alu_limit); }else { - *patch++ =BPF_ALU64_REG (BPF_AND , off_reg, -BPF_REG_AX ); +if (isneg) + *patch++ =BPF_ALU64_IMM (BPF_MUL , off_reg,-1 ); + *patch++ =BPF_MOV32_IMM (BPF_REG_AX , aux->alu_limit); + *patch++ =BPF_ALU64_REG (BPF_SUB ,BPF_REG_AX , off_reg); + *patch++ =BPF_ALU64_REG (BPF_OR ,BPF_REG_AX , off_reg); + *patch++ =BPF_ALU64_IMM (BPF_NEG ,BPF_REG_AX ,0 ); + *patch++ =BPF_ALU64_IMM (BPF_ARSH ,BPF_REG_AX ,63 ); + *patch++ =BPF_ALU64_REG (BPF_AND ,BPF_REG_AX , off_reg); } +if (!issrc) + *patch++ =BPF_MOV64_REG (insn->dst_reg, insn->src_reg); + insn->src_reg =BPF_REG_AX ;if (isneg) insn->code = insn->code == code_add ? code_sub : code_add; *patch++ = *insn; -if (issrc && isneg) +if (issrc && isneg && !isimm) *patch++ =BPF_ALU64_IMM (BPF_MUL , off_reg,-1 ); cnt = patch - insn_buf;
kernel/dma/swiotlb.c +145 -114
353 lines not on this page · raw message
kernel/events/core.c +6 -6
@@ -11705,12 +11705,12 @@ SYSCALL_DEFINE5(perf_event_open,return err; } - err =security_locked_down (LOCKDOWN_PERF ); -if (err && (attr.sample_type &PERF_SAMPLE_REGS_INTR )) -/* REGS_INTR can leak data, lockdown must prevent this */ -return err; - - err =0 ; +/* REGS_INTR can leak data, lockdown must prevent this */ +if (attr.sample_type &PERF_SAMPLE_REGS_INTR ) { + err =security_locked_down (LOCKDOWN_PERF ); +if (err) +return err; + }/* * In cgroup mode, the pid argument is used to pass the fd
kernel/user_namespace.c +62 -3
101 lines not on this page · raw message
net/netfilter/nf_conntrack_standalone.c +2 -8
@@ -1060,16 +1060,10 @@ static int nf_conntrack_standalone_init_sysctl(struct net *net)nf_conntrack_standalone_init_dccp_sysctl (net, table);nf_conntrack_standalone_init_gre_sysctl (net, table); -/* Don't allow unprivileged users to alter certain sysctls */ -if (net->user_ns != &init_user_ns) { +/* Don't allow non-init_net ns to alter global sysctls */ +if (!net_eq (&init_net, net)) { table[NF_SYSCTL_CT_MAX ].mode =0444 ; table[NF_SYSCTL_CT_EXPECT_MAX ].mode =0444 ; - table[NF_SYSCTL_CT_HELPER ].mode =0444 ; -#ifdef CONFIG_NF_CONNTRACK_EVENTS - table[NF_SYSCTL_CT_EVENTS ].mode =0444 ; -#endif - table[NF_SYSCTL_CT_BUCKETS ].mode =0444 ; - }else if (!net_eq (&init_net, net)) { table[NF_SYSCTL_CT_BUCKETS ].mode =0444 ; }
net/qrtr/mhi.c +5 -3
@@ -50,6 +50,9 @@ static int qcom_mhi_qrtr_send(struct qrtr_endpoint *ep, struct sk_buff *skb) struct qrtr_mhi_dev *qdev = container_of(ep, struct qrtr_mhi_dev, ep);int rc; +if (skb->sk) +sock_hold (skb->sk); + rc =skb_linearize (skb);if (rc) goto free_skb;
@@ -59,12 +62,11 @@ static int qcom_mhi_qrtr_send(struct qrtr_endpoint *ep, struct sk_buff *skb)if (rc) goto free_skb; -if (skb->sk) -sock_hold (skb->sk); -return rc; free_skb: +if (skb->sk) +sock_put (skb->sk);kfree_skb (skb);return rc;
sound/usb/quirks-table.h +10 -0
@@ -2376,6 +2376,16 @@ YAMAHA_DEVICE(0x7010, "UB99"), } }, +{ + USB_DEVICE_VENDOR_SPEC(0x0944, 0x0204), + .driver_info = (unsigned long ) & (const struct snd_usb_audio_quirk ) { + .vendor_name ="KORG, Inc." , +/* .product_name = "ToneLab EX", */ + .ifnum =3 , + .type =QUIRK_MIDI_STANDARD_INTERFACE , + } +}, +/* AKAI devices */ { USB_DEVICE(0x09e8, 0x0062),
tools/cgroup/memcg_slabinfo.py +4 -4
@@ -128,9 +128,9 @@ def detect_kernel_config(): cfg['nr_nodes'] = prog['nr_online_nodes'].value_() - if prog.type('struct kmem_cache').members[1][1] == 'flags': + if prog.type('struct kmem_cache').members[1].name == 'flags': cfg['allocator'] = 'SLUB' - elif prog.type('struct kmem_cache').members[1][1] == 'batchcount': + elif prog.type('struct kmem_cache').members[1].name == 'batchcount': cfg['allocator'] = 'SLAB' else: err('Can\'t determine the slab allocator')
@@ -193,7 +193,7 @@ def main(): # look over all slab pages, belonging to non-root memcgs # and look for objects belonging to the given memory cgroup for page in for_each_slab_page(prog): - objcg_vec_raw = page.obj_cgroups.value_() + objcg_vec_raw = page.memcg_data.value_() if objcg_vec_raw == 0: continue cache = page.slab_cache
@@ -202,7 +202,7 @@ def main(): addr = cache.value_() caches[addr] = cache # clear the lowest bit to get the true obj_cgroups - objcg_vec = Object(prog, page.obj_cgroups.type_, + objcg_vec = Object(prog, 'struct obj_cgroup **', value=objcg_vec_raw & ~1) if addr not in stats:
tools/perf/builtin-ftrace.c +1 -1
@@ -289,7 +289,7 @@ static int set_tracing_pid(struct perf_ftrace *ftrace)for (i =0 ; i <perf_thread_map__nr (ftrace->evlist->core.threads); i++) {scnprintf (buf,sizeof (buf),"%d" , - ftrace->evlist->core.threads->map[i]); +perf_thread_map__pid (ftrace->evlist->core.threads, i));if (append_tracing_file ("set_ftrace_pid" , buf) <0 )return -1 ; }
tools/perf/util/data.c +3 -2
@@ -35,7 +35,7 @@ void perf_data__close_dir(struct perf_data *data)int perf_data__create_dir (struct perf_data *data,int nr) {struct perf_data_file *files =NULL ; -int i, ret =-1 ; +int i, ret;if (WARN_ON (!data->is_dir))return -EINVAL ;
@@ -51,7 +51,8 @@ int perf_data__create_dir(struct perf_data *data, int nr)for (i =0 ; i < nr; i++) {struct perf_data_file *file = &files[i]; -if (asprintf (&file->path,"%s/data.%d" , data->path, i) <0 ) + ret =asprintf (&file->path,"%s/data.%d" , data->path, i); +if (ret <0 ) goto out_err; ret =open (file->path,O_RDWR |O_CREAT |O_TRUNC ,S_IRUSR |S_IWUSR );
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.35 kernel.
All users of the 5.10 kernel series must upgrade.
The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.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/mips/include/asm/vdso/gettimeofday.h | 26 ++- drivers/net/ethernet/intel/igb/igb_main.c | 3 drivers/net/usb/ax88179_178a.c | 6 drivers/nvme/host/pci.c | 1 drivers/platform/x86/thinkpad_acpi.c | 31 ++- drivers/usb/core/quirks.c | 4 drivers/vfio/Kconfig | 2 fs/overlayfs/namei.c | 1 fs/overlayfs/super.c | 12 - include/linux/bpf_verifier.h | 5 include/linux/device.h | 1 include/linux/dma-mapping.h | 16 + include/linux/swiotlb.h | 1 include/linux/user_namespace.h | 3 include/uapi/linux/capability.h | 3 kernel/bpf/verifier.c | 33 ++- kernel/dma/swiotlb.c | 259 ++++++++++++++++-------------- kernel/events/core.c | 12 - kernel/user_namespace.c | 65 +++++++ net/netfilter/nf_conntrack_standalone.c | 10 - net/qrtr/mhi.c | 8 sound/usb/quirks-table.h | 10 + tools/cgroup/memcg_slabinfo.py | 8 tools/perf/builtin-ftrace.c | 2 tools/perf/util/data.c | 5 26 files changed, 345 insertions(+), 184 deletions(-)
Bjorn Andersson (1):
net: qrtr: Avoid potential use after free in MHI send
Chris Chiu (1):
USB: Add reset-resume quirk for WD19's Realtek Hub
Daniel Borkmann (2):
bpf: Fix masking negation logic upon negative dst register
bpf: Fix leakage of uninitialized bpf stack under speculation
Greg Kroah-Hartman (1):
Linux 5.10.35
Jason Gunthorpe (1):
vfio: Depend on MMU
Jianxiong Gao (9):
driver core: add a min_align_mask field to struct device_dma_parameters
swiotlb: add a IO_TLB_SIZE define
swiotlb: factor out an io_tlb_offset helper
swiotlb: factor out a nr_slots helper
swiotlb: clean up swiotlb_tbl_unmap_single
swiotlb: refactor swiotlb_tbl_map_single
swiotlb: don't modify orig_addr in swiotlb_tbl_sync_single
swiotlb: respect min_align_mask
nvme-pci: set min_align_mask
Jonathon Reinhart (1):
netfilter: conntrack: Make global sysctls readonly in non-init netns
Kai-Heng Feng (1):
USB: Add LPM quirk for Lenovo ThinkPad USB-C Dock Gen2 Ethernet
Mark Pearson (1):
platform/x86: thinkpad_acpi: Correct thermal sensor allocation
Mickaël Salaün (1):
ovl: fix leaked dentry
Miklos Szeredi (1):
ovl: allow upperdir inside lowerdir
Nick Lowe (1):
igb: Enable RSS for Intel I211 Ethernet Controller
Ondrej Mosnacek (1):
perf/core: Fix unconditional security_locked_down() call
Phillip Potter (1):
net: usb: ax88179_178a: initialize local variables before use
Romain Naour (1):
mips: Do not include hi and lo in clobber list for R6
Serge E. Hallyn (1):
capabilities: require CAP_SETFCAP to map uid 0
Takashi Iwai (1):
ALSA: usb-audio: Add MIDI quirk for Vox ToneLab EX
Thomas Richter (1):
perf ftrace: Fix access to pid in array when setting a pid filter
Vasily Averin (1):
tools/cgroup/slabinfo.py: updated to work on current kernel
Zhen Lei (1):
perf data: Fix error return code in perf_data__create_dir()