Linux 5.13.16
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.13.16 kernel.
All users of the 5.13 kernel series must upgrade.
The updated 5.13.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.13.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/kernel/reboot.c | 3 - block/blk-core.c | 1 block/blk-flush.c | 13 ++++ block/blk-mq.c | 37 +++++++++++++- block/blk.h | 6 -- drivers/bluetooth/btusb.c | 59 +++++++++++++--------- drivers/firmware/dmi-id.c | 6 +- drivers/net/ethernet/realtek/r8169_main.c | 1 drivers/net/ethernet/xilinx/ll_temac_main.c | 4 - drivers/pci/quirks.c | 12 ++-- drivers/usb/cdns3/cdnsp-mem.c | 2 drivers/usb/gadget/udc/tegra-xudc.c | 4 - drivers/usb/host/xhci-debugfs.c | 14 +++-- drivers/usb/host/xhci-mtk-sch.c | 10 ++- drivers/usb/host/xhci-rcar.c | 7 ++ drivers/usb/host/xhci-ring.c | 43 ++++++++++------ 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 -- net/ipv4/igmp.c | 2 sound/usb/quirks.c | 1 23 files changed, 211 insertions(+), 125 deletions(-)
Alexander Tsoy (1):
ALSA: usb-audio: Add registration quirk for JBL Quantum 800
Chunfeng Yun (6):
usb: xhci-mtk: fix issue of out-of-bounds array access
usb: cdnsp: fix the wrong mult value for HS isoc or intr
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
Esben Haabendal (1):
net: ll_temac: Remove left-over debug message
Greg Kroah-Hartman (1):
Linux 5.13.16
Hans de Goede (1):
firmware: dmi: Move product_sku info to the end of the modalias
Hayes Wang (1):
Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM"
Ismael Ferreras Morezuelas (1):
Bluetooth: btusb: Make the CSR clone chip force-suspend workaround more generic
Larry Finger (1):
Bluetooth: Add additional Bluetooth part for Realtek 8852AE
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 (3):
xhci: fix even more unsafe memory usage in xhci tracing
xhci: fix unsafe memory usage in xhci tracing
xhci: Fix failure to give back some cached cancelled URBs.
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[]
Paul Gortmaker (1):
x86/reboot: Limit Dell Optiplex 990 quirk to early BIOS versions
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 = 13 -SUBLEVEL = 15 +SUBLEVEL = 16 EXTRAVERSION = NAME = Opossums on Parade
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
@@ -122,7 +122,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
@@ -262,6 +262,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
@@ -329,6 +334,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
@@ -911,7 +911,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);
@@ -2620,16 +2620,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/bluetooth/btusb.c +34 -25
88 lines not on this page · raw message
drivers/firmware/dmi-id.c +5 -1
@@ -73,6 +73,10 @@ static void ascii_filter(char *d, const char *s)static ssize_t get_modalias (char *buffer,size_t buffer_size) { +/* +* Note new fields need to be added at the end to keep compatibility +* with udev's hwdb which does matches on "`cat dmi/id/modalias`*". +*/ static const struct mafield { const char *prefix; int field;
@@ -85,13 +89,13 @@ static ssize_t get_modalias(char *buffer, size_t buffer_size) { "svn", DMI_SYS_VENDOR }, { "pn", DMI_PRODUCT_NAME }, { "pvr", DMI_PRODUCT_VERSION }, - { "sku", DMI_PRODUCT_SKU }, { "rvn", DMI_BOARD_VENDOR }, { "rn", DMI_BOARD_NAME }, { "rvr", DMI_BOARD_VERSION }, { "cvn", DMI_CHASSIS_VENDOR }, { "ct", DMI_CHASSIS_TYPE }, { "cvr", DMI_CHASSIS_VERSION }, + { "sku", DMI_PRODUCT_SKU }, { NULL, DMI_NONE } };
drivers/net/ethernet/realtek/r8169_main.c +1 -0
@@ -3510,6 +3510,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
@@ -3235,12 +3235,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/usb/cdns3/cdnsp-mem.c +1 -1
@@ -882,7 +882,7 @@ static u32 cdnsp_get_endpoint_max_burst(struct usb_gadget *g,if (g->speed ==USB_SPEED_HIGH && (usb_endpoint_xfer_isoc (pep->endpoint.desc) ||usb_endpoint_xfer_int (pep->endpoint.desc))) -return (usb_endpoint_maxp (pep->endpoint.desc) &0x1800 ) >>11 ; +return usb_endpoint_maxp_mult (pep->endpoint.desc) -1 ;return 0 ; }
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-mtk-sch.c +6 -4
@@ -590,10 +590,12 @@ static u32 get_esit_boundary(struct mu3h_sch_ep_info *sch_ep)u32 boundary = sch_ep->esit;if (sch_ep->sch_tt) {/* LS/FS with TT */ -/* tune for CS */ -if (sch_ep->ep_type !=ISOC_OUT_EP ) - boundary++; -else if (boundary >1 )/* normally esit >= 8 for FS/LS */ +/* +* tune for CS, normally esit >= 8 for FS/LS, +* not add one for other types to avoid access array +* out of boundary +*/ +if (sch_ep->ep_type ==ISOC_OUT_EP && boundary >1 ) boundary--; }
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 +27 -16
75 lines not on this page · raw message
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 :
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 */ }
sound/usb/quirks.c +1 -0
@@ -1898,6 +1898,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 */