Linux 5.10.170
Greg Kroah-Hartman
maintainerMAINTAINERS +1 -1
@@ -3001,7 +3001,7 @@ F: drivers/net/ieee802154/atusb.h AUDIT SUBSYSTEM M: Paul Moore <[email protected]> M: Eric Paris <[email protected]> -L: [email protected] (moderated for non-subscribers) +L: [email protected] S: Supported W: https://github.com/linux-audit T: git git://git.kernel.org/pub/scm/linux/kernel/git/pcmoore/audit.git
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 169 +SUBLEVEL = 170 EXTRAVERSION = NAME = Dare mighty things
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi new file +44 -0
44 lines not on this page · raw message
arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi new file +44 -0
44 lines not on this page · raw message
arch/powerpc/boot/dts/fsl/t2081si-post.dtsi +18 -2
@@ -609,8 +609,8 @@ usb1: usb@211000 { /include/ "qoriq-bman1.dtsi" /include/ "qoriq-fman3-0.dtsi" -/include/ "qoriq-fman3-0-1g-0.dtsi" -/include/ "qoriq-fman3-0-1g-1.dtsi" +/include/ "qoriq-fman3-0-10g-2.dtsi" +/include/ "qoriq-fman3-0-10g-3.dtsi" /include/ "qoriq-fman3-0-1g-2.dtsi" /include/ "qoriq-fman3-0-1g-3.dtsi" /include/ "qoriq-fman3-0-1g-4.dtsi"
@@ -659,3 +659,19 @@ L2_1: l2-cache-controller@c20000 { interrupts = <16 2 1 9>; }; }; + +&fman0_rx_0x08 { + /delete-property/ fsl,fman-10g-port; +}; + +&fman0_tx_0x28 { + /delete-property/ fsl,fman-10g-port; +}; + +&fman0_rx_0x09 { + /delete-property/ fsl,fman-10g-port; +}; + +&fman0_tx_0x29 { + /delete-property/ fsl,fman-10g-port; +};
arch/x86/kvm/svm/svm.c +8 -2
@@ -3480,8 +3480,14 @@ static void svm_cancel_injection(struct kvm_vcpu *vcpu)static fastpath_t svm_exit_handlers_fastpath (struct kvm_vcpu *vcpu) { -if (to_svm (vcpu)->vmcb->control.exit_code ==SVM_EXIT_MSR && -to_svm (vcpu)->vmcb->control.exit_info_1) +struct vmcb_control_area *control = &to_svm (vcpu)->vmcb->control; + +/* +* Note, the next RIP must be provided as SRCU isn't held, i.e. KVM +* can't read guest memory (dereference memslots) to decode the WRMSR. +*/ +if (control->exit_code ==SVM_EXIT_MSR && control->exit_info_1 && + nrips && control->next_rip)return handle_fastpath_set_msr_irqoff (vcpu);return EXIT_FASTPATH_NONE ;
arch/x86/kvm/vmx/nested.c +11 -0
@@ -4556,6 +4556,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 vm_exit_reason,vmx_switch_vmcs (vcpu, &vmx->vmcs01); +/* +* If IBRS is advertised to the vCPU, KVM must flush the indirect +* branch predictors when transitioning from L2 to L1, as L1 expects +* hardware (KVM in this case) to provide separate predictor modes. +* Bare metal isolates VMX root (host) from VMX non-root (guest), but +* doesn't isolate different VMCSs, i.e. in this case, doesn't provide +* separate modes for L2 vs L1. +*/ +if (guest_cpuid_has (vcpu,X86_FEATURE_SPEC_CTRL )) +indirect_branch_prediction_barrier (); +/* Update any VMCS fields that might have changed while L2 ran */ vmcs_write32 (VM_EXIT_MSR_LOAD_COUNT , vmx->msr_autoload.host.nr);vmcs_write32 (VM_ENTRY_MSR_LOAD_COUNT , vmx->msr_autoload.guest.nr);
arch/x86/kvm/vmx/vmx.c +4 -2
@@ -1431,8 +1431,10 @@ void vmx_vcpu_load_vmcs(struct kvm_vcpu *vcpu, int cpu,/* * No indirect branch prediction barrier needed when switching -* the active VMCS within a guest, e.g. on nested VM-Enter. -* The L1 VMM can protect itself with retpolines, IBPB or IBRS. +* the active VMCS within a vCPU, unless IBRS is advertised to +* the vCPU. To minimize the number of IBPBs executed, KVM +* performs IBPB on nested VM-Exit (a single nested transition +* may switch the active VMCS multiple times). */ if (!buddy ||WARN_ON_ONCE (buddy->vmcs != prev))indirect_branch_prediction_barrier ();
arch/x86/kvm/x86.c +3 -1
@@ -7534,7 +7534,9 @@ int x86_emulate_instruction(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, write_fault_to_spt, emulation_type))return 1 ; -if (ctxt->have_exception) { + +if (ctxt->have_exception && + !(emulation_type &EMULTYPE_SKIP )) {/* * #UD should result in just EMULATION_FAILED, and trap-like * exception should not be encountered during decode.
drivers/block/nbd.c +12 -1
@@ -1865,8 +1865,19 @@ static int nbd_genl_connect(struct sk_buff *skb, struct genl_info *info)if (!netlink_capable (skb,CAP_SYS_ADMIN ))return -EPERM ; -if (info->attrs[NBD_ATTR_INDEX ]) +if (info->attrs[NBD_ATTR_INDEX ]) { index =nla_get_u32 (info->attrs[NBD_ATTR_INDEX ]); + +/* +* Too big first_minor can cause duplicate creation of +* sysfs files/links, since index << part_shift might overflow, or +* MKDEV() expect that the max bits of first_minor is 20. +*/ +if (index <0 || index >MINORMASK >> part_shift) { +printk (KERN_ERR "nbd: illegal input index %d\n" , index); +return -EINVAL ; + } + }if (!info->attrs[NBD_ATTR_SOCKETS ]) {printk (KERN_ERR "nbd: must specify at least one socket\n" );return -EINVAL ;
drivers/clk/x86/Kconfig +3 -2
@@ -1,8 +1,9 @@ # SPDX-License-Identifier: GPL-2.0-only config CLK_LGM_CGU depends on OF && HAS_IOMEM && (X86 || COMPILE_TEST) + select MFD_SYSCON select OF_EARLY_FLATTREE bool "Clock driver for Lightning Mountain(LGM) platform" help - Clock Generation Unit(CGU) driver for Intel Lightning Mountain(LGM) - network processor SoC. + Clock Generation Unit(CGU) driver for MaxLinear's x86 based + Lightning Mountain(LGM) network processor SoC.
drivers/clk/x86/clk-cgu-pll.c +6 -17
@@ -1,8 +1,9 @@// SPDX-License-Identifier: GPL-2.0 /* +* Copyright (C) 2020-2022 MaxLinear, Inc. * Copyright (C) 2020 Intel Corporation. -* Zhu YiXin <[email protected]> -* Rahul Tanwar <[email protected]> +* Zhu Yixin <[email protected]> +* Rahul Tanwar <[email protected]> */ #include <linux/clk-provider.h>
@@ -40,13 +41,10 @@ static unsigned long lgm_pll_recalc_rate(struct clk_hw *hw, unsigned long prate) {struct lgm_clk_pll *pll =to_lgm_clk_pll (hw);unsigned int div, mult, frac; -unsigned long flags; -spin_lock_irqsave (&pll->lock, flags); mult =lgm_get_clk_val (pll->membase,PLL_REF_DIV (pll->reg),0 ,12 ); div =lgm_get_clk_val (pll->membase,PLL_REF_DIV (pll->reg),18 ,6 ); frac =lgm_get_clk_val (pll->membase, pll->reg,2 ,24 ); -spin_unlock_irqrestore (&pll->lock, flags);if (pll->type ==TYPE_LJPLL ) div *=4 ;
@@ -57,12 +55,9 @@ static unsigned long lgm_pll_recalc_rate(struct clk_hw *hw, unsigned long prate)static int lgm_pll_is_enabled (struct clk_hw *hw) {struct lgm_clk_pll *pll =to_lgm_clk_pll (hw); -unsigned long flags;unsigned int ret; -spin_lock_irqsave (&pll->lock, flags); ret =lgm_get_clk_val (pll->membase, pll->reg,0 ,1 ); -spin_unlock_irqrestore (&pll->lock, flags);return ret; }
@@ -70,15 +65,13 @@ static int lgm_pll_is_enabled(struct clk_hw *hw)static int lgm_pll_enable (struct clk_hw *hw) {struct lgm_clk_pll *pll =to_lgm_clk_pll (hw); -unsigned long flags;u32 val;int ret; -spin_lock_irqsave (&pll->lock, flags);lgm_set_clk_val (pll->membase, pll->reg,0 ,1 ,1 ); - ret =readl_poll_timeout_atomic (pll->membase + pll->reg, - val, (val &0x1 ),1 ,100 ); -spin_unlock_irqrestore (&pll->lock, flags); + ret =regmap_read_poll_timeout_atomic (pll->membase, pll->reg, + val, (val &0x1 ),1 ,100 ); +return ret; }
@@ -86,11 +79,8 @@ static int lgm_pll_enable(struct clk_hw *hw)static void lgm_pll_disable (struct clk_hw *hw) {struct lgm_clk_pll *pll =to_lgm_clk_pll (hw); -unsigned long flags; -spin_lock_irqsave (&pll->lock, flags);lgm_set_clk_val (pll->membase, pll->reg,0 ,1 ,0 ); -spin_unlock_irqrestore (&pll->lock, flags); }static const struct clk_ops lgm_pll_ops = {
@@ -121,7 +111,6 @@ lgm_clk_register_pll(struct lgm_clk_provider *ctx,return ERR_PTR (-ENOMEM ); pll->membase = ctx->membase; - pll->lock = ctx->lock; pll->reg = list->reg; pll->flags = list->flags; pll->type = list->type;
drivers/clk/x86/clk-cgu.c +30 -76
358 lines not on this page · raw message
drivers/clk/x86/clk-cgu.h +23 -23
136 lines not on this page · raw message
drivers/clk/x86/clk-lgm.c +11 -7
@@ -1,10 +1,12 @@// SPDX-License-Identifier: GPL-2.0 /* +* Copyright (C) 2020-2022 MaxLinear, Inc. * Copyright (C) 2020 Intel Corporation. -* Zhu YiXin <[email protected]> -* Rahul Tanwar <[email protected]> +* Zhu Yixin <[email protected]> +* Rahul Tanwar <[email protected]> */ #include <linux/clk-provider.h> +#include <linux/mfd/syscon.h> #include <linux/of.h> #include <linux/platform_device.h> #include <dt-bindings/clock/intel,lgm-clk.h>
@@ -253,8 +255,8 @@ static const struct lgm_clk_branch lgm_branch_clks[] = {LGM_FIXED (LGM_CLK_SLIC ,"slic" ,NULL ,0 ,CGU_IF_CLK1 ,8 ,2 ,CLOCK_FLAG_VAL_INIT ,8192000 ,2 ),LGM_FIXED (LGM_CLK_DOCSIS ,"v_docsis" ,NULL ,0 ,0 ,0 ,0 ,0 ,16000000 ,0 ), -LGM_DIV (LGM_CLK_DCL ,"dcl" ,"v_ifclk" ,0 ,CGU_PCMCR , -25 ,3 ,0 ,0 ,0 ,0 , dcl_div), +LGM_DIV (LGM_CLK_DCL ,"dcl" ,"v_ifclk" ,CLK_SET_RATE_PARENT ,CGU_PCMCR , +25 ,3 ,0 ,0 ,DIV_CLK_NO_MASK ,0 , dcl_div),LGM_MUX (LGM_CLK_PCM ,"pcm" , pcm_p,0 ,CGU_C55_PCMCR ,0 ,1 ,CLK_MUX_ROUND_CLOSEST ,0 ), LGM_FIXED_FACTOR(LGM_CLK_DDR_PHY, "ddr_phy", "ddr",
@@ -433,13 +435,15 @@ static int lgm_cgu_probe(struct platform_device *pdev) ctx->clk_data.num =CLK_NR_CLKS ; - ctx->membase =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (ctx->membase)) + ctx->membase =syscon_node_to_regmap (np); +if (IS_ERR (ctx->membase)) { +dev_err (dev,"Failed to get clk CGU iomem\n" );return PTR_ERR (ctx->membase); + } + ctx->np = np; ctx->dev = dev; -spin_lock_init (&ctx->lock); ret =lgm_clk_register_plls (ctx, lgm_pll_clks,ARRAY_SIZE (lgm_pll_clks));
drivers/gpu/drm/etnaviv/etnaviv_mmu.c +2 -2
@@ -80,10 +80,10 @@ static int etnaviv_iommu_map(struct etnaviv_iommu_context *context, u32 iova,return -EINVAL ;for_each_sgtable_dma_sg (sgt, sg, i) { -u32 pa =sg_dma_address (sg) - sg->offset; +phys_addr_t pa =sg_dma_address (sg) - sg->offset;size_t bytes =sg_dma_len (sg) + sg->offset; -VERB ("map[%d]: %08x %08x(%zx)" , i, iova, pa, bytes); +VERB ("map[%d]: %08x %pap(%zx)" , i, iova, &pa, bytes); ret =etnaviv_context_map (context, da, pa, bytes, prot);if (ret)
drivers/gpu/drm/i915/gvt/gtt.c +13 -4
@@ -1192,10 +1192,8 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu,for_each_shadow_entry (sub_spt, &sub_se, sub_index) { ret =intel_gvt_hypervisor_dma_map_guest_page (vgpu, start_gfn + sub_index,PAGE_SIZE , &dma_addr); -if (ret) { -ppgtt_invalidate_spt (spt); -return ret; - } +if (ret) + goto err; sub_se.val64 = se->val64;/* Copy the PAT field from PDE. */
@@ -1214,6 +1212,17 @@ static int split_2MB_gtt_entry(struct intel_vgpu *vgpu, ops->set_pfn (se, sub_spt->shadow_page.mfn);ppgtt_set_shadow_entry (spt, se, index);return 0 ; +err: +/* Cancel the existing addess mappings of DMA addr. */ +for_each_present_shadow_entry (sub_spt, &sub_se, sub_index) { +gvt_vdbg_mm ("invalidate 4K entry\n" ); +ppgtt_invalidate_pte (sub_spt, &sub_se); + } +/* Release the new allocated spt. */ +trace_spt_change (sub_spt->vgpu->id,"release" , sub_spt, + sub_spt->guest_page.gfn, sub_spt->shadow_page.type); +ppgtt_free_spt (sub_spt); +return ret; } static int split_64KB_gtt_entry(struct intel_vgpu *vgpu,
drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c +24 -9
@@ -518,6 +518,7 @@ static int kvaser_usb_hydra_send_simple_cmd(struct kvaser_usb *dev, u8 cmd_no, int channel) {struct kvaser_cmd *cmd; +size_t cmd_len;int err; cmd =kcalloc (1 ,sizeof (struct kvaser_cmd ),GFP_KERNEL );
@@ -525,6 +526,7 @@ static int kvaser_usb_hydra_send_simple_cmd(struct kvaser_usb *dev,return -ENOMEM ; cmd->header.cmd_no = cmd_no; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);if (channel <0 ) {kvaser_usb_hydra_set_cmd_dest_he (cmd,KVASER_USB_HYDRA_HE_ADDRESS_ILLEGAL );
@@ -541,7 +543,7 @@ static int kvaser_usb_hydra_send_simple_cmd(struct kvaser_usb *dev,kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);if (err) goto end;
@@ -557,6 +559,7 @@ kvaser_usb_hydra_send_simple_cmd_async(struct kvaser_usb_net_priv *priv, {struct kvaser_cmd *cmd;struct kvaser_usb *dev = priv->dev; +size_t cmd_len;int err; cmd =kcalloc (1 ,sizeof (struct kvaser_cmd ),GFP_ATOMIC );
@@ -564,14 +567,14 @@ kvaser_usb_hydra_send_simple_cmd_async(struct kvaser_usb_net_priv *priv,return -ENOMEM ; cmd->header.cmd_no = cmd_no; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);kvaser_usb_hydra_set_cmd_dest_he (cmd, dev->card_data.hydra.channel_to_he[priv->channel]);kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd_async (priv, cmd, -kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd_async (priv, cmd, cmd_len);if (err)kfree (cmd);
@@ -715,6 +718,7 @@ static int kvaser_usb_hydra_get_single_capability(struct kvaser_usb *dev, {struct kvaser_usb_dev_card_data *card_data = &dev->card_data;struct kvaser_cmd *cmd; +size_t cmd_len;u32 value =0 ;u32 mask =0 ;u16 cap_cmd_res;
@@ -726,13 +730,14 @@ static int kvaser_usb_hydra_get_single_capability(struct kvaser_usb *dev,return -ENOMEM ; cmd->header.cmd_no =CMD_GET_CAPABILITIES_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd); cmd->cap_req.cap_cmd =cpu_to_le16 (cap_cmd_req);kvaser_usb_hydra_set_cmd_dest_he (cmd, card_data->hydra.sysdbg_he);kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);if (err) goto end;
@@ -1555,6 +1560,7 @@ static int kvaser_usb_hydra_get_busparams(struct kvaser_usb_net_priv *priv,struct kvaser_usb *dev = priv->dev;struct kvaser_usb_net_hydra_priv *hydra = priv->sub_priv;struct kvaser_cmd *cmd; +size_t cmd_len;int err;if (!hydra)
@@ -1565,6 +1571,7 @@ static int kvaser_usb_hydra_get_busparams(struct kvaser_usb_net_priv *priv,return -ENOMEM ; cmd->header.cmd_no =CMD_GET_BUSPARAMS_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);kvaser_usb_hydra_set_cmd_dest_he (cmd, dev->card_data.hydra.channel_to_he[priv->channel]); kvaser_usb_hydra_set_cmd_transid
@@ -1574,7 +1581,7 @@ static int kvaser_usb_hydra_get_busparams(struct kvaser_usb_net_priv *priv,reinit_completion (&priv->get_busparams_comp); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);if (err)return err;
@@ -1601,6 +1608,7 @@ static int kvaser_usb_hydra_set_bittiming(const struct net_device *netdev,struct kvaser_cmd *cmd;struct kvaser_usb_net_priv *priv =netdev_priv (netdev);struct kvaser_usb *dev = priv->dev; +size_t cmd_len;int err; cmd =kcalloc (1 ,sizeof (struct kvaser_cmd ),GFP_KERNEL );
@@ -1608,6 +1616,7 @@ static int kvaser_usb_hydra_set_bittiming(const struct net_device *netdev,return -ENOMEM ; cmd->header.cmd_no =CMD_SET_BUSPARAMS_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);memcpy (&cmd->set_busparams_req.busparams_nominal, busparams,sizeof (cmd->set_busparams_req.busparams_nominal));
@@ -1616,7 +1625,7 @@ static int kvaser_usb_hydra_set_bittiming(const struct net_device *netdev,kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);kfree (cmd);
@@ -1629,6 +1638,7 @@ static int kvaser_usb_hydra_set_data_bittiming(const struct net_device *netdev,struct kvaser_cmd *cmd;struct kvaser_usb_net_priv *priv =netdev_priv (netdev);struct kvaser_usb *dev = priv->dev; +size_t cmd_len;int err; cmd =kcalloc (1 ,sizeof (struct kvaser_cmd ),GFP_KERNEL );
@@ -1636,6 +1646,7 @@ static int kvaser_usb_hydra_set_data_bittiming(const struct net_device *netdev,return -ENOMEM ; cmd->header.cmd_no =CMD_SET_BUSPARAMS_FD_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);memcpy (&cmd->set_busparams_req.busparams_data, busparams,sizeof (cmd->set_busparams_req.busparams_data));
@@ -1653,7 +1664,7 @@ static int kvaser_usb_hydra_set_data_bittiming(const struct net_device *netdev,kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);kfree (cmd);
@@ -1781,6 +1792,7 @@ static int kvaser_usb_hydra_get_software_info(struct kvaser_usb *dev)static int kvaser_usb_hydra_get_software_details (struct kvaser_usb *dev) {struct kvaser_cmd *cmd; +size_t cmd_len;int err;u32 flags;struct kvaser_usb_dev_card_data *card_data = &dev->card_data;
@@ -1790,6 +1802,7 @@ static int kvaser_usb_hydra_get_software_details(struct kvaser_usb *dev)return -ENOMEM ; cmd->header.cmd_no =CMD_GET_SOFTWARE_DETAILS_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd); cmd->sw_detail_req.use_ext_cmd =1 ;kvaser_usb_hydra_set_cmd_dest_he (cmd,KVASER_USB_HYDRA_HE_ADDRESS_ILLEGAL );
@@ -1797,7 +1810,7 @@ static int kvaser_usb_hydra_get_software_details(struct kvaser_usb *dev)kvaser_usb_hydra_set_cmd_transid (cmd,kvaser_usb_hydra_get_next_transid (dev)); - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);if (err) goto end;
@@ -1913,6 +1926,7 @@ static int kvaser_usb_hydra_set_opt_mode(const struct kvaser_usb_net_priv *priv) {struct kvaser_usb *dev = priv->dev;struct kvaser_cmd *cmd; +size_t cmd_len;int err; if ((priv->can.ctrlmode &
@@ -1928,6 +1942,7 @@ static int kvaser_usb_hydra_set_opt_mode(const struct kvaser_usb_net_priv *priv)return -ENOMEM ; cmd->header.cmd_no =CMD_SET_DRIVERMODE_REQ ; + cmd_len =kvaser_usb_hydra_cmd_size (cmd);kvaser_usb_hydra_set_cmd_dest_he (cmd, dev->card_data.hydra.channel_to_he[priv->channel]); kvaser_usb_hydra_set_cmd_transid
@@ -1937,7 +1952,7 @@ static int kvaser_usb_hydra_set_opt_mode(const struct kvaser_usb_net_priv *priv)else cmd->set_ctrlmode.mode =KVASER_USB_HYDRA_CTRLMODE_NORMAL ; - err =kvaser_usb_send_cmd (dev, cmd,kvaser_usb_hydra_cmd_size (cmd)); + err =kvaser_usb_send_cmd (dev, cmd, cmd_len);kfree (cmd);return err;
drivers/net/wireless/marvell/mwifiex/sdio.c +1 -0
@@ -485,6 +485,7 @@ static struct memory_type_mapping mem_type_mapping_tbl[] = { };static const struct of_device_id mwifiex_sdio_of_match_table[] = { + { .compatible ="marvell,sd8787" }, { .compatible ="marvell,sd8897" }, { .compatible ="marvell,sd8997" }, { }
drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c +2 -6
@@ -4369,12 +4369,9 @@ void rtl8xxxu_gen1_report_connect(struct rtl8xxxu_priv *priv,void rtl8xxxu_gen2_report_connect (struct rtl8xxxu_priv *priv,u8 macid,bool connect) { -#ifdef RTL8XXXU_GEN2_REPORT_CONNECT /* -* Barry Day reports this causes issues with 8192eu and 8723bu -* devices reconnecting. The reason for this is unclear, but -* until it is better understood, leave the code in place but -* disabled, so it is not lost. +* The firmware turns on the rate control when it knows it's +* connected to a network. */ struct h2c_cmd h2c;
@@ -4387,7 +4384,6 @@ void rtl8xxxu_gen2_report_connect(struct rtl8xxxu_priv *priv, h2c.media_status_rpt.parm &= ~BIT (0 );rtl8xxxu_gen2_h2c_cmd (priv, &h2c,sizeof (h2c.media_status_rpt)); -#endif }void rtl8xxxu_gen1_init_aggregation (struct rtl8xxxu_priv *priv)
fs/ext4/sysfs.c +6 -1
@@ -487,6 +487,11 @@ static void ext4_sb_release(struct kobject *kobj)complete (&sbi->s_kobj_unregister); } +static void ext4_feat_release (struct kobject *kobj) +{ +kfree (kobj); +} +static const struct sysfs_ops ext4_attr_ops = { .show = ext4_attr_show, .store = ext4_attr_store,
@@ -501,7 +506,7 @@ static struct kobj_type ext4_sb_ktype = {static struct kobj_type ext4_feat_ktype = { .default_groups = ext4_feat_groups, .sysfs_ops = &ext4_attr_ops, - .release = (void (*)(struct kobject *))kfree, + .release = ext4_feat_release, };static struct kobject *ext4_root;
include/linux/nospec.h +4 -0
@@ -11,6 +11,10 @@struct task_struct ; +#ifndef barrier_nospec +# define barrier_nospec () do { } while (0) +#endif +/** * array_index_mask_nospec() - generate a ~0 mask when index < size, 0 otherwise * @index: array element index
include/linux/random.h +3 -3
@@ -19,14 +19,14 @@ void add_input_randomness(unsigned int type, unsigned int code, void add_interrupt_randomness(int irq) __latent_entropy;void add_hwgenerator_randomness (const void *buf,size_t len,size_t entropy); -#if defined(LATENT_ENTROPY_PLUGIN ) && !defined(__CHECKER__)static inline void add_latent_entropy (void ) { +#if defined(LATENT_ENTROPY_PLUGIN ) && !defined(__CHECKER__)add_device_randomness ((const void *)&latent_entropy,sizeof (latent_entropy)); -}#else -static inline void add_latent_entropy (void ) { } +add_device_randomness (NULL ,0 );#endif +}void get_random_bytes (void *buf,size_t len);size_t __must_check get_random_bytes_arch (void *buf,size_t len);
kernel/bpf/core.c +1 -2
@@ -32,6 +32,7 @@#include <linux/perf_event.h> #include <linux/extable.h> #include <linux/log2.h> +#include <linux/nospec.h> #include <asm/barrier.h> #include <asm/unaligned.h>
@@ -1642,9 +1643,7 @@ static u64 ___bpf_prog_run(u64 *regs, const struct bpf_insn *insn, u64 *stack)* reuse preexisting logic from Spectre v1 mitigation that * happens to produce the required code on x86 for v4 as well. */ -#ifdef CONFIG_X86 barrier_nospec (); -#endif CONT ;#define LDST (SIZEOP ,SIZE ) \ STX_MEM_##SIZEOP: \
lib/usercopy.c +7 -0
@@ -3,6 +3,7 @@#include <linux/fault-inject-usercopy.h> #include <linux/instrumented.h> #include <linux/uaccess.h> +#include <linux/nospec.h> /* out-of-line parts */
@@ -12,6 +13,12 @@ unsigned long _copy_from_user(void *to, const void __user *from, unsigned long nunsigned long res = n;might_fault ();if (!should_fail_usercopy () &&likely (access_ok (from, n))) { +/* +* Ensure that bad access_ok() speculation will not +* lead to nasty side effects *after* the copy is +* finished: +*/ +barrier_nospec ();instrument_copy_from_user (to, from, n); res =raw_copy_from_user (to, from, n); }
net/mac80211/ieee80211_i.h +22 -2
@@ -644,6 +644,26 @@ struct mesh_csa_settings {struct cfg80211_csa_settings settings; }; +/** +* struct mesh_table +* +* @known_gates: list of known mesh gates and their mpaths by the station. The +* gate's mpath may or may not be resolved and active. +* @gates_lock: protects updates to known_gates +* @rhead: the rhashtable containing struct mesh_paths, keyed by dest addr +* @walk_head: linked list containing all mesh_path objects +* @walk_lock: lock protecting walk_head +* @entries: number of entries in the table +*/ +struct mesh_table { +struct hlist_head known_gates; +spinlock_t gates_lock; +struct rhashtable rhead; +struct hlist_head walk_head; +spinlock_t walk_lock; +atomic_t entries;/* Up to MAX_MESH_NEIGHBOURS */ +}; +struct ieee80211_if_mesh {struct timer_list housekeeping_timer;struct timer_list mesh_path_timer;
@@ -718,8 +738,8 @@ struct ieee80211_if_mesh {/* offset from skb->data while building IE */ int meshconf_offset; -struct mesh_table *mesh_paths; -struct mesh_table *mpp_paths;/* Store paths for MPP&MAP */ +struct mesh_table mesh_paths; +struct mesh_table mpp_paths;/* Store paths for MPP&MAP */ int mesh_paths_generation;int mpp_paths_generation; };
net/mac80211/mesh.h +1 -21
@@ -127,26 +127,6 @@ struct mesh_path {u32 path_change_count; }; -/** -* struct mesh_table -* -* @known_gates: list of known mesh gates and their mpaths by the station. The -* gate's mpath may or may not be resolved and active. -* @gates_lock: protects updates to known_gates -* @rhead: the rhashtable containing struct mesh_paths, keyed by dest addr -* @walk_head: linked list containging all mesh_path objects -* @walk_lock: lock protecting walk_head -* @entries: number of entries in the table -*/ -struct mesh_table { -struct hlist_head known_gates; -spinlock_t gates_lock; -struct rhashtable rhead; -struct hlist_head walk_head; -spinlock_t walk_lock; -atomic_t entries;/* Up to MAX_MESH_NEIGHBOURS */ -}; -/* Recent multicast cache */ /* RMC_BUCKETS must be a power of 2, maximum 256 */ #define RMC_BUCKETS 256
@@ -308,7 +288,7 @@ int mesh_path_error_tx(struct ieee80211_sub_if_data *sdata,void mesh_path_assign_nexthop (struct mesh_path *mpath,struct sta_info *sta);void mesh_path_flush_pending (struct mesh_path *mpath);void mesh_path_tx_pending (struct mesh_path *mpath); -int mesh_pathtbl_init (struct ieee80211_sub_if_data *sdata); +void mesh_pathtbl_init (struct ieee80211_sub_if_data *sdata);void mesh_pathtbl_unregister (struct ieee80211_sub_if_data *sdata);int mesh_path_del (struct ieee80211_sub_if_data *sdata,const u8 *addr);void mesh_path_timer (struct timer_list *t);
net/mac80211/mesh_pathtbl.c +31 -58
195 lines not on this page · raw message
net/sched/sch_taprio.c +3 -5
@@ -1906,14 +1906,12 @@ static int taprio_dump(struct Qdisc *sch, struct sk_buff *skb)static struct Qdisc *taprio_leaf (struct Qdisc *sch,unsigned long cl) { -struct taprio_sched *q =qdisc_priv (sch); -struct net_device *dev =qdisc_dev (sch); -unsigned int ntx = cl -1 ; +struct netdev_queue *dev_queue =taprio_queue_get (sch, cl); -if (ntx >= dev->num_tx_queues) +if (!dev_queue)return NULL ; -return q->qdiscs[ntx]; +return dev_queue->qdisc_sleeping; }static unsigned long taprio_find (struct Qdisc *sch,u32 classid)
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.170 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
------------
MAINTAINERS | 2 Makefile | 2 arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-2.dtsi | 44 +++++++ arch/powerpc/boot/dts/fsl/qoriq-fman3-0-10g-3.dtsi | 44 +++++++ arch/powerpc/boot/dts/fsl/t2081si-post.dtsi | 20 +++ arch/x86/kvm/svm/svm.c | 10 + arch/x86/kvm/vmx/nested.c | 11 + arch/x86/kvm/vmx/vmx.c | 6 - arch/x86/kvm/x86.c | 4 drivers/block/nbd.c | 13 ++ drivers/clk/x86/Kconfig | 5 drivers/clk/x86/clk-cgu-pll.c | 23 +-- drivers/clk/x86/clk-cgu.c | 106 +++++------------- drivers/clk/x86/clk-cgu.h | 46 +++---- drivers/clk/x86/clk-lgm.c | 18 +-- drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 4 drivers/gpu/drm/i915/gvt/gtt.c | 17 ++ drivers/net/can/usb/kvaser_usb/kvaser_usb_hydra.c | 33 ++++- drivers/net/wireless/marvell/mwifiex/sdio.c | 1 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_core.c | 8 - fs/ext4/sysfs.c | 7 + include/linux/nospec.h | 4 include/linux/random.h | 6 - kernel/bpf/core.c | 3 lib/usercopy.c | 7 + net/mac80211/ieee80211_i.h | 24 +++- net/mac80211/mesh.h | 22 --- net/mac80211/mesh_pathtbl.c | 89 +++++---------- net/sched/sch_taprio.c | 8 - 29 files changed, 339 insertions(+), 248 deletions(-)
Bitterblue Smith (1):
wifi: rtl8xxxu: gen2: Turn on the rate control
Dave Hansen (1):
uaccess: Add speculation barrier to copy_from_user()
Greg Kroah-Hartman (1):
Linux 5.10.170
Jason A. Donenfeld (1):
random: always mix cycle counter in add_latent_entropy()
Jim Mattson (1):
KVM: VMX: Execute IBPB on emulated VM-exit when guest has IBRS
Kees Cook (1):
ext4: Fix function prototype mismatch for ext4_feat_ktype
Linus Torvalds (1):
bpf: add missing header file include
Lucas Stach (1):
drm/etnaviv: don't truncate physical page address
Lukas Wunner (1):
wifi: mwifiex: Add missing compatible string for SD8787
Marc Kleine-Budde (1):
can: kvaser_usb: hydra: help gcc-13 to figure out cmd_len
Paul Moore (1):
audit: update the mailing list in MAINTAINERS
Pavel Skripkin (1):
mac80211: mesh: embedd mesh_paths and mpp_paths into ieee80211_if_mesh
Rahul Tanwar (5):
clk: mxl: Switch from direct readl/writel based IO to regmap based IO
clk: mxl: Remove redundant spinlocks
clk: mxl: Add option to override gate clks
clk: mxl: Fix a clk entry by adding relevant flags
clk: mxl: syscon_node_to_regmap() returns error pointers
Sean Anderson (2):
powerpc: dts: t208x: Mark MAC1 and MAC2 as 10G
powerpc: dts: t208x: Disable 10G on MAC1 and MAC2
Sean Christopherson (2):
KVM: x86: Fail emulation during EMULTYPE_SKIP on any exception
KVM: SVM: Skip WRMSR fastpath on VM-Exit if next RIP isn't valid
Vladimir Oltean (1):
Revert "net/sched: taprio: make qdisc_leaf() see the per-netdev-queue pfifo child qdiscs"
Wen Yang (1):
Revert "Revert "block: nbd: add sanity check for first_minor""
Yu Kuai (2):
nbd: fix max value for 'first_minor'
nbd: fix possible overflow for 'first_minor' in nbd_dev_add()
Zhang Wensheng (1):
nbd: fix possible overflow on 'first_minor' in nbd_dev_add()
Zheng Wang (1):
drm/i915/gvt: fix double free bug in split_2MB_gtt_entry