Linux 5.15.74
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.74 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 arch/powerpc/include/asm/paca.h | 1 arch/powerpc/include/asm/rtas.h | 1 arch/powerpc/kernel/paca.c | 32 --- arch/powerpc/kernel/rtas.c | 54 ------ arch/powerpc/sysdev/xics/ics-rtas.c | 22 +- drivers/char/mem.c | 4 drivers/char/random.c | 25 ++ drivers/crypto/qat/qat_common/qat_asym_algs.c | 12 - drivers/input/joystick/xpad.c | 20 ++ drivers/misc/pci_endpoint_test.c | 34 +++- drivers/net/wireless/mac80211_hwsim.c | 2 drivers/scsi/stex.c | 17 +- drivers/usb/serial/qcserial.c | 1 fs/ceph/file.c | 10 - fs/nilfs2/inode.c | 19 ++ fs/nilfs2/segment.c | 21 +- include/scsi/scsi_cmnd.h | 2 net/mac80211/agg-rx.c | 14 - net/mac80211/ibss.c | 33 ++- net/mac80211/ieee80211_i.h | 40 ++-- net/mac80211/mesh.c | 87 +++++----- net/mac80211/mesh_hwmp.c | 44 ++--- net/mac80211/mesh_plink.c | 11 - net/mac80211/mesh_sync.c | 26 +-- net/mac80211/mlme.c | 218 ++++++++++++++------------ net/mac80211/rx.c | 12 - net/mac80211/scan.c | 16 + net/mac80211/tdls.c | 63 ++++--- net/mac80211/util.c | 53 +++--- net/wireless/scan.c | 77 +++++---- security/integrity/platform_certs/load_uefi.c | 2 sound/pci/hda/hda_intel.c | 3 33 files changed, 535 insertions(+), 443 deletions(-)
Cameron Gutman (1):
Input: xpad - fix wireless 360 controller breaking after suspend
Frank Wunderlich (1):
USB: serial: qcserial: add new usb-id for Dell branded EM7455
Giovanni Cabiddu (1):
Revert "crypto: qat - reduce size of mapped region"
Greg Kroah-Hartman (1):
Linux 5.15.74
Hu Weiwen (1):
ceph: don't truncate file in atomic_open
Jason A. Donenfeld (4):
random: restore O_NONBLOCK support
random: clamp credited irq bits to maximum mixed
random: avoid reading two cache lines on irq randomness
random: use expired timer rather than wq for mixing fast pool
Johannes Berg (14):
wifi: cfg80211: fix u8 overflow in cfg80211_update_notlisted_nontrans()
wifi: cfg80211/mac80211: reject bad MBSSID elements
wifi: cfg80211: ensure length byte is present before access
wifi: cfg80211: fix BSS refcounting bugs
wifi: cfg80211: avoid nontransmitted BSS list corruption
wifi: mac80211_hwsim: avoid mac80211 warning on bad rate
wifi: mac80211: fix crash in beacon protection for P2P-device
wifi: cfg80211: update hidden BSSes to avoid WARN_ON
mac80211: mesh: clean up rx_bcn_presp API
mac80211: move CRC into struct ieee802_11_elems
mac80211: mlme: find auth challenge directly
mac80211: always allocate struct ieee802_11_elems
mac80211: fix memory leaks with element parsing
wifi: mac80211: fix MBSSID parsing use-after-free
Linus Torvalds (1):
scsi: stex: Properly zero out the passthrough command structure
Nathan Lynch (1):
Revert "powerpc/rtas: Implement reentrant rtas call"
Orlando Chamberlain (1):
efi: Correct Macmini DMI match in uefi cert quirk
Pavel Rojtberg (1):
Input: xpad - add supported devices as contributed on github
Ryusuke Konishi (4):
nilfs2: fix NULL pointer dereference at nilfs_bmap_lookup_at_level()
nilfs2: fix use-after-free bug of struct nilfs_root
nilfs2: fix leak of nilfs_root in case of writer thread creation failure
nilfs2: replace WARN_ONs by nilfs_error for checkpoint acquisition failure
Shunsuke Mie (2):
misc: pci_endpoint_test: Aggregate params checking for xfer
misc: pci_endpoint_test: Fix pci_endpoint_test_{copy,write,read}() panic
Takashi Iwai (1):
ALSA: hda: Fix position reporting on Poulsbo
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 73 +SUBLEVEL = 74 EXTRAVERSION = NAME = Trick or Treat
arch/powerpc/include/asm/paca.h +0 -1
@@ -263,7 +263,6 @@ struct paca_struct {u64 l1d_flush_size;#endif #ifdef CONFIG_PPC_PSERIES -struct rtas_args *rtas_args_reentrant;u8 *mce_data_buf;/* buffer to hold per cpu rtas errlog */ #endif /* CONFIG_PPC_PSERIES */
arch/powerpc/include/asm/rtas.h +0 -1
@@ -240,7 +240,6 @@ extern struct rtas_t rtas;extern int rtas_token (const char *service);extern int rtas_service_present (const char *service);extern int rtas_call (int token,int ,int ,int *, ...); -int rtas_call_reentrant (int token,int nargs,int nret,int *outputs, ...);void rtas_call_unlocked (struct rtas_args *args,int token,int nargs,int nret, ...);extern void __noreturn rtas_restart (char *cmd);
arch/powerpc/kernel/paca.c +0 -32
@@ -16,7 +16,6 @@#include <asm/kexec.h> #include <asm/svm.h> #include <asm/ultravisor.h> -#include <asm/rtas.h> #include "setup.h"
@@ -172,30 +171,6 @@ static struct slb_shadow * __init new_slb_shadow(int cpu, unsigned long limit)#endif /* CONFIG_PPC_BOOK3S_64 */ -#ifdef CONFIG_PPC_PSERIES -/** -* new_rtas_args() - Allocates rtas args -* @cpu: CPU number -* @limit: Memory limit for this allocation -* -* Allocates a struct rtas_args and return it's pointer, -* if not in Hypervisor mode -* -* Return: Pointer to allocated rtas_args -* NULL if CPU in Hypervisor Mode -*/ -static struct rtas_args *__init new_rtas_args (int cpu,unsigned long limit) -{ - limit = min_t(unsigned long, limit, RTAS_INSTANTIATE_MAX); - -if (early_cpu_has_feature (CPU_FTR_HVMODE )) -return NULL ; - -return alloc_paca_data (sizeof (struct rtas_args ),L1_CACHE_BYTES , - limit, cpu); -} -#endif /* CONFIG_PPC_PSERIES */ -/* The Paca is an array with one entry per processor. Each contains an * lppaca, which contains the information shared between the * hypervisor and Linux.
@@ -234,10 +209,6 @@ void __init initialise_paca(struct paca_struct *new_paca, int cpu)/* For now -- if we have threads this will be adjusted later */ new_paca->tcd_ptr = &new_paca->tcd;#endif - -#ifdef CONFIG_PPC_PSERIES - new_paca->rtas_args_reentrant =NULL ; -#endif }/* Put the paca pointer into r13 and SPRG_PACA */
@@ -309,9 +280,6 @@ void __init allocate_paca(int cpu)#endif #ifdef CONFIG_PPC_BOOK3S_64 paca->slb_shadow_ptr =new_slb_shadow (cpu, limit); -#endif -#ifdef CONFIG_PPC_PSERIES - paca->rtas_args_reentrant =new_rtas_args (cpu, limit);#endif paca_struct_size +=sizeof (struct paca_struct ); }
arch/powerpc/kernel/rtas.c +0 -54
66 lines not on this page · raw message
arch/powerpc/sysdev/xics/ics-rtas.c +11 -11
@@ -37,8 +37,8 @@ static void ics_rtas_unmask_irq(struct irq_data *d) server =xics_get_irq_server (d->irq,irq_data_get_affinity_mask (d),0 ); - call_status =rtas_call_reentrant (ibm_set_xive,3 ,1 ,NULL , hw_irq, - server,DEFAULT_PRIORITY ); + call_status =rtas_call (ibm_set_xive,3 ,1 ,NULL , hw_irq, server, +DEFAULT_PRIORITY );if (call_status !=0 ) { printk(KERN_ERR "%s: ibm_set_xive irq %u server %x returned %d\n",
@@ -47,7 +47,7 @@ static void ics_rtas_unmask_irq(struct irq_data *d) }/* Now unmask the interrupt (often a no-op) */ - call_status =rtas_call_reentrant (ibm_int_on,1 ,1 ,NULL , hw_irq); + call_status =rtas_call (ibm_int_on,1 ,1 ,NULL , hw_irq);if (call_status !=0 ) {printk (KERN_ERR "%s: ibm_int_on irq=%u returned %d\n" , __func__, hw_irq, call_status);
@@ -69,7 +69,7 @@ static void ics_rtas_mask_real_irq(unsigned int hw_irq)if (hw_irq ==XICS_IPI )return ; - call_status =rtas_call_reentrant (ibm_int_off,1 ,1 ,NULL , hw_irq); + call_status =rtas_call (ibm_int_off,1 ,1 ,NULL , hw_irq);if (call_status !=0 ) {printk (KERN_ERR "%s: ibm_int_off irq=%u returned %d\n" , __func__, hw_irq, call_status);
@@ -77,8 +77,8 @@ static void ics_rtas_mask_real_irq(unsigned int hw_irq) }/* Have to set XIVE to 0xff to be able to remove a slot */ - call_status =rtas_call_reentrant (ibm_set_xive,3 ,1 ,NULL , hw_irq, - xics_default_server,0xff ); + call_status =rtas_call (ibm_set_xive,3 ,1 ,NULL , hw_irq, + xics_default_server,0xff );if (call_status !=0 ) {printk (KERN_ERR "%s: ibm_set_xive(0xff) irq=%u returned %d\n" , __func__, hw_irq, call_status);
@@ -109,7 +109,7 @@ static int ics_rtas_set_affinity(struct irq_data *d,if (hw_irq ==XICS_IPI || hw_irq ==XICS_IRQ_SPURIOUS )return -1 ; - status =rtas_call_reentrant (ibm_get_xive,1 ,3 , xics_status, hw_irq); + status =rtas_call (ibm_get_xive,1 ,3 , xics_status, hw_irq);if (status) { printk(KERN_ERR "%s: ibm,get-xive irq=%u returns %d\n",
@@ -127,8 +127,8 @@ static int ics_rtas_set_affinity(struct irq_data *d,pr_debug ("%s: irq %d [hw 0x%x] server: 0x%x\n" , __func__, d->irq, hw_irq, irq_server); - status =rtas_call_reentrant (ibm_set_xive,3 ,1 ,NULL , - hw_irq, irq_server, xics_status[1 ]); + status =rtas_call (ibm_set_xive,3 ,1 ,NULL , + hw_irq, irq_server, xics_status[1 ]);if (status) { printk(KERN_ERR "%s: ibm,set-xive irq=%u returns %d\n",
@@ -159,7 +159,7 @@ static int ics_rtas_check(struct ics *ics, unsigned int hw_irq)return -EINVAL ;/* Check if RTAS knows about this interrupt */ - rc =rtas_call_reentrant (ibm_get_xive,1 ,3 , status, hw_irq); + rc =rtas_call (ibm_get_xive,1 ,3 , status, hw_irq);if (rc)return -ENXIO ;
@@ -175,7 +175,7 @@ static long ics_rtas_get_server(struct ics *ics, unsigned long vec) {int rc, status[2 ]; - rc =rtas_call_reentrant (ibm_get_xive,1 ,3 , status, vec); + rc =rtas_call (ibm_get_xive,1 ,3 , status, vec);if (rc)return -1 ;return status[0 ];
drivers/char/mem.c +2 -2
@@ -702,8 +702,8 @@ static const struct memdev { #endif [5] = { "zero", 0666, &zero_fops, 0 }, [7] = { "full", 0666, &full_fops, 0 }, - [8] = { "random", 0666, &random_fops, 0 }, - [9 ] = {"urandom" ,0666 , &urandom_fops,0 }, + [8] = { "random", 0666, &random_fops, FMODE_NOWAIT }, + [9 ] = {"urandom" ,0666 , &urandom_fops,FMODE_NOWAIT }, #ifdef CONFIG_PRINTK [11] = { "kmsg", 0644, &kmsg_fops, 0 }, #endif
drivers/char/random.c +17 -8
@@ -894,20 +894,23 @@ void __init add_bootloader_randomness(const void *buf, size_t len) }struct fast_pool { -struct work_struct mix;unsigned long pool[4 ];unsigned long last;unsigned int count; +struct timer_list mix; }; +static void mix_interrupt_randomness (struct timer_list *work); + static DEFINE_PER_CPU(struct fast_pool, irq_randomness) = { #ifdef CONFIG_64BIT #define FASTMIX_PERM SIPHASH_PERMUTATION - .pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 } + .pool = { SIPHASH_CONST_0, SIPHASH_CONST_1, SIPHASH_CONST_2, SIPHASH_CONST_3 }, #else #define FASTMIX_PERM HSIPHASH_PERMUTATION - .pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 } + .pool = { HSIPHASH_CONST_0, HSIPHASH_CONST_1, HSIPHASH_CONST_2, HSIPHASH_CONST_3 }, #endif + .mix = __TIMER_INITIALIZER(mix_interrupt_randomness, 0) }; /*
@@ -949,7 +952,7 @@ int __cold random_online_cpu(unsigned int cpu) }#endif -static void mix_interrupt_randomness (struct work_struct *work) +static void mix_interrupt_randomness (struct timer_list *work) { struct fast_pool *fast_pool = container_of(work, struct fast_pool, mix);/*
@@ -980,7 +983,7 @@ static void mix_interrupt_randomness(struct work_struct *work)local_irq_enable ();mix_pool_bytes (pool,sizeof (pool)); -credit_init_bits (max (1u , (count &U16_MAX ) /64 )); + credit_init_bits(clamp_t(unsigned int, (count & U16_MAX) / 64, 1, sizeof(pool) * 8));memzero_explicit (pool,sizeof (pool)); }
@@ -1003,10 +1006,11 @@ void add_interrupt_randomness(int irq)if (new_count <1024 && !time_is_before_jiffies (fast_pool->last +HZ ))return ; -if (unlikely (!fast_pool->mix.func)) -INIT_WORK (&fast_pool->mix, mix_interrupt_randomness); fast_pool->count |=MIX_INFLIGHT ; -queue_work_on (raw_smp_processor_id (), system_highpri_wq, &fast_pool->mix); +if (!timer_pending (&fast_pool->mix)) { + fast_pool->mix.expires = jiffies; +add_timer_on (&fast_pool->mix,raw_smp_processor_id ()); + } }EXPORT_SYMBOL_GPL (add_interrupt_randomness);
@@ -1298,6 +1302,11 @@ static ssize_t random_read_iter(struct kiocb *kiocb, struct iov_iter *iter) {int ret; +if (!crng_ready () && + ((kiocb->ki_flags & (IOCB_NOWAIT |IOCB_NOIO )) || + (kiocb->ki_filp->f_flags &O_NONBLOCK ))) +return -EAGAIN ; + ret =wait_for_random_bytes ();if (ret !=0 )return ret;
drivers/crypto/qat/qat_common/qat_asym_algs.c +6 -6
@@ -332,13 +332,13 @@ static int qat_dh_compute_value(struct kpp_request *req) qat_req->out.dh.out_tab[1 ] =0 ;/* Mapping in.in.b or in.in_g2.xa is the same */ qat_req->phy_in =dma_map_single (dev, &qat_req->in.dh.in.b, -sizeof (qat_req->in.dh.in.b), +sizeof (struct qat_dh_input_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_in))) goto unmap_dst; qat_req->phy_out =dma_map_single (dev, &qat_req->out.dh.r, -sizeof (qat_req->out.dh.r), +sizeof (struct qat_dh_output_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_out))) goto unmap_in_params;
@@ -728,13 +728,13 @@ static int qat_rsa_enc(struct akcipher_request *req) qat_req->in.rsa.in_tab[3 ] =0 ; qat_req->out.rsa.out_tab[1 ] =0 ; qat_req->phy_in =dma_map_single (dev, &qat_req->in.rsa.enc.m, -sizeof (qat_req->in.rsa.enc.m), +sizeof (struct qat_rsa_input_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_in))) goto unmap_dst; qat_req->phy_out =dma_map_single (dev, &qat_req->out.rsa.enc.c, -sizeof (qat_req->out.rsa.enc.c), +sizeof (struct qat_rsa_output_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_out))) goto unmap_in_params;
@@ -873,13 +873,13 @@ static int qat_rsa_dec(struct akcipher_request *req) qat_req->in.rsa.in_tab[3 ] =0 ; qat_req->out.rsa.out_tab[1 ] =0 ; qat_req->phy_in =dma_map_single (dev, &qat_req->in.rsa.dec.c, -sizeof (qat_req->in.rsa.dec.c), +sizeof (struct qat_rsa_input_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_in))) goto unmap_dst; qat_req->phy_out =dma_map_single (dev, &qat_req->out.rsa.dec.m, -sizeof (qat_req->out.rsa.dec.m), +sizeof (struct qat_rsa_output_params ),DMA_TO_DEVICE );if (unlikely (dma_mapping_error (dev, qat_req->phy_out))) goto unmap_in_params;
drivers/input/joystick/xpad.c +19 -1
@@ -113,6 +113,8 @@ static const struct xpad_device {u8 xtype; } xpad_device[] = { { 0x0079, 0x18d4, "GPD Win 2 X-Box Controller", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff01, "Wooting One (Legacy)", 0, XTYPE_XBOX360 }, + { 0x03eb, 0xff02, "Wooting Two (Legacy)", 0, XTYPE_XBOX360 }, { 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX }, { 0x044f, 0x0f07, "Thrustmaster, Inc. Controller", 0, XTYPE_XBOX },
@@ -244,6 +246,7 @@ static const struct xpad_device { { 0x0f0d, 0x0063, "Hori Real Arcade Pro Hayabusa (USA) Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f0d, 0x0067, "HORIPAD ONE", 0, XTYPE_XBOXONE }, { 0x0f0d, 0x0078, "Hori Real Arcade Pro V Kai Xbox One", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, + { 0x0f0d, 0x00c5, "Hori Fighting Commander ONE", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x0f30, 0x010b, "Philips Recoil", 0, XTYPE_XBOX }, { 0x0f30, 0x0202, "Joytech Advanced Controller", 0, XTYPE_XBOX }, { 0x0f30, 0x8888, "BigBen XBMiniPad Controller", 0, XTYPE_XBOX },
@@ -260,6 +263,7 @@ static const struct xpad_device { { 0x1430, 0x8888, "TX6500+ Dance Pad (first generation)", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX }, { 0x1430, 0xf801, "RedOctane Controller", 0, XTYPE_XBOX360 }, { 0x146b, 0x0601, "BigBen Interactive XBOX 360 Controller", 0, XTYPE_XBOX360 }, + { 0x146b, 0x0604, "Bigben Interactive DAIJA Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x1532, 0x0037, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x1532, 0x0a00, "Razer Atrox Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, { 0x1532, 0x0a03, "Razer Wildcat", 0, XTYPE_XBOXONE },
@@ -325,6 +329,7 @@ static const struct xpad_device { { 0x24c6, 0x5502, "Hori Fighting Stick VX Alt", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5503, "Hori Fighting Edge", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x5506, "Hori SOULCALIBUR V Stick", 0, XTYPE_XBOX360 }, + { 0x24c6, 0x5510, "Hori Fighting Commander ONE (Xbox 360/PC Mode)", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x550d, "Hori GEM Xbox controller", 0, XTYPE_XBOX360 }, { 0x24c6, 0x550e, "Hori Real Arcade Pro V Kai 360", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, { 0x24c6, 0x551a, "PowerA FUSION Pro Controller", 0, XTYPE_XBOXONE },
@@ -334,6 +339,14 @@ static const struct xpad_device { { 0x24c6, 0x5b03, "Thrustmaster Ferrari 458 Racing Wheel", 0, XTYPE_XBOX360 }, { 0x24c6, 0x5d04, "Razer Sabertooth", 0, XTYPE_XBOX360 }, { 0x24c6, 0xfafe, "Rock Candy Gamepad for Xbox 360", 0, XTYPE_XBOX360 }, + { 0x2563, 0x058d, "OneXPlayer Gamepad", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x2000, "8BitDo Pro 2 Wired Controller fox Xbox", 0, XTYPE_XBOXONE }, + { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1220, "Wooting Two HE", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1300, "Wooting 60HE (AVR)", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1310, "Wooting 60HE (ARM)", 0, XTYPE_XBOX360 }, { 0x3285, 0x0607, "Nacon GC-100", 0, XTYPE_XBOX360 }, { 0x3767, 0x0101, "Fanatec Speedster 3 Forceshock Wheel", 0, XTYPE_XBOX }, { 0xffff, 0xffff, "Chinese-made Xbox Controller", 0, XTYPE_XBOX },
@@ -419,6 +432,7 @@ static const signed short xpad_abs_triggers[] = {static const struct usb_device_id xpad_table[] = { {USB_INTERFACE_INFO ('X' ,'B' ,0 ) },/* X-Box USB-IF not approved class */ XPAD_XBOX360_VENDOR (0x0079 ),/* GPD Win 2 Controller */ +XPAD_XBOX360_VENDOR (0x03eb ),/* Wooting Keyboards (Legacy) */ XPAD_XBOX360_VENDOR (0x044f ),/* Thrustmaster X-Box 360 controllers */ XPAD_XBOX360_VENDOR (0x045e ),/* Microsoft X-Box 360 controllers */ XPAD_XBOXONE_VENDOR (0x045e ),/* Microsoft X-Box One controllers */
@@ -429,6 +443,7 @@ static const struct usb_device_id xpad_table[] = { { USB_DEVICE(0x0738, 0x4540) }, /* Mad Catz Beat Pad */XPAD_XBOXONE_VENDOR (0x0738 ),/* Mad Catz FightStick TE 2 */ XPAD_XBOX360_VENDOR (0x07ff ),/* Mad Catz GamePad */ +XPAD_XBOX360_VENDOR (0x0c12 ),/* Zeroplus X-Box 360 controllers */ XPAD_XBOX360_VENDOR (0x0e6f ),/* 0x0e6f X-Box 360 controllers */ XPAD_XBOXONE_VENDOR (0x0e6f ),/* 0x0e6f X-Box One controllers */ XPAD_XBOX360_VENDOR(0x0f0d), /* Hori Controllers */
@@ -450,8 +465,12 @@ static const struct usb_device_id xpad_table[] = {XPAD_XBOXONE_VENDOR (0x20d6 ),/* PowerA Controllers */ XPAD_XBOX360_VENDOR (0x24c6 ),/* PowerA Controllers */ XPAD_XBOXONE_VENDOR (0x24c6 ),/* PowerA Controllers */ +XPAD_XBOX360_VENDOR (0x2563 ),/* OneXPlayer Gamepad */ +XPAD_XBOX360_VENDOR (0x260d ),/* Dareu H101 */ +XPAD_XBOXONE_VENDOR (0x2dc8 ),/* 8BitDo Pro 2 Wired Controller for Xbox */ XPAD_XBOXONE_VENDOR (0x2e24 ),/* Hyperkin Duke X-Box One pad */ XPAD_XBOX360_VENDOR (0x2f24 ),/* GameSir Controllers */ +XPAD_XBOX360_VENDOR (0x31e3 ),/* Wooting Keyboards */ XPAD_XBOX360_VENDOR(0x3285), /* Nacon GC-100 */ { } };
@@ -1972,7 +1991,6 @@ static struct usb_driver xpad_driver = { .disconnect = xpad_disconnect, .suspend = xpad_suspend, .resume = xpad_resume, - .reset_resume = xpad_resume, .id_table = xpad_table, };
drivers/misc/pci_endpoint_test.c +28 -6
@@ -332,6 +332,22 @@ static bool pci_endpoint_test_msi_irq(struct pci_endpoint_test *test,return false; } +static int pci_endpoint_test_validate_xfer_params (struct device *dev, +struct pci_endpoint_test_xfer_param *param,size_t alignment) +{ +if (!param->size) { +dev_dbg (dev,"Data size is zero\n" ); +return -EINVAL ; + } + +if (param->size >SIZE_MAX - alignment) { +dev_dbg (dev,"Maximum transfer data size exceeded\n" ); +return -EINVAL ; + } + +return 0 ; +} +static bool pci_endpoint_test_copy (struct pci_endpoint_test *test,unsigned long arg) {
@@ -363,9 +379,11 @@ static bool pci_endpoint_test_copy(struct pci_endpoint_test *test,return false; } + err =pci_endpoint_test_validate_xfer_params (dev, ¶m, alignment); +if (err) +return false; + size = param.size; -if (size >SIZE_MAX - alignment) - goto err; use_dma = !!(param.flags &PCITEST_FLAGS_USE_DMA );if (use_dma)
@@ -497,9 +515,11 @@ static bool pci_endpoint_test_write(struct pci_endpoint_test *test,return false; } + err =pci_endpoint_test_validate_xfer_params (dev, ¶m, alignment); +if (err) +return false; + size = param.size; -if (size >SIZE_MAX - alignment) - goto err; use_dma = !!(param.flags &PCITEST_FLAGS_USE_DMA );if (use_dma)
@@ -595,9 +615,11 @@ static bool pci_endpoint_test_read(struct pci_endpoint_test *test,return false; } + err =pci_endpoint_test_validate_xfer_params (dev, ¶m, alignment); +if (err) +return false; + size = param.size; -if (size >SIZE_MAX - alignment) - goto err; use_dma = !!(param.flags &PCITEST_FLAGS_USE_DMA );if (use_dma)
drivers/net/wireless/mac80211_hwsim.c +2 -0
@@ -3749,6 +3749,8 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2, rx_status.band = channel->band; rx_status.rate_idx =nla_get_u32 (info->attrs[HWSIM_ATTR_RX_RATE ]); +if (rx_status.rate_idx >= data2->hw->wiphy->bands[rx_status.band]->n_bitrates) + goto out; rx_status.signal =nla_get_u32 (info->attrs[HWSIM_ATTR_SIGNAL ]); hdr = (void *)skb->data;
drivers/scsi/stex.c +9 -8
@@ -665,16 +665,17 @@ stex_queuecommand_lck(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *))return 0 ;case PASSTHRU_CMD :if (cmd->cmnd[1 ] ==PASSTHRU_GET_DRVVER ) { -struct st_drvver ver; +const struct st_drvver ver = { + .major =ST_VER_MAJOR , + .minor =ST_VER_MINOR , + .oem =ST_OEM , + .build =ST_BUILD_VER , + .signature[0 ] =PASSTHRU_SIGNATURE , + .console_id = host->max_id -1 , + .host_no = hba->host->host_no, + };size_t cp_len =sizeof (ver); - ver.major =ST_VER_MAJOR ; - ver.minor =ST_VER_MINOR ; - ver.oem =ST_OEM ; - ver.build =ST_BUILD_VER ; - ver.signature[0 ] =PASSTHRU_SIGNATURE ; - ver.console_id = host->max_id -1 ; - ver.host_no = hba->host->host_no; cp_len =scsi_sg_copy_from_buffer (cmd, &ver, cp_len);if (sizeof (ver) == cp_len) cmd->result =DID_OK <<16 ;
drivers/usb/serial/qcserial.c +1 -0
@@ -177,6 +177,7 @@ static const struct usb_device_id id_table[] = { {DEVICE_SWI(0x413c, 0x81b3)}, /* Dell Wireless 5809e Gobi(TM) 4G LTE Mobile Broadband Card (rev3) */ {DEVICE_SWI(0x413c, 0x81b5)}, /* Dell Wireless 5811e QDL */ {DEVICE_SWI(0x413c, 0x81b6)}, /* Dell Wireless 5811e QDL */ + {DEVICE_SWI(0x413c, 0x81c2)}, /* Dell Wireless 5811e */ {DEVICE_SWI(0x413c, 0x81cb)}, /* Dell Wireless 5816e QDL */ {DEVICE_SWI(0x413c, 0x81cc)}, /* Dell Wireless 5816e */ {DEVICE_SWI(0x413c, 0x81cf)}, /* Dell Wireless 5819 */
fs/ceph/file.c +7 -3
@@ -703,6 +703,12 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry,if (dentry->d_name.len >NAME_MAX )return -ENAMETOOLONG ; +/* +* Do not truncate the file, since atomic_open is called before the +* permission check. The caller will do the truncation afterward. +*/ + flags &= ~O_TRUNC ; +if (flags &O_CREAT ) {if (ceph_quota_is_max_files_exceeded (dir))return -EDQUOT ;
@@ -770,9 +776,7 @@ int ceph_atomic_open(struct inode *dir, struct dentry *dentry, }set_bit (CEPH_MDS_R_PARENT_LOCKED , &req->r_req_flags); - err =ceph_mdsc_do_request (mdsc, - (flags & (O_CREAT |O_TRUNC )) ? dir :NULL , - req); + err =ceph_mdsc_do_request (mdsc, (flags &O_CREAT ) ? dir :NULL , req);if (err == -ENOENT ) { dentry =ceph_handle_snapdir (req, dentry);if (IS_ERR (dentry)) {
fs/nilfs2/inode.c +18 -1
@@ -332,6 +332,7 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode)struct inode *inode;struct nilfs_inode_info *ii;struct nilfs_root *root; +struct buffer_head *bh;int err = -ENOMEM ;ino_t ino;
@@ -347,11 +348,25 @@ struct inode *nilfs_new_inode(struct inode *dir, umode_t mode) ii->i_state =BIT (NILFS_I_NEW ); ii->i_root = root; - err =nilfs_ifile_create_inode (root->ifile, &ino, &ii->i_bh); + err =nilfs_ifile_create_inode (root->ifile, &ino, &bh);if (unlikely (err)) goto failed_ifile_create_inode;/* reference count of i_bh inherits from nilfs_mdt_read_block() */ +if (unlikely (ino <NILFS_USER_INO )) { +nilfs_warn (sb, +"inode bitmap is inconsistent for reserved inodes" ); +do { +brelse (bh); + err =nilfs_ifile_create_inode (root->ifile, &ino, &bh); +if (unlikely (err)) + goto failed_ifile_create_inode; + }while (ino <NILFS_USER_INO ); + +nilfs_info (sb,"repaired inode bitmap for reserved inodes" ); + } + ii->i_bh = bh; +atomic64_inc (&root->inodes_count);inode_init_owner (&init_user_ns, inode, dir, mode); inode->i_ino = ino;
@@ -444,6 +459,8 @@ int nilfs_read_inode_common(struct inode *inode, inode->i_atime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); inode->i_ctime.tv_nsec =le32_to_cpu (raw_inode->i_ctime_nsec); inode->i_mtime.tv_nsec =le32_to_cpu (raw_inode->i_mtime_nsec); +if (nilfs_is_metadata_file_inode (inode) && !S_ISREG (inode->i_mode)) +return -EIO ;/* this inode is for metadata and corrupted */ if (inode->i_nlink ==0 )return -ESTALE ;/* this inode is deleted */
fs/nilfs2/segment.c +13 -8
@@ -875,9 +875,11 @@ static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci)nilfs_mdt_mark_dirty (nilfs->ns_cpfile);nilfs_cpfile_put_checkpoint ( nilfs->ns_cpfile, nilfs->ns_cno, bh_cp); - }else -WARN_ON (err == -EINVAL || err == -ENOENT ); - + }else if (err == -EINVAL || err == -ENOENT ) { +nilfs_error (sci->sc_super, +"checkpoint creation failed due to metadata corruption." ); + err = -EIO ; + }return err; }
@@ -891,7 +893,11 @@ static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci) err =nilfs_cpfile_get_checkpoint (nilfs->ns_cpfile, nilfs->ns_cno,0 , &raw_cp, &bh_cp);if (unlikely (err)) { -WARN_ON (err == -EINVAL || err == -ENOENT ); +if (err == -EINVAL || err == -ENOENT ) { +nilfs_error (sci->sc_super, +"checkpoint finalization failed due to metadata corruption." ); + err = -EIO ; + } goto failed_ibh; } raw_cp->cp_snapshot_list.ssl_next =0 ;
@@ -2786,10 +2792,9 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root)inode_attach_wb (nilfs->ns_bdev->bd_inode,NULL ); err =nilfs_segctor_start_thread (nilfs->ns_writer); -if (err) { -kfree (nilfs->ns_writer); - nilfs->ns_writer =NULL ; - } +if (unlikely (err)) +nilfs_detach_log_writer (sb); +return err; }
include/scsi/scsi_cmnd.h +1 -1
@@ -211,7 +211,7 @@ static inline unsigned int scsi_get_resid(struct scsi_cmnd *cmd)for_each_sg (scsi_sglist (cmd), sg, nseg, __i) static inline int scsi_sg_copy_from_buffer(struct scsi_cmnd *cmd, -void *buf,int buflen) +const void *buf,int buflen) {return sg_copy_from_buffer (scsi_sglist (cmd),scsi_sg_count (cmd), buf, buflen);
net/mac80211/agg-rx.c +8 -6
@@ -478,7 +478,7 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, size_t len) {u16 capab, tid, timeout, ba_policy, buf_size, start_seq_num; -struct ieee802_11_elems elems = { }; +struct ieee802_11_elems *elems =NULL ;u8 dialog_token;int ies_len;
@@ -496,16 +496,18 @@ void ieee80211_process_addba_request(struct ieee80211_local *local, ies_len = len - offsetof(struct ieee80211_mgmt , u.action.u.addba_req.variable);if (ies_len) { -ieee802_11_parse_elems (mgmt->u.action.u.addba_req.variable, - ies_len, true, &elems, mgmt->bssid,NULL ); -if (elems.parse_error) -return ; + elems =ieee802_11_parse_elems (mgmt->u.action.u.addba_req.variable, + ies_len, true, mgmt->bssid,NULL ); +if (!elems || elems->parse_error) + goto free; }__ieee80211_start_rx_ba_session (sta, dialog_token, timeout, start_seq_num, ba_policy, tid, buf_size, true, false, - elems.addba_ext_ie); + elems ? elems->addba_ext_ie :NULL ); +free: +kfree (elems); } void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif,
net/mac80211/ibss.c +19 -14
@@ -9,7 +9,7 @@* Copyright 2009, Johannes Berg <[email protected]> * Copyright 2013-2014 Intel Mobile Communications GmbH * Copyright(c) 2016 Intel Deutschland GmbH -* Copyright(c) 2018-2020 Intel Corporation +* Copyright(c) 2018-2021 Intel Corporation */ #include <linux/delay.h>
@@ -1593,7 +1593,7 @@ void ieee80211_rx_mgmt_probe_beacon(struct ieee80211_sub_if_data *sdata, struct ieee80211_rx_status *rx_status) {size_t baselen; -struct ieee802_11_elems elems; +struct ieee802_11_elems *elems; BUILD_BUG_ON(offsetof(typeof(mgmt->u.probe_resp), variable) != offsetof(typeof(mgmt->u.beacon), variable));
@@ -1606,10 +1606,14 @@ void ieee80211_rx_mgmt_probe_beacon(struct ieee80211_sub_if_data *sdata,if (baselen > len)return ; -ieee802_11_parse_elems (mgmt->u.probe_resp.variable, len - baselen, - false, &elems, mgmt->bssid,NULL ); + elems =ieee802_11_parse_elems (mgmt->u.probe_resp.variable, + len - baselen, false, + mgmt->bssid,NULL ); -ieee80211_rx_bss_info (sdata, mgmt, len, rx_status, &elems); +if (elems) { +ieee80211_rx_bss_info (sdata, mgmt, len, rx_status, elems); +kfree (elems); + } } void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,
@@ -1618,7 +1622,7 @@ void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,struct ieee80211_rx_status *rx_status;struct ieee80211_mgmt *mgmt;u16 fc; -struct ieee802_11_elems elems; +struct ieee802_11_elems *elems;int ies_len; rx_status =IEEE80211_SKB_RXCB (skb);
@@ -1655,15 +1659,16 @@ void ieee80211_ibss_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata,if (ies_len <0 )break ; -ieee802_11_parse_elems ( + elems =ieee802_11_parse_elems ( mgmt->u.action.u.chan_switch.variable, - ies_len, true, &elems, mgmt->bssid,NULL ); - -if (elems.parse_error) -break ; - -ieee80211_rx_mgmt_spectrum_mgmt (sdata, mgmt, skb->len, - rx_status, &elems); + ies_len, true, mgmt->bssid,NULL ); + +if (elems && !elems->parse_error) +ieee80211_rx_mgmt_spectrum_mgmt (sdata, mgmt, + skb->len, + rx_status, + elems); +kfree (elems);break ; } }
net/mac80211/ieee80211_i.h +23 -17
@@ -631,10 +631,9 @@ struct ieee80211_if_ocb {*/ struct ieee802_11_elems ;struct ieee80211_mesh_sync_ops { -void (*rx_bcn_presp)(struct ieee80211_sub_if_data *sdata, -u16 stype, -struct ieee80211_mgmt *mgmt, -struct ieee802_11_elems *elems, +void (*rx_bcn_presp)(struct ieee80211_sub_if_data *sdata,u16 stype, +struct ieee80211_mgmt *mgmt,unsigned int len, +const struct ieee80211_meshconf_ie *mesh_cfg,struct ieee80211_rx_status *rx_status);/* should be called with beacon_data under RCU read lock */
@@ -1533,6 +1532,7 @@ struct ieee80211_csa_ie {struct ieee802_11_elems {const u8 *ie_start;size_t total_len; +u32 crc;/* pointers to IEs */ const struct ieee80211_tdls_lnkie *lnk_id;
@@ -1542,7 +1542,6 @@ struct ieee802_11_elems {const u8 *supp_rates;const u8 *ds_params;const struct ieee80211_tim_ie *tim; -const u8 *challenge;const u8 *rsn;const u8 *rsnx;const u8 *erp_info;
@@ -1596,7 +1595,6 @@ struct ieee802_11_elems {u8 ssid_len;u8 supp_rates_len;u8 tim_len; -u8 challenge_len;u8 rsn_len;u8 rsnx_len;u8 ext_supp_rates_len;
@@ -1615,6 +1613,14 @@ struct ieee802_11_elems {/* whether a parse error occurred while retrieving these elements */ bool parse_error; + +/* +* scratch buffer that can be used for various element parsing related +* tasks, e.g., element de-fragmentation etc. +*/ +size_t scratch_len; +u8 *scratch_pos; +u8 scratch[]; }; static inline struct ieee80211_local *hw_to_local(
@@ -2219,18 +2225,18 @@ static inline void ieee80211_tx_skb(struct ieee80211_sub_if_data *sdata,ieee80211_tx_skb_tid (sdata, skb,7 ); } -u32 ieee802_11_parse_elems_crc (const u8 *start,size_t len,bool action, -struct ieee802_11_elems *elems, -u64 filter,u32 crc,u8 *transmitter_bssid, -u8 *bss_bssid); -static inline void ieee802_11_parse_elems (const u8 *start,size_t len, -bool action, -struct ieee802_11_elems *elems, -u8 *transmitter_bssid, -u8 *bss_bssid) +struct ieee802_11_elems *ieee802_11_parse_elems_crc (const u8 *start,size_t len, +bool action, +u64 filter,u32 crc, +const u8 *transmitter_bssid, +const u8 *bss_bssid); +static inline struct ieee802_11_elems * +ieee802_11_parse_elems (const u8 *start,size_t len,bool action, +const u8 *transmitter_bssid, +const u8 *bss_bssid) { -ieee802_11_parse_elems_crc (start, len, action, elems,0 ,0 , - transmitter_bssid, bss_bssid); +return ieee802_11_parse_elems_crc (start, len, action,0 ,0 , + transmitter_bssid, bss_bssid); }
net/mac80211/mesh.c +50 -37
174 lines not on this page · raw message
net/mac80211/mesh_hwmp.c +24 -20
75 lines not on this page · raw message
net/mac80211/mesh_plink.c +6 -5
@@ -1,7 +1,7 @@// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2008, 2009 open80211s Ltd. -* Copyright (C) 2019 Intel Corporation +* Copyright (C) 2019, 2021 Intel Corporation * Author: Luis Carlos Cobo <[email protected]> */ #include <linux/gfp.h>
@@ -1200,7 +1200,7 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_mgmt *mgmt, size_t len, struct ieee80211_rx_status *rx_status) { - struct ieee802_11_elems elems; + struct ieee802_11_elems *elems;size_t baselen;u8 *baseaddr;
@@ -1228,7 +1228,8 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata,if (baselen > len)return ; } -ieee802_11_parse_elems (baseaddr, len - baselen, true, &elems, - mgmt->bssid,NULL ); -mesh_process_plink_frame (sdata, mgmt, &elems, rx_status); + elems =ieee802_11_parse_elems (baseaddr, len - baselen, true, + mgmt->bssid,NULL ); +mesh_process_plink_frame (sdata, mgmt, elems, rx_status); +kfree (elems); }
net/mac80211/mesh_sync.c +12 -14
@@ -3,6 +3,7 @@* Copyright 2011-2012, Pavel Zubarev <[email protected]> * Copyright 2011-2012, Marco Porsch <[email protected]> * Copyright 2011-2012, cozybit Inc. +* Copyright (C) 2021 Intel Corporation */ #include "ieee80211_i.h"
@@ -35,12 +36,12 @@ struct sync_method {/** * mesh_peer_tbtt_adjusting - check if an mp is currently adjusting its TBTT * -* @ie: information elements of a management frame from the mesh peer +* @cfg: mesh config element from the mesh peer (or %NULL) */ -static bool mesh_peer_tbtt_adjusting (struct ieee802_11_elems *ie) +static bool mesh_peer_tbtt_adjusting (const struct ieee80211_meshconf_ie *cfg) { -return (ie->mesh_config->meshconf_cap & -IEEE80211_MESHCONF_CAPAB_TBTT_ADJUSTING ) !=0 ; +return cfg && + (cfg->meshconf_cap &IEEE80211_MESHCONF_CAPAB_TBTT_ADJUSTING ); }void mesh_sync_adjust_tsf (struct ieee80211_sub_if_data *sdata)
@@ -76,11 +77,11 @@ void mesh_sync_adjust_tsf(struct ieee80211_sub_if_data *sdata) } } -static void mesh_sync_offset_rx_bcn_presp (struct ieee80211_sub_if_data *sdata, -u16 stype, -struct ieee80211_mgmt *mgmt, -struct ieee802_11_elems *elems, -struct ieee80211_rx_status *rx_status) +static void +mesh_sync_offset_rx_bcn_presp (struct ieee80211_sub_if_data *sdata,u16 stype, +struct ieee80211_mgmt *mgmt,unsigned int len, +const struct ieee80211_meshconf_ie *mesh_cfg, +struct ieee80211_rx_status *rx_status) {struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh;struct ieee80211_local *local = sdata->local;
@@ -101,10 +102,7 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,*/ if (ieee80211_have_rx_timestamp (rx_status)) t_r =ieee80211_calculate_rx_timestamp (local, rx_status, -24 +12 + - elems->total_len + -FCS_LEN , -24 ); + len +FCS_LEN ,24 );else t_r =drv_get_tsf (local, sdata);
@@ -119,7 +117,7 @@ static void mesh_sync_offset_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,* dot11MeshNbrOffsetMaxNeighbor non-peer non-MBSS neighbors */ -if (elems->mesh_config &&mesh_peer_tbtt_adjusting (elems)) { +if (mesh_peer_tbtt_adjusting (mesh_cfg)) {msync_dbg (sdata,"STA %pM : is adjusting TBTT\n" , sta->sta.addr); goto no_sync;
net/mac80211/mlme.c +122 -96
437 lines not on this page · raw message
net/mac80211/rx.c +7 -5
@@ -1982,10 +1982,11 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)if (mmie_keyidx <NUM_DEFAULT_KEYS +NUM_DEFAULT_MGMT_KEYS || mmie_keyidx >=NUM_DEFAULT_KEYS +NUM_DEFAULT_MGMT_KEYS + -NUM_DEFAULT_BEACON_KEYS ) { -cfg80211_rx_unprot_mlme_mgmt (rx->sdata->dev, - skb->data, - skb->len); +NUM_DEFAULT_BEACON_KEYS ) { +if (rx->sdata->dev) +cfg80211_rx_unprot_mlme_mgmt (rx->sdata->dev, + skb->data, + skb->len);return RX_DROP_MONITOR ;/* unexpected BIP keyidx */ }
@@ -2133,7 +2134,8 @@ ieee80211_rx_h_decrypt(struct ieee80211_rx_data *rx)/* either the frame has been decrypted or will be dropped */ status->flag |=RX_FLAG_DECRYPTED ; -if (unlikely (ieee80211_is_beacon (fc) && result ==RX_DROP_UNUSABLE )) +if (unlikely (ieee80211_is_beacon (fc) && result ==RX_DROP_UNUSABLE && + rx->sdata->dev))cfg80211_rx_unprot_mlme_mgmt (rx->sdata->dev, skb->data, skb->len);
net/mac80211/scan.c +10 -6
@@ -9,7 +9,7 @@* Copyright 2007, Michael Wu <[email protected]> * Copyright 2013-2015 Intel Mobile Communications GmbH * Copyright 2016-2017 Intel Deutschland GmbH -* Copyright (C) 2018-2020 Intel Corporation +* Copyright (C) 2018-2021 Intel Corporation */ #include <linux/if_arp.h>
@@ -155,7 +155,7 @@ ieee80211_bss_info_update(struct ieee80211_local *local, };bool signal_valid;struct ieee80211_sub_if_data *scan_sdata; -struct ieee802_11_elems elems; +struct ieee802_11_elems *elems;size_t baselen;u8 *elements;
@@ -209,8 +209,10 @@ ieee80211_bss_info_update(struct ieee80211_local *local,if (baselen > len)return NULL ; -ieee802_11_parse_elems (elements, len - baselen, false, &elems, - mgmt->bssid, cbss->bssid); + elems =ieee802_11_parse_elems (elements, len - baselen, false, + mgmt->bssid, cbss->bssid); +if (!elems) +return NULL ;/* In case the signal is invalid update the status */ signal_valid = channel == cbss->channel;
@@ -218,15 +220,17 @@ ieee80211_bss_info_update(struct ieee80211_local *local, rx_status->flag |=RX_FLAG_NO_SIGNAL_VAL ; bss = (void *)cbss->priv; -ieee80211_update_bss_from_elems (local, bss, &elems, rx_status, beacon); +ieee80211_update_bss_from_elems (local, bss, elems, rx_status, beacon);list_for_each_entry (non_tx_cbss, &cbss->nontrans_list, nontrans_list) { non_tx_bss = (void *)non_tx_cbss->priv; -ieee80211_update_bss_from_elems (local, non_tx_bss, &elems, +ieee80211_update_bss_from_elems (local, non_tx_bss, elems, rx_status, beacon); } +kfree (elems); +return bss; }
net/mac80211/tdls.c +38 -25
154 lines not on this page · raw message
net/mac80211/util.c +28 -25
92 lines not on this page · raw message
net/wireless/scan.c +50 -27
152 lines not on this page · raw message
security/integrity/platform_certs/load_uefi.c +1 -1
@@ -30,7 +30,7 @@ static const struct dmi_system_id uefi_skip_cert[] = { { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,1") }, { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir8,2") }, { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacBookAir9,1") }, - { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacMini8,1") }, + { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "Macmini8,1") }, { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "MacPro7,1") }, { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,1") }, { UEFI_QUIRK_SKIP_CERT("Apple Inc.", "iMac20,2") },
sound/pci/hda/hda_intel.c +2 -1
@@ -2523,7 +2523,8 @@ static const struct pci_device_id azx_ids[] = { .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_NOPM },/* Poulsbo */ { PCI_DEVICE(0x8086, 0x811b), - .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE }, + .driver_data =AZX_DRIVER_SCH |AZX_DCAPS_INTEL_PCH_BASE | + AZX_DCAPS_POSFIX_LPIB }, /* Oaktrail */ { PCI_DEVICE(0x8086, 0x080a), .driver_data = AZX_DRIVER_SCH | AZX_DCAPS_INTEL_PCH_BASE },