Linux 5.4.92
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.4.92 kernel.
All users of the 5.4 kernel series must upgrade.
The updated 5.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.4.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 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 drivers/net/ethernet/mellanox/mlxsw/core_thermal.c | 13 +++--- drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 7 --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 - drivers/net/usb/rndis_host.c | 2 drivers/scsi/lpfc/lpfc_nportdisc.c | 4 - drivers/spi/spi-cadence.c | 6 +- drivers/spi/spi-npcm-fiu.c | 7 +-- drivers/usb/host/ohci-hcd.c | 2 drivers/xen/privcmd.c | 25 ++++++++--- fs/nfsd/nfs3xdr.c | 7 ++- include/linux/compiler-gcc.h | 6 ++ include/linux/elfcore.h | 22 ++++++++++ include/linux/skbuff.h | 5 ++ kernel/Makefile | 1 kernel/bpf/cgroup.c | 5 +- kernel/bpf/helpers.c | 2 kernel/elfcore.c | 26 ------------ net/core/filter.c | 2 net/core/skbuff.c | 9 +++- net/core/sock_reuseport.c | 2 net/dcb/dcbnl.c | 2 net/ipv4/esp4.c | 7 --- net/ipv6/esp6.c | 7 --- net/ipv6/ip6_output.c | 41 ++++++++++++++++++- net/ipv6/sit.c | 5 +- net/mac80211/tx.c | 4 - net/rxrpc/input.c | 2 net/rxrpc/key.c | 6 +- net/sctp/socket.c | 2 net/tipc/link.c | 9 +++- 32 files changed, 157 insertions(+), 88 deletions(-)
Andrey Zhizhikin (1):
rndis_host: set proper input size for OID_GEN_PHYSICAL_MEDIUM request
Arnd Bergmann (1):
elfcore: fix building with clang
Aya Levin (1):
net: ipv6: Validate GSO SKB before finish IPv6 processing
Baptiste Lepers (2):
udp: Prevent reuseport_select_sock from reading uninitialized socks
rxrpc: Call state should be read with READ_ONCE() under some circumstances
Daniel Borkmann (1):
net, sctp, filter: remap copy_from_user failure error
David Howells (1):
rxrpc: Fix handling of an unsupported token type in rxrpc_read()
David Wu (1):
net: stmmac: Fixed mtu channged by cache aligned
Eric Dumazet (1):
net: avoid 32 x truesize under-estimation for tiny skbs
Felix Fietkau (1):
mac80211: do not drop tx nulldata packets on encrypted links
Greg Kroah-Hartman (1):
Linux 5.4.92
Hamish Martin (1):
usb: ohci: Make distrust_firmware param default to false
Hoang Le (1):
tipc: fix NULL deref in tipc_link_xmit()
J. Bruce Fields (1):
nfsd4: readdirplus shouldn't return parent of export
Jakub Kicinski (1):
net: sit: unregister_netdevice on newlink's error path
Jason A. Donenfeld (2):
net: introduce skb_list_walk_safe for skb segment walking
net: skbuff: disambiguate argument and member for skb_list_walk_safe helper
Lorenzo Bianconi (1):
mac80211: check if atf has been disabled in __ieee80211_schedule_txq
Lukas Wunner (1):
spi: npcm-fiu: Disable clock in probe error path
Manish Chopra (1):
netxen_nic: fix MSI/MSI-x interrupts
Michael Hennerich (1):
spi: cadence: cache reference clock rate during probe
Mircea Cirjaliu (1):
bpf: Fix helper bpf_map_peek_elem_proto pointing to wrong callback
Petr Machata (2):
net: dcb: Validate netlink message in DCB handler
net: dcb: Accept RTM_GETDCB messages carrying set-like DCB commands
Qinglang Miao (1):
spi: npcm-fiu: simplify the return expression of npcm_fiu_probe()
Roger Pau Monne (1):
xen/privcmd: allow fetching resource sizes
Stanislav Fomichev (1):
bpf: Don't leak memory in bpf getsockopt when optlen == 0
Stefan Chulski (1):
net: mvpp2: Remove Pause and Asym_Pause support
Vadim Pasternak (2):
mlxsw: core: Add validation of transceiver temperature thresholds
mlxsw: core: Increase critical threshold for ASIC thermal zone
Will Deacon (1):
compiler.h: Raise minimum version of GCC to 5.1 for arm64
Willem de Bruijn (1):
esp: avoid unneeded kmap_atomic call
YueHaibing (1):
scsi: lpfc: Make lpfc_defer_acc_rsp static
zhengbin (1):
scsi: lpfc: Make function lpfc_defer_pt2pt_acc static
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 4 -SUBLEVEL = 91 +SUBLEVEL = 92 EXTRAVERSION = NAME = Kleptomaniac Octopus
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +0 -2
@@ -4790,8 +4790,6 @@ static void mvpp2_phylink_validate(struct phylink_config *config,phylink_set (mask, Autoneg);phylink_set_port_modes (mask); -phylink_set (mask, Pause); -phylink_set (mask, Asym_Pause);switch (state->interface) {case PHY_INTERFACE_MODE_10GKR :
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c +8 -5
@@ -19,7 +19,7 @@#define MLXSW_THERMAL_ASIC_TEMP_NORM 75000/* 75C */ #define MLXSW_THERMAL_ASIC_TEMP_HIGH 85000/* 85C */ #define MLXSW_THERMAL_ASIC_TEMP_HOT 105000/* 105C */ -#define MLXSW_THERMAL_ASIC_TEMP_CRIT 110000/* 110C */ +#define MLXSW_THERMAL_ASIC_TEMP_CRIT 140000/* 140C */ #define MLXSW_THERMAL_HYSTERESIS_TEMP 5000/* 5C */ #define MLXSW_THERMAL_MODULE_TEMP_SHIFT (MLXSW_THERMAL_HYSTERESIS_TEMP * 2)#define MLXSW_THERMAL_ZONE_MAX_NAME 16
@@ -177,6 +177,12 @@ mlxsw_thermal_module_trips_update(struct device *dev, struct mlxsw_core *core,if (err)return err; +if (crit_temp > emerg_temp) { +dev_warn (dev,"%s : Critical threshold %d is above emergency threshold %d\n" , + tz->tzdev->type, crit_temp, emerg_temp); +return 0 ; + } +/* According to the system thermal requirements, the thermal zones are * defined with four trip points. The critical and emergency * temperature thresholds, provided by QSFP module are set as "active"
@@ -191,11 +197,8 @@ mlxsw_thermal_module_trips_update(struct device *dev, struct mlxsw_core *core, tz->trips[MLXSW_THERMAL_TEMP_TRIP_NORM ].temp = crit_temp; tz->trips[MLXSW_THERMAL_TEMP_TRIP_HIGH ].temp = crit_temp; tz->trips[MLXSW_THERMAL_TEMP_TRIP_HOT ].temp = emerg_temp; -if (emerg_temp > crit_temp) - tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT ].temp = emerg_temp + + tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT ].temp = emerg_temp +MLXSW_THERMAL_MODULE_TEMP_SHIFT ; -else - tz->trips[MLXSW_THERMAL_TEMP_TRIP_CRIT ].temp = emerg_temp;return 0 ; }
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c +1 -6
@@ -564,11 +564,6 @@ static const struct net_device_ops netxen_netdev_ops = { .ndo_set_features = netxen_set_features, }; -static inline bool netxen_function_zero (struct pci_dev *pdev) -{ -return (PCI_FUNC (pdev->devfn) ==0 ) ? true : false; -} -static inline void netxen_set_interrupt_mode (struct netxen_adapter *adapter,u32 mode) {
@@ -664,7 +659,7 @@ static int netxen_setup_intr(struct netxen_adapter *adapter)netxen_initialize_interrupt_registers (adapter);netxen_set_msix_bit (pdev,0 ); -if (netxen_function_zero (pdev)) { +if (adapter->portnum ==0 ) {if (!netxen_setup_msi_interrupts (adapter, num_msix))netxen_set_interrupt_mode (adapter,NETXEN_MSI_MODE );else
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +2 -1
@@ -3739,6 +3739,7 @@ static int stmmac_change_mtu(struct net_device *dev, int new_mtu) {struct stmmac_priv *priv =netdev_priv (dev);int txfifosz = priv->plat->tx_fifo_size; +const int mtu = new_mtu;if (txfifosz ==0 ) txfifosz = priv->dma_cap.tx_fifo_size;
@@ -3756,7 +3757,7 @@ static int stmmac_change_mtu(struct net_device *dev, int new_mtu)if ((txfifosz < new_mtu) || (new_mtu > BUF_SIZE_16KiB))return -EINVAL ; - dev->mtu = new_mtu; + dev->mtu = mtu;netdev_update_features (dev);
drivers/net/usb/rndis_host.c +1 -1
@@ -387,7 +387,7 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) reply_len =sizeof *phym; retval =rndis_query (dev, intf, u.buf,RNDIS_OID_GEN_PHYSICAL_MEDIUM , -0 , (void **) &phym, &reply_len); + reply_len, (void **)&phym, &reply_len);if (retval !=0 || !phym) {/* OID is optional so don't fail here. */ phym_unspec =cpu_to_le32 (RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED );
drivers/scsi/lpfc/lpfc_nportdisc.c +2 -2
@@ -286,7 +286,7 @@ lpfc_els_abort(struct lpfc_hba *phba, struct lpfc_nodelist *ndlp)* This routine is only called if we are SLI3, direct connect pt2pt * mode and the remote NPort issues the PLOGI after link up. */ -void +static void lpfc_defer_pt2pt_acc (struct lpfc_hba *phba,LPFC_MBOXQ_t *link_mbox) {LPFC_MBOXQ_t *login_mbox;
@@ -340,7 +340,7 @@ lpfc_defer_pt2pt_acc(struct lpfc_hba *phba, LPFC_MBOXQ_t *link_mbox)* This routine is only called if we are SLI4, acting in target * mode and the remote NPort issues the PLOGI after link up. **/ -void +static void lpfc_defer_acc_rsp (struct lpfc_hba *phba,LPFC_MBOXQ_t *pmb) {struct lpfc_vport *vport = pmb->vport;
drivers/spi/spi-cadence.c +4 -2
@@ -115,6 +115,7 @@ struct cdns_spi {void __iomem *regs;struct clk *ref_clk;struct clk *pclk; +unsigned int clk_rate;u32 speed_hz;const u8 *txbuf;u8 *rxbuf;
@@ -250,7 +251,7 @@ static void cdns_spi_config_clock_freq(struct spi_device *spi,u32 ctrl_reg, baud_rate_val;unsigned long frequency; - frequency =clk_get_rate (xspi->ref_clk); + frequency = xspi->clk_rate; ctrl_reg =cdns_spi_read (xspi,CDNS_SPI_CR );
@@ -558,8 +559,9 @@ static int cdns_spi_probe(struct platform_device *pdev) master->auto_runtime_pm = true; master->mode_bits =SPI_CPOL |SPI_CPHA ; + xspi->clk_rate =clk_get_rate (xspi->ref_clk);/* Set to default valid value */ - master->max_speed_hz =clk_get_rate (xspi->ref_clk) /4 ; + master->max_speed_hz = xspi->clk_rate /4 ; xspi->speed_hz = master->max_speed_hz; master->bits_per_word_mask =SPI_BPW_MASK (8 );
drivers/spi/spi-npcm-fiu.c +3 -4
@@ -677,8 +677,7 @@ static int npcm_fiu_probe(struct platform_device *pdev)struct npcm_fiu_spi *fiu;void __iomem *regbase;struct resource *res; -int ret; -int id; +int id, ret; ctrl =devm_spi_alloc_master (dev,sizeof (*fiu));if (!ctrl)
@@ -738,9 +737,9 @@ static int npcm_fiu_probe(struct platform_device *pdev) ret =devm_spi_register_master (dev, ctrl);if (ret) -return ret; +clk_disable_unprepare (fiu->clk); -return 0 ; +return ret; }static int npcm_fiu_remove (struct platform_device *pdev)
drivers/usb/host/ohci-hcd.c +1 -1
@@ -102,7 +102,7 @@ static void io_watchdog_func(struct timer_list *t);/* Some boards misreport power switching/overcurrent */ -static bool distrust_firmware = true; +static bool distrust_firmware;module_param (distrust_firmware, bool,0 );MODULE_PARM_DESC (distrust_firmware,"true to distrust firmware power/overcurrent setup" );
drivers/xen/privcmd.c +19 -6
@@ -724,14 +724,15 @@ static long privcmd_ioctl_restrict(struct file *file, void __user *udata)return 0 ; } -static long privcmd_ioctl_mmap_resource (struct file *file,void __user *udata) +static long privcmd_ioctl_mmap_resource (struct file *file, +struct privcmd_mmap_resource __user *udata) {struct privcmd_data *data = file->private_data;struct mm_struct *mm = current->mm;struct vm_area_struct *vma;struct privcmd_mmap_resource kdata;xen_pfn_t *pfns =NULL ; -struct xen_mem_acquire_resource xdata; +struct xen_mem_acquire_resource xdata = { };int rc;if (copy_from_user (&kdata, udata,sizeof (kdata)))
@@ -741,6 +742,22 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata)if (data->domid !=DOMID_INVALID && data->domid != kdata.dom)return -EPERM ; +/* Both fields must be set or unset */ +if (!!kdata.addr != !!kdata.num) +return -EINVAL ; + + xdata.domid = kdata.dom; + xdata.type = kdata.type; + xdata.id = kdata.id; + +if (!kdata.addr && !kdata.num) { +/* Query the size of the resource. */ + rc =HYPERVISOR_memory_op (XENMEM_acquire_resource, &xdata); +if (rc) +return rc; +return __put_user (xdata.nr_frames, &udata->num); + } +down_write (&mm->mmap_sem); vma =find_vma (mm, kdata.addr);
@@ -775,10 +792,6 @@ static long privcmd_ioctl_mmap_resource(struct file *file, void __user *udata) }else vma->vm_private_data =PRIV_VMA_LOCKED ; -memset (&xdata,0 ,sizeof (xdata)); - xdata.domid = kdata.dom; - xdata.type = kdata.type; - xdata.id = kdata.id; xdata.frame = kdata.idx; xdata.nr_frames = kdata.num;set_xen_guest_handle (xdata.frame_list, pfns);
fs/nfsd/nfs3xdr.c +6 -1
@@ -857,9 +857,14 @@ compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp,if (isdotent (name, namlen)) {if (namlen ==2 ) { dchild =dget_parent (dparent); -/* filesystem root - cannot return filehandle for ".." */ +/* +* Don't return filehandle for ".." if we're at +* the filesystem or export root: +*/ if (dchild == dparent) goto out; +if (dparent == exp->ex_path.dentry) + goto out; }else dchild =dget (dparent); }else
include/linux/compiler-gcc.h +6 -0
@@ -12,6 +12,12 @@#if GCC_VERSION <40600 # error Sorry, your compiler is too old - please upgrade it. +#elif defined(CONFIG_ARM64 ) &&GCC_VERSION <50100 +/* +* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63293 +* https://lore.kernel.org/r/[email protected] +*/ +# error Sorry, your version of GCC is too old - please use 5.1 or newer.#endif /*
include/linux/elfcore.h +22 -0
@@ -58,6 +58,7 @@ static inline int elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregse }#endif +#if defined(CONFIG_UM ) || defined(CONFIG_IA64 )/* * These functions parameterize elf_core_dump in fs/binfmt_elf.c to write out * extra segments containing the gate DSO contents. Dumping its
@@ -72,5 +73,26 @@ elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset);extern int elf_core_write_extra_data (struct coredump_params *cprm);extern size_t elf_core_extra_data_size (void ); +#else +static inline Elf_Half elf_core_extra_phdrs (void ) +{ +return 0 ; +} + +static inline int elf_core_write_extra_phdrs (struct coredump_params *cprm,loff_t offset) +{ +return 1 ; +} + +static inline int elf_core_write_extra_data (struct coredump_params *cprm) +{ +return 1 ; +} + +static inline size_t elf_core_extra_data_size (void ) +{ +return 0 ; +} +#endif #endif /* _LINUX_ELFCORE_H */
include/linux/skbuff.h +5 -0
@@ -1480,6 +1480,11 @@ static inline void skb_mark_not_on_list(struct sk_buff *skb) skb->next =NULL ; } +/* Iterate through singly-linked GSO fragments of an skb. */ +#define skb_list_walk_safe (first, skb, next_skb) \ + for ((skb) = (first), (next_skb) = (skb) ? (skb)->next : NULL; (skb); \ + (skb) = (next_skb), (next_skb) = (skb) ? (skb)->next : NULL) +static inline void skb_list_del_init (struct sk_buff *skb) {__list_del_entry (&skb->list);
kernel/Makefile +0 -1
@@ -93,7 +93,6 @@ obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o obj-$(CONFIG_TRACEPOINTS) += tracepoint.o obj-$(CONFIG_LATENCYTOP) += latencytop.o -obj-$(CONFIG_ELFCORE) += elfcore.o obj-$(CONFIG_FUNCTION_TRACER) += trace/ obj-$(CONFIG_TRACING) += trace/ obj-$(CONFIG_TRACE_CLOCK) += trace/
kernel/bpf/cgroup.c +3 -2
@@ -1057,12 +1057,13 @@ int __cgroup_bpf_run_filter_setsockopt(struct sock *sk, int *level,if (ctx.optlen !=0 ) { *optlen = ctx.optlen; *kernel_optval = ctx.optval; +/* export and don't free sockopt buf */ +return 0 ; } } out: -if (ret) -sockopt_free_buf (&ctx); +sockopt_free_buf (&ctx);return ret; }EXPORT_SYMBOL (__cgroup_bpf_run_filter_setsockopt);
kernel/bpf/helpers.c +1 -1
@@ -105,7 +105,7 @@ BPF_CALL_2(bpf_map_peek_elem, struct bpf_map *, map, void *, value) }const struct bpf_func_proto bpf_map_peek_elem_proto = { - .func = bpf_map_pop_elem, + .func = bpf_map_peek_elem, .gpl_only = false, .ret_type =RET_INTEGER , .arg1_type =ARG_CONST_MAP_PTR ,
kernel/elfcore.c deleted +0 -26
@@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -#include <linux/elf.h> -#include <linux/fs.h> -#include <linux/mm.h> -#include <linux/binfmts.h> -#include <linux/elfcore.h> - -Elf_Half __weak elf_core_extra_phdrs (void ) -{ -return 0 ; -} - -int __weak elf_core_write_extra_phdrs (struct coredump_params *cprm,loff_t offset) -{ -return 1 ; -} - -int __weak elf_core_write_extra_data (struct coredump_params *cprm) -{ -return 1 ; -} - -size_t __weak elf_core_extra_data_size (void ) -{ -return 0 ; -}
net/core/filter.c +1 -1
@@ -1475,7 +1475,7 @@ struct bpf_prog *__get_filter(struct sock_fprog *fprog, struct sock *sk)if (copy_from_user (prog->insns, fprog->filter, fsize)) {__bpf_prog_free (prog); -return ERR_PTR (-EFAULT ); +return ERR_PTR (-EINVAL ); } prog->len = fprog->len;
net/core/skbuff.c +7 -2
@@ -496,13 +496,17 @@ EXPORT_SYMBOL(__netdev_alloc_skb);struct sk_buff *__napi_alloc_skb (struct napi_struct *napi,unsigned int len,gfp_t gfp_mask) { -struct napi_alloc_cache *nc =this_cpu_ptr (&napi_alloc_cache); +struct napi_alloc_cache *nc;struct sk_buff *skb;void *data; len +=NET_SKB_PAD +NET_IP_ALIGN ; -if ((len >SKB_WITH_OVERHEAD (PAGE_SIZE )) || +/* If requested length is either too small or too big, +* we use kmalloc() for skb->head allocation. +*/ +if (len <=SKB_WITH_OVERHEAD (1024 ) || + len >SKB_WITH_OVERHEAD (PAGE_SIZE ) || (gfp_mask & (__GFP_DIRECT_RECLAIM |GFP_DMA ))) { skb =__alloc_skb (len, gfp_mask,SKB_ALLOC_RX ,NUMA_NO_NODE );if (!skb)
@@ -510,6 +514,7 @@ struct sk_buff *__napi_alloc_skb(struct napi_struct *napi, unsigned int len, goto skb_success; } + nc =this_cpu_ptr (&napi_alloc_cache); len +=SKB_DATA_ALIGN (sizeof (struct skb_shared_info )); len =SKB_DATA_ALIGN (len);
net/core/sock_reuseport.c +1 -1
@@ -302,7 +302,7 @@ struct sock *reuseport_select_sock(struct sock *sk, i = j =reciprocal_scale (hash, socks);while (reuse->socks[i]->sk_state ==TCP_ESTABLISHED ) { i++; -if (i >= reuse->num_socks) +if (i >= socks) i =0 ;if (i == j) goto out;
net/dcb/dcbnl.c +2 -0
@@ -1765,6 +1765,8 @@ static int dcb_doit(struct sk_buff *skb, struct nlmsghdr *nlh, fn = &reply_funcs[dcb->cmd];if (!fn->cb)return -EOPNOTSUPP ; +if (fn->type ==RTM_SETDCB && !netlink_capable (skb,CAP_NET_ADMIN )) +return -EPERM ;if (!tb[DCB_ATTR_IFNAME ])return -EINVAL ;
net/ipv4/esp4.c +1 -6
@@ -272,7 +272,6 @@ static int esp_output_udp_encap(struct xfrm_state *x, struct sk_buff *skb, strucint esp_output_head (struct xfrm_state *x,struct sk_buff *skb,struct esp_info *esp) {u8 *tail; -u8 *vaddr;int nfrags;int esph_offset;struct page *page;
@@ -314,14 +313,10 @@ int esp_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info * page = pfrag->page;get_page (page); - vaddr =kmap_atomic (page); - - tail = vaddr + pfrag->offset; + tail =page_address (page) + pfrag->offset;esp_output_fill_trailer (tail, esp->tfclen, esp->plen, esp->proto); -kunmap_atomic (vaddr); - nfrags =skb_shinfo (skb)->nr_frags; __skb_fill_page_desc(skb, nfrags, page, pfrag->offset,
net/ipv6/esp6.c +1 -6
@@ -226,7 +226,6 @@ static void esp_output_fill_trailer(u8 *tail, int tfclen, int plen, __u8 proto)int esp6_output_head (struct xfrm_state *x,struct sk_buff *skb,struct esp_info *esp) {u8 *tail; -u8 *vaddr;int nfrags;struct page *page;struct sk_buff *trailer;
@@ -259,14 +258,10 @@ int esp6_output_head(struct xfrm_state *x, struct sk_buff *skb, struct esp_info page = pfrag->page;get_page (page); - vaddr =kmap_atomic (page); - - tail = vaddr + pfrag->offset; + tail =page_address (page) + pfrag->offset;esp_output_fill_trailer (tail, esp->tfclen, esp->plen, esp->proto); -kunmap_atomic (vaddr); - nfrags =skb_shinfo (skb)->nr_frags; __skb_fill_page_desc(skb, nfrags, page, pfrag->offset,
net/ipv6/ip6_output.c +40 -1
55 lines not on this page · raw message
net/ipv6/sit.c +4 -1
@@ -1597,8 +1597,11 @@ static int ipip6_newlink(struct net *src_net, struct net_device *dev, }#ifdef CONFIG_IPV6_SIT_6RD -if (ipip6_netlink_6rd_parms (data, &ip6rd)) +if (ipip6_netlink_6rd_parms (data, &ip6rd)) { err =ipip6_tunnel_update_6rd (nt, &ip6rd); +if (err <0 ) +unregister_netdevice_queue (dev,NULL ); + }#endif return err;
net/mac80211/tx.c +2 -2
@@ -657,7 +657,7 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)if (!skip_hw && tx->key && tx->key->flags &KEY_FLAG_UPLOADED_TO_HARDWARE ) info->control.hw_key = &tx->key->conf; - }else if (!ieee80211_is_mgmt (hdr->frame_control) && tx->sta && + }else if (ieee80211_is_data_present (hdr->frame_control) && tx->sta &&test_sta_flag (tx->sta,WLAN_STA_USES_ENCRYPTION )) {return TX_DROP ; }
@@ -3773,7 +3773,7 @@ void __ieee80211_schedule_txq(struct ieee80211_hw *hw,* get immediately moved to the back of the list on the next * call to ieee80211_next_txq(). */ -if (txqi->txq.sta && +if (txqi->txq.sta && local->airtime_flags &&wiphy_ext_feature_isset (local->hw.wiphy,NL80211_EXT_FEATURE_AIRTIME_FAIRNESS )) list_add(&txqi->schedule_order,
net/rxrpc/input.c +1 -1
@@ -431,7 +431,7 @@ static void rxrpc_input_data(struct rxrpc_call *call, struct sk_buff *skb)return ; } -if (call->state ==RXRPC_CALL_SERVER_RECV_REQUEST ) { +if (state ==RXRPC_CALL_SERVER_RECV_REQUEST ) {unsigned long timo =READ_ONCE (call->next_req_timo);unsigned long now, expect_req_by;
net/rxrpc/key.c +4 -2
@@ -1110,7 +1110,7 @@ static long rxrpc_read(const struct key *key,default :/* we have a ticket we can't encode */ pr_err ("Unsupported key token type (%u)\n" , token->security_index); -continue ; +return -ENOPKG ; }_debug ("token[%u]: toksize=%u" , ntoks, toksize);
@@ -1225,7 +1225,9 @@ static long rxrpc_read(const struct key *key,break ;default : -break ; +pr_err ("Unsupported key token type (%u)\n" , + token->security_index); +return -ENOPKG ; } ASSERTCMP((unsigned long)xdr - (unsigned long)oldxdr, ==,
net/sctp/socket.c +1 -1
@@ -1319,7 +1319,7 @@ static int __sctp_setsockopt_connectx(struct sock *sk, kaddrs =memdup_user (addrs, addrs_size);if (IS_ERR (kaddrs)) -return PTR_ERR (kaddrs); +return PTR_ERR (kaddrs) == -EFAULT ? -EINVAL :PTR_ERR (kaddrs);/* Allow security module to validate connectx addresses. */ err = security_sctp_bind_connect(sk, SCTP_SOCKOPT_CONNECTX,
net/tipc/link.c +7 -2
@@ -939,9 +939,7 @@ void tipc_link_reset(struct tipc_link *l)int tipc_link_xmit (struct tipc_link *l,struct sk_buff_head *list,struct sk_buff_head *xmitq) { -struct tipc_msg *hdr =buf_msg (skb_peek (list));unsigned int maxwin = l->window; -int imp =msg_importance (hdr);unsigned int mtu = l->mtu;u16 ack = l->rcv_nxt -1 ;u16 seqno = l->snd_nxt;
@@ -950,8 +948,14 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,struct sk_buff_head *backlogq = &l->backlogq;struct sk_buff *skb, *_skb, **tskb;int pkt_cnt =skb_queue_len (list); +struct tipc_msg *hdr;int rc =0 ; +int imp; + +if (pkt_cnt <=0 ) +return 0 ; + hdr =buf_msg (skb_peek (list));if (unlikely (msg_size (hdr) > mtu)) { pr_warn("Too large msg, purging xmit list %d %d %d %d %d!\n", skb_queue_len(list), msg_user(hdr),
@@ -960,6 +964,7 @@ int tipc_link_xmit(struct tipc_link *l, struct sk_buff_head *list,return -EMSGSIZE ; } + imp =msg_importance (hdr);/* Allow oversubscription of one data msg per source at congestion */ if (unlikely (l->backlog[imp].len >= l->backlog[imp].limit)) {if (imp ==TIPC_SYSTEM_IMPORTANCE ) {