Linux 5.10.64
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.10.64 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/x86/events/amd/iommu.c | 47 ++++++++------ arch/x86/kernel/reboot.c | 3 block/blk-core.c | 1 block/blk-flush.c | 13 ++++ block/blk-mq.c | 37 +++++++++++ block/blk.h | 6 - drivers/net/ethernet/realtek/r8169_main.c | 1 drivers/net/ethernet/xilinx/ll_temac_main.c | 4 - drivers/pci/quirks.c | 12 +-- drivers/tty/serial/8250/8250_omap.c | 26 ++++---- drivers/usb/gadget/udc/tegra-xudc.c | 4 - drivers/usb/host/xhci-debugfs.c | 14 +++- drivers/usb/host/xhci-rcar.c | 7 ++ drivers/usb/host/xhci-ring.c | 3 drivers/usb/host/xhci-trace.h | 26 ++++---- drivers/usb/host/xhci.h | 73 +++++++++++----------- drivers/usb/mtu3/mtu3_core.c | 4 - drivers/usb/mtu3/mtu3_gadget.c | 6 - drivers/usb/serial/mos7720.c | 4 - include/linux/skbuff.h | 4 - include/uapi/linux/termios.h | 15 ---- lib/Kconfig.debug | 2 mm/page_alloc.c | 8 +- net/ipv4/igmp.c | 2 net/netfilter/nf_tables_api.c | 89 +++++++++++++++++----------- net/netfilter/nft_set_hash.c | 10 +-- sound/usb/quirks.c | 1 28 files changed, 251 insertions(+), 173 deletions(-)
Alexander Tsoy (1):
ALSA: usb-audio: Add registration quirk for JBL Quantum 800
Chunfeng Yun (4):
usb: gadget: tegra-xudc: fix the wrong mult value for HS isoc or intr
usb: mtu3: restore HS function when set SS/SSP
usb: mtu3: use @mult for HS isoc or intr
usb: mtu3: fix the wrong HS mult value
Eric Dumazet (1):
netfilter: nftables: avoid potential overflows on 32bit arches
Esben Haabendal (1):
net: ll_temac: Remove left-over debug message
Greg Kroah-Hartman (1):
Linux 5.10.64
Hayes Wang (1):
Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM"
Jiri Slaby (1):
tty: drop termiox user definitions
Liu Jian (1):
igmp: Add ip_mc_list lock in ip_check_mc_rcu
Marek Behún (1):
PCI: Call Max Payload Size-related fixup quirks early
Mathias Nyman (2):
xhci: fix even more unsafe memory usage in xhci tracing
xhci: fix unsafe memory usage in xhci tracing
Ming Lei (3):
blk-mq: fix kernel panic during iterating over flush request
blk-mq: fix is_flush_rq
blk-mq: clearing flush request reference in tags->rqs[]
Muchun Song (1):
mm/page_alloc: speed up the iteration of max_order
Pablo Neira Ayuso (2):
netfilter: nf_tables: initialize set before expression setup
netfilter: nftables: clone set element expression template
Paul Gortmaker (1):
x86/reboot: Limit Dell Optiplex 990 quirk to early BIOS versions
Randy Dunlap (2):
net: kcov: don't select SKB_EXTENSIONS when there is no NET
net: linux/skbuff.h: combine SKB_EXTENSIONS + KCOV handling
Suravee Suthikulpanit (1):
x86/events/amd/iommu: Fix invalid Perf result due to IOMMU PMC power-gating
Tom Rix (1):
USB: serial: mos7720: improve OOM-handling in read_mos_reg()
Vignesh Raghavendra (1):
serial: 8250: 8250_omap: Fix unused variable warning
Yoshihiro Shimoda (1):
usb: host: xhci-rcar: Don't reload firmware after the completion
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 10 -SUBLEVEL = 63 +SUBLEVEL = 64 EXTRAVERSION = NAME = Dare mighty things
arch/x86/events/amd/iommu.c +26 -21
85 lines not on this page · raw message
arch/x86/kernel/reboot.c +2 -1
@@ -388,10 +388,11 @@ static const struct dmi_system_id reboot_dmi_table[] __initconst = { }, {/* Handle problems with rebooting on the OptiPlex 990. */ .callback = set_pci_reboot, - .ident = "Dell OptiPlex 990", + .ident = "Dell OptiPlex 990 BIOS A0x", .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Dell Inc." ),DMI_MATCH (DMI_PRODUCT_NAME ,"OptiPlex 990" ), + DMI_MATCH(DMI_BIOS_VERSION, "A0"), }, }, { /* Handle problems with rebooting on Dell 300's */
block/blk-core.c +0 -1
@@ -121,7 +121,6 @@ void blk_rq_init(struct request_queue *q, struct request *rq) rq->internal_tag =BLK_MQ_NO_TAG ; rq->start_time_ns =ktime_get_ns (); rq->part =NULL ; -refcount_set (&rq->ref,1 );blk_crypto_rq_set_defaults (rq); }EXPORT_SYMBOL (blk_rq_init);
block/blk-flush.c +13 -0
@@ -263,6 +263,11 @@ static void flush_end_io(struct request *flush_rq, blk_status_t error)spin_unlock_irqrestore (&fq->mq_flush_lock, flags); } +bool is_flush_rq (struct request *rq) +{ +return rq->end_io == flush_end_io; +} +/** * blk_kick_flush - consider issuing flush request * @q: request_queue being kicked
@@ -330,6 +335,14 @@ static void blk_kick_flush(struct request_queue *q, struct blk_flush_queue *fq, flush_rq->rq_flags |=RQF_FLUSH_SEQ ; flush_rq->rq_disk = first_rq->rq_disk; flush_rq->end_io = flush_end_io; +/* +* Order WRITE ->end_io and WRITE rq->ref, and its pair is the one +* implied in refcount_inc_not_zero() called from +* blk_mq_find_and_get_req(), which orders WRITE/READ flush_rq->ref +* and READ flush_rq->end_io +*/ +smp_wmb (); +refcount_set (&flush_rq->ref,1 );blk_flush_queue_rq (flush_rq, false); }
block/blk-mq.c +35 -2
@@ -929,7 +929,7 @@ static bool blk_mq_req_expired(struct request *rq, unsigned long *next)void blk_mq_put_rq_ref (struct request *rq) { -if (is_flush_rq (rq, rq->mq_hctx)) +if (is_flush_rq (rq)) rq->end_io (rq,0 );else if (refcount_dec_and_test (&rq->ref))__blk_mq_free_request (rq);
@@ -2589,16 +2589,49 @@ static void blk_mq_remove_cpuhp(struct blk_mq_hw_ctx *hctx) &hctx->cpuhp_dead); } +/* +* Before freeing hw queue, clearing the flush request reference in +* tags->rqs[] for avoiding potential UAF. +*/ +static void blk_mq_clear_flush_rq_mapping (struct blk_mq_tags *tags, +unsigned int queue_depth,struct request *flush_rq) +{ +int i; +unsigned long flags; + +/* The hw queue may not be mapped yet */ +if (!tags) +return ; + +WARN_ON_ONCE (refcount_read (&flush_rq->ref) !=0 ); + +for (i =0 ; i < queue_depth; i++) +cmpxchg (&tags->rqs[i], flush_rq,NULL ); + +/* +* Wait until all pending iteration is done. +* +* Request reference is cleared and it is guaranteed to be observed +* after the ->lock is released. +*/ +spin_lock_irqsave (&tags->lock, flags); +spin_unlock_irqrestore (&tags->lock, flags); +} +/* hctx->ctxs will be freed in queue's release handler */ static void blk_mq_exit_hctx (struct request_queue *q,struct blk_mq_tag_set *set,struct blk_mq_hw_ctx *hctx,unsigned int hctx_idx) { +struct request *flush_rq = hctx->fq->flush_rq; +if (blk_mq_hw_queue_mapped (hctx))blk_mq_tag_idle (hctx); +blk_mq_clear_flush_rq_mapping (set->tags[hctx_idx], + set->queue_depth, flush_rq);if (set->ops->exit_request) - set->ops->exit_request (set, hctx->fq->flush_rq, hctx_idx); + set->ops->exit_request (set, flush_rq, hctx_idx);if (set->ops->exit_hctx) set->ops->exit_hctx (hctx, hctx_idx);
block/blk.h +1 -5
@@ -44,11 +44,7 @@ static inline void __blk_get_queue(struct request_queue *q)kobject_get (&q->kobj); } -static inline bool -is_flush_rq (struct request *req,struct blk_mq_hw_ctx *hctx) -{ -return hctx->fq->flush_rq == req; -} +bool is_flush_rq (struct request *req);struct blk_flush_queue *blk_alloc_flush_queue (int node,int cmd_size,gfp_t flags);
drivers/net/ethernet/realtek/r8169_main.c +1 -0
@@ -3547,6 +3547,7 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)rtl_eri_write (tp,0x1b0 ,ERIAR_MASK_0011 ,0x0000 );rtl_pcie_state_l2l3_disable (tp); +rtl_hw_aspm_clkreq_enable (tp, true); }DECLARE_RTL_COND (rtl_mac_ocp_e00e_cond)
drivers/net/ethernet/xilinx/ll_temac_main.c +1 -3
@@ -942,10 +942,8 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)wmb (); lp->dma_out (lp,TX_TAILDESC_PTR , tail_p);/* DMA start */ -if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 )) { -netdev_info (ndev,"%s -> netif_stop_queue\n" , __func__); +if (temac_check_tx_bd_space (lp,MAX_SKB_FRAGS +1 ))netif_stop_queue (ndev); - }return NETDEV_TX_OK ; }
drivers/pci/quirks.c +6 -6
@@ -3246,12 +3246,12 @@ static void fixup_mpss_256(struct pci_dev *dev) { dev->pcie_mpss =1 ;/* 256 bytes */ } -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); -DECLARE_PCI_FIXUP_HEADER (PCI_VENDOR_ID_SOLARFLARE , -PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_0 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1 , fixup_mpss_256); +DECLARE_PCI_FIXUP_EARLY (PCI_VENDOR_ID_SOLARFLARE , +PCI_DEVICE_ID_SOLARFLARE_SFC4000B , fixup_mpss_256);/* * Intel 5000 and 5100 Memory controllers have an erratum with read completion
drivers/tty/serial/8250/8250_omap.c +13 -13
@@ -538,6 +538,11 @@ static void omap_8250_pm(struct uart_port *port, unsigned int state,static void omap_serial_fill_features_erratas (struct uart_8250_port *up,struct omap8250_priv *priv) { +const struct soc_device_attribute k3_soc_devices[] = { + { .family ="AM65X" , }, + { .family ="J721E" , .revision ="SR1.0" }, + {/* sentinel */ } + };u32 mvr, scheme;u16 revision, major, minor;
@@ -585,6 +590,14 @@ static void omap_serial_fill_features_erratas(struct uart_8250_port *up,default :break ; } + +/* +* AM65x SR1.0, AM65x SR2.0 and J721e SR1.0 don't +* don't have RHR_IT_DIS bit in IER2 register. So drop to flag +* to enable errata workaround. +*/ +if (soc_device_match (k3_soc_devices)) + priv->habit &= ~UART_HAS_RHR_IT_DIS ; }static void omap8250_uart_qos_work (struct work_struct *work)
@@ -1208,12 +1221,6 @@ static int omap8250_no_handle_irq(struct uart_port *port)return 0 ; } -static const struct soc_device_attribute k3_soc_devices[] = { - { .family ="AM65X" , }, - { .family ="J721E" , .revision ="SR1.0" }, - {/* sentinel */ } -}; -static struct omap8250_dma_params am654_dma = { .rx_size =SZ_2K , .rx_trigger =1 ,
@@ -1419,13 +1426,6 @@ static int omap8250_probe(struct platform_device *pdev) up.dma->rxconf.src_maxburst =RX_TRIGGER ; up.dma->txconf.dst_maxburst = TX_TRIGGER; } - -/* -* AM65x SR1.0, AM65x SR2.0 and J721e SR1.0 don't -* don't have RHR_IT_DIS bit in IER2 register -*/ -if (soc_device_match (k3_soc_devices)) - priv->habit &= ~UART_HAS_RHR_IT_DIS ; }#endif ret =serial8250_register_8250_port (&up);
drivers/usb/gadget/udc/tegra-xudc.c +2 -2
@@ -1610,7 +1610,7 @@ static void tegra_xudc_ep_context_setup(struct tegra_xudc_ep *ep)u16 maxpacket, maxburst =0 , esit =0 ;u32 val; - maxpacket =usb_endpoint_maxp (desc) &0x7ff ; + maxpacket =usb_endpoint_maxp (desc);if (xudc->gadget.speed ==USB_SPEED_SUPER ) {if (!usb_endpoint_xfer_control (desc)) maxburst = comp_desc->bMaxBurst;
@@ -1621,7 +1621,7 @@ static void tegra_xudc_ep_context_setup(struct tegra_xudc_ep *ep) (usb_endpoint_xfer_int(desc) || usb_endpoint_xfer_isoc(desc))) {if (xudc->gadget.speed ==USB_SPEED_HIGH ) { - maxburst = (usb_endpoint_maxp (desc) >>11 ) &0x3 ; + maxburst =usb_endpoint_maxp_mult (desc) -1 ;if (maxburst ==0x3 ) {dev_warn (xudc->dev,"invalid endpoint maxburst\n" );
drivers/usb/host/xhci-debugfs.c +10 -4
@@ -198,12 +198,13 @@ static void xhci_ring_dump_segment(struct seq_file *s,int i;dma_addr_t dma;union xhci_trb *trb; +char str[XHCI_MSG_MAX ];for (i =0 ; i <TRBS_PER_SEGMENT ; i++) { trb = &seg->trbs[i]; dma = seg->dma + i *sizeof (*trb);seq_printf (s,"%pad: %s\n" , &dma, -xhci_decode_trb (le32_to_cpu (trb->generic.field[0 ]), +xhci_decode_trb (str,XHCI_MSG_MAX ,le32_to_cpu (trb->generic.field[0 ]),le32_to_cpu (trb->generic.field[1 ]),le32_to_cpu (trb->generic.field[2 ]),le32_to_cpu (trb->generic.field[3 ])));
@@ -260,11 +261,13 @@ static int xhci_slot_context_show(struct seq_file *s, void *unused)struct xhci_slot_ctx *slot_ctx;struct xhci_slot_priv *priv = s->private;struct xhci_virt_device *dev = priv->dev; +char str[XHCI_MSG_MAX ]; xhci =hcd_to_xhci (bus_to_hcd (dev->udev->bus)); slot_ctx =xhci_get_slot_ctx (xhci, dev->out_ctx);seq_printf (s,"%pad: %s\n" , &dev->out_ctx->dma, -xhci_decode_slot_context (le32_to_cpu (slot_ctx->dev_info), +xhci_decode_slot_context (str, +le32_to_cpu (slot_ctx->dev_info),le32_to_cpu (slot_ctx->dev_info2),le32_to_cpu (slot_ctx->tt_info),le32_to_cpu (slot_ctx->dev_state)));
@@ -280,6 +283,7 @@ static int xhci_endpoint_context_show(struct seq_file *s, void *unused)struct xhci_ep_ctx *ep_ctx;struct xhci_slot_priv *priv = s->private;struct xhci_virt_device *dev = priv->dev; +char str[XHCI_MSG_MAX ]; xhci =hcd_to_xhci (bus_to_hcd (dev->udev->bus));
@@ -287,7 +291,8 @@ static int xhci_endpoint_context_show(struct seq_file *s, void *unused) ep_ctx =xhci_get_ep_ctx (xhci, dev->out_ctx, ep_index); dma = dev->out_ctx->dma + (ep_index +1 ) *CTX_SIZE (xhci->hcc_params);seq_printf (s,"%pad: %s\n" , &dma, -xhci_decode_ep_context (le32_to_cpu (ep_ctx->ep_info), +xhci_decode_ep_context (str, +le32_to_cpu (ep_ctx->ep_info),le32_to_cpu (ep_ctx->ep_info2),le64_to_cpu (ep_ctx->deq),le32_to_cpu (ep_ctx->tx_info)));
@@ -341,9 +346,10 @@ static int xhci_portsc_show(struct seq_file *s, void *unused) {struct xhci_port *port = s->private;u32 portsc; +char str[XHCI_MSG_MAX ]; portsc =readl (port->addr); -seq_printf (s,"%s\n" ,xhci_decode_portsc (portsc)); +seq_printf (s,"%s\n" ,xhci_decode_portsc (str, portsc));return 0 ; }
drivers/usb/host/xhci-rcar.c +7 -0
@@ -134,6 +134,13 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)const struct soc_device_attribute *attr;const char *firmware_name; +/* +* According to the datasheet, "Upon the completion of FW Download, +* there is no need to write or reload FW". +*/ +if (readl (regs +RCAR_USB3_DL_CTRL ) &RCAR_USB3_DL_CTRL_FW_SUCCESS ) +return 0 ; + attr =soc_device_match (rcar_quirks_match);if (attr) quirks = (uintptr_t )attr->data;
drivers/usb/host/xhci-ring.c +2 -1
@@ -1005,6 +1005,7 @@ void xhci_stop_endpoint_command_watchdog(struct timer_list *t)struct xhci_hcd *xhci = ep->xhci;unsigned long flags;u32 usbsts; +char str[XHCI_MSG_MAX ];spin_lock_irqsave (&xhci->lock, flags);
@@ -1018,7 +1019,7 @@ void xhci_stop_endpoint_command_watchdog(struct timer_list *t) usbsts =readl (&xhci->op_regs->status);xhci_warn (xhci,"xHCI host not responding to stop endpoint command.\n" ); -xhci_warn (xhci,"USBSTS:%s\n" ,xhci_decode_usbsts (usbsts)); +xhci_warn (xhci,"USBSTS:%s\n" ,xhci_decode_usbsts (str, usbsts)); ep->ep_state &= ~EP_STOP_CMD_PENDING ;
drivers/usb/host/xhci-trace.h +15 -11
@@ -25,8 +25,6 @@#include "xhci.h" #include "xhci-dbgcap.h" -#define XHCI_MSG_MAX 500 - DECLARE_EVENT_CLASS(xhci_log_msg, TP_PROTO(struct va_format *vaf), TP_ARGS(vaf),
@@ -122,6 +120,7 @@ DECLARE_EVENT_CLASS(xhci_log_trb, __field(u32, field1) __field(u32, field2) __field(u32, field3) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->type = ring->type;
@@ -131,7 +130,7 @@ DECLARE_EVENT_CLASS(xhci_log_trb, __entry->field3 =le32_to_cpu (trb->field[3 ]); ),TP_printk ("%s: %s" ,xhci_ring_type_string (__entry->type), -xhci_decode_trb (__entry->field0, __entry->field1, +xhci_decode_trb (__get_str (str),XHCI_MSG_MAX , __entry->field0, __entry->field1, __entry->field2, __entry->field3) ) );
@@ -323,6 +322,7 @@ DECLARE_EVENT_CLASS(xhci_log_ep_ctx, __field(u32, info2) __field(u64, deq) __field(u32, tx_info) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->info = le32_to_cpu(ctx->ep_info);
@@ -330,8 +330,8 @@ DECLARE_EVENT_CLASS(xhci_log_ep_ctx, __entry->deq =le64_to_cpu (ctx->deq); __entry->tx_info =le32_to_cpu (ctx->tx_info); ), -TP_printk ("%s" ,xhci_decode_ep_context (__entry->info, - __entry->info2, __entry->deq, __entry->tx_info) +TP_printk ("%s" ,xhci_decode_ep_context (__get_str (str), + __entry->info, __entry->info2, __entry->deq, __entry->tx_info) ) );
@@ -368,6 +368,7 @@ DECLARE_EVENT_CLASS(xhci_log_slot_ctx, __field(u32, info2) __field(u32, tt_info) __field(u32, state) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->info = le32_to_cpu(ctx->dev_info);
@@ -375,9 +376,9 @@ DECLARE_EVENT_CLASS(xhci_log_slot_ctx, __entry->tt_info =le64_to_cpu (ctx->tt_info); __entry->state =le32_to_cpu (ctx->dev_state); ), -TP_printk ("%s" ,xhci_decode_slot_context (__entry->info, - __entry->info2, __entry->tt_info, - __entry->state) +TP_printk ("%s" ,xhci_decode_slot_context (__get_str (str), + __entry->info, __entry->info2, + __entry->tt_info, __entry->state) ) );
@@ -432,12 +433,13 @@ DECLARE_EVENT_CLASS(xhci_log_ctrl_ctx,TP_STRUCT__entry (__field (u32 ,drop )__field (u32, add) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->drop = le32_to_cpu(ctrl_ctx->drop_flags); __entry->add =le32_to_cpu (ctrl_ctx->add_flags); ), -TP_printk ("%s" ,xhci_decode_ctrl_ctx (__entry->drop, __entry->add) +TP_printk ("%s" ,xhci_decode_ctrl_ctx (__get_str (str), __entry->drop, __entry->add) ) );
@@ -523,6 +525,7 @@ DECLARE_EVENT_CLASS(xhci_log_portsc,TP_STRUCT__entry (__field (u32 ,portnum )__field (u32, portsc) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->portnum = portnum;
@@ -530,7 +533,7 @@ DECLARE_EVENT_CLASS(xhci_log_portsc, ),TP_printk ("port-%d: %s" , __entry->portnum, -xhci_decode_portsc (__entry->portsc) +xhci_decode_portsc (__get_str (str), __entry->portsc) ) );
@@ -555,13 +558,14 @@ DECLARE_EVENT_CLASS(xhci_log_doorbell,TP_STRUCT__entry (__field (u32 ,slot )__field (u32, doorbell) +__dynamic_array (char, str,XHCI_MSG_MAX ) ),TP_fast_assign ( __entry->slot = slot; __entry->doorbell = doorbell; ),TP_printk ("Ring doorbell for %s" , -xhci_decode_doorbell (__entry->slot, __entry->doorbell) +xhci_decode_doorbell (__get_str (str), __entry->slot, __entry->doorbell) ) );
drivers/usb/host/xhci.h +36 -37
240 lines not on this page · raw message
drivers/usb/mtu3/mtu3_core.c +3 -1
@@ -227,11 +227,13 @@ void mtu3_set_speed(struct mtu3 *mtu, enum usb_device_speed speed)mtu3_setbits (mbase,U3D_POWER_MANAGEMENT ,HS_ENABLE );break ;case USB_SPEED_SUPER : +mtu3_setbits (mbase,U3D_POWER_MANAGEMENT ,HS_ENABLE );mtu3_clrbits (mtu->ippc_base,SSUSB_U3_CTRL (0 ),SSUSB_U3_PORT_SSP_SPEED );break ;case USB_SPEED_SUPER_PLUS : -mtu3_setbits (mtu->ippc_base,SSUSB_U3_CTRL (0 ), +mtu3_setbits (mbase,U3D_POWER_MANAGEMENT ,HS_ENABLE ); +mtu3_setbits (mtu->ippc_base,SSUSB_U3_CTRL (0 ),SSUSB_U3_PORT_SSP_SPEED );break ;default :
drivers/usb/mtu3/mtu3_gadget.c +2 -4
@@ -64,14 +64,12 @@ static int mtu3_ep_enable(struct mtu3_ep *mep)u32 interval =0 ;u32 mult =0 ;u32 burst =0 ; -int max_packet;int ret; desc = mep->desc; comp_desc = mep->comp_desc; mep->type =usb_endpoint_type (desc); - max_packet =usb_endpoint_maxp (desc); - mep->maxp = max_packet &GENMASK (10 ,0 ); + mep->maxp =usb_endpoint_maxp (desc);switch (mtu->g.speed) {case USB_SPEED_SUPER :
@@ -92,7 +90,7 @@ static int mtu3_ep_enable(struct mtu3_ep *mep) usb_endpoint_xfer_int(desc)) { interval = desc->bInterval; interval =clamp_val (interval,1 ,16 ) -1 ; - burst = (max_packet &GENMASK (12 ,11 )) >>11 ; + mult =usb_endpoint_maxp_mult (desc) -1 ; }break ;default :
drivers/usb/serial/mos7720.c +3 -1
@@ -226,8 +226,10 @@ static int read_mos_reg(struct usb_serial *serial, unsigned int serial_portnum,int status; buf =kmalloc (1 ,GFP_KERNEL ); -if (!buf) +if (!buf) { + *data =0 ;return -ENOMEM ; + } status =usb_control_msg (usbdev, pipe, request, requesttype, value, index, buf,1 ,MOS_WDR_TIMEOUT );
include/linux/skbuff.h +2 -2
@@ -4608,7 +4608,7 @@ static inline void skb_reset_redirect(struct sk_buff *skb)#endif } -#ifdef CONFIG_KCOV +#if IS_ENABLED (CONFIG_KCOV ) &&IS_ENABLED (CONFIG_SKB_EXTENSIONS )static inline void skb_set_kcov_handle (struct sk_buff *skb,const u64 kcov_handle) {
@@ -4636,7 +4636,7 @@ static inline u64 skb_get_kcov_handle(struct sk_buff *skb)static inline void skb_set_kcov_handle (struct sk_buff *skb,const u64 kcov_handle) { }static inline u64 skb_get_kcov_handle (struct sk_buff *skb) {return 0 ; } -#endif /* CONFIG_KCOV */ +#endif /* CONFIG_KCOV && CONFIG_SKB_EXTENSIONS */ #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */
include/uapi/linux/termios.h +0 -15
@@ -5,19 +5,4 @@#include <linux/types.h> #include <asm/termios.h> -#define NFF 5 - -struct termiox -{ -__u16 x_hflag; -__u16 x_cflag; -__u16 x_rflag[NFF ]; -__u16 x_sflag; -}; - -#define RTSXOFF 0x0001/* RTS flow control on input */ -#define CTSXON 0x0002/* CTS flow control on output */ -#define DTRXOFF 0x0004/* DTR flow control on input */ -#define DSRXON 0x0008/* DCD flow control on output */ -#endif
lib/Kconfig.debug +1 -1
@@ -1869,7 +1869,7 @@ config KCOV depends on CC_HAS_SANCOV_TRACE_PC || GCC_PLUGINS select DEBUG_FS select GCC_PLUGIN_SANCOV if !CC_HAS_SANCOV_TRACE_PC - select SKB_EXTENSIONS + select SKB_EXTENSIONS if NET help KCOV exposes kernel code coverage information in a form suitable for coverage-guided fuzzing (randomized testing).
mm/page_alloc.c +4 -4
@@ -996,7 +996,7 @@ static inline void __free_one_page(struct page *page,struct page *buddy;bool to_tail; - max_order = min_t(unsigned int, MAX_ORDER, pageblock_order + 1); + max_order = min_t(unsigned int, MAX_ORDER - 1, pageblock_order);VM_BUG_ON (!zone_is_initialized (zone));VM_BUG_ON_PAGE (page->flags &PAGE_FLAGS_CHECK_AT_PREP , page);
@@ -1009,7 +1009,7 @@ static inline void __free_one_page(struct page *page,VM_BUG_ON_PAGE (bad_range (zone, page), page); continue_merging: -while (order < max_order -1 ) { +while (order < max_order) {if (compaction_capture (capc, page, order, migratetype)) {__mod_zone_freepage_state (zone, -(1 << order), migratetype);
@@ -1035,7 +1035,7 @@ static inline void __free_one_page(struct page *page, pfn = combined_pfn; order++; } -if (max_order <MAX_ORDER ) { +if (order <MAX_ORDER -1 ) {/* If we are here, it means order is >= pageblock_order. * We want to prevent merge between freepages on isolate * pageblock and normal pageblock. Without this, pageblock
@@ -1056,7 +1056,7 @@ static inline void __free_one_page(struct page *page, is_migrate_isolate(buddy_mt))) goto done_merging; } - max_order++; + max_order = order +1 ; goto continue_merging; }
net/ipv4/igmp.c +2 -0
@@ -2720,6 +2720,7 @@ int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u rv =1 ; }else if (im) {if (src_addr) { +spin_lock_bh (&im->lock);for (psf = im->sources; psf; psf = psf->sf_next) {if (psf->sf_inaddr == src_addr)break ;
@@ -2730,6 +2731,7 @@ int ip_check_mc_rcu(struct in_device *in_dev, __be32 mc_addr, __be32 src_addr, u im->sfcount[MCAST_EXCLUDE ]; else rv = im->sfcount[MCAST_EXCLUDE ] !=0 ; +spin_unlock_bh (&im->lock); }else rv =1 ;/* unspecified source; tentatively allow */ }
net/netfilter/nf_tables_api.c +57 -32
155 lines not on this page · raw message
net/netfilter/nft_set_hash.c +5 -5
@@ -604,7 +604,7 @@ static u64 nft_hash_privsize(const struct nlattr * const nla[], const struct nft_set_desc *desc) {return sizeof (struct nft_hash ) + -nft_hash_buckets (desc->size) *sizeof (struct hlist_head ); + (u64 )nft_hash_buckets (desc->size) *sizeof (struct hlist_head ); } static int nft_hash_init(const struct nft_set *set,
@@ -644,8 +644,8 @@ static bool nft_hash_estimate(const struct nft_set_desc *desc, u32 features,return false; est->size =sizeof (struct nft_hash ) + -nft_hash_buckets (desc->size) *sizeof (struct hlist_head ) + - desc->size *sizeof (struct nft_hash_elem ); + (u64 )nft_hash_buckets (desc->size) *sizeof (struct hlist_head ) + + (u64 )desc->size *sizeof (struct nft_hash_elem ); est->lookup =NFT_SET_CLASS_O_1 ; est->space =NFT_SET_CLASS_O_N ;
@@ -662,8 +662,8 @@ static bool nft_hash_fast_estimate(const struct nft_set_desc *desc, u32 featuresreturn false; est->size =sizeof (struct nft_hash ) + -nft_hash_buckets (desc->size) *sizeof (struct hlist_head ) + - desc->size *sizeof (struct nft_hash_elem ); + (u64 )nft_hash_buckets (desc->size) *sizeof (struct hlist_head ) + + (u64 )desc->size *sizeof (struct nft_hash_elem ); est->lookup =NFT_SET_CLASS_O_1 ; est->space =NFT_SET_CLASS_O_N ;
sound/usb/quirks.c +1 -0
@@ -1896,6 +1896,7 @@ static const struct registration_quirk registration_quirks[] = {REG_QUIRK_ENTRY (0x0951 ,0x16ed ,2 ),/* Kingston HyperX Cloud Alpha S */ REG_QUIRK_ENTRY (0x0951 ,0x16ea ,2 ),/* Kingston HyperX Cloud Flight S */ REG_QUIRK_ENTRY (0x0ecb ,0x1f46 ,2 ),/* JBL Quantum 600 */ +REG_QUIRK_ENTRY (0x0ecb ,0x1f47 ,2 ),/* JBL Quantum 800 */ REG_QUIRK_ENTRY (0x0ecb ,0x2039 ,2 ),/* JBL Quantum 400 */ REG_QUIRK_ENTRY (0x0ecb ,0x203c ,2 ),/* JBL Quantum 600 */ REG_QUIRK_ENTRY(0x0ecb, 0x203e, 2), /* JBL Quantum 800 */