Linux 4.19.150
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.19.150 kernel.
All users of the 4.19 kernel series must upgrade.
The updated 4.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.19.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/ia64/mm/init.c | 6 drivers/base/node.c | 84 +++++--- drivers/clk/samsung/clk-exynos4.c | 4 drivers/clk/socfpga/clk-s10.c | 2 drivers/gpio/gpio-mockup.c | 2 drivers/gpio/gpio-sprd.c | 3 drivers/gpio/gpio-tc3589x.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 drivers/i2c/busses/i2c-cpm.c | 3 drivers/input/mouse/trackpoint.c | 2 drivers/input/serio/i8042-x86ia64io.h | 7 drivers/iommu/exynos-iommu.c | 8 drivers/mmc/host/sdhci-pci-core.c | 3 drivers/net/ethernet/dec/tulip/de2104x.c | 2 drivers/net/usb/rndis_host.c | 2 drivers/net/wan/hdlc_cisco.c | 1 drivers/net/wan/hdlc_fr.c | 6 drivers/net/wan/hdlc_ppp.c | 1 drivers/net/wan/lapbether.c | 4 drivers/nvme/host/core.c | 15 + drivers/nvme/host/fc.c | 6 drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 2 drivers/spi/spi-fsl-espi.c | 5 drivers/usb/gadget/function/f_ncm.c | 30 --- drivers/vhost/vsock.c | 94 ++++----- fs/eventpoll.c | 71 +++---- fs/nfs/dir.c | 3 include/linux/mm.h | 2 include/linux/mmzone.h | 11 - include/linux/node.h | 11 - include/linux/virtio_vsock.h | 3 kernel/trace/ftrace.c | 6 lib/random32.c | 2 mm/memory_hotplug.c | 5 mm/page_alloc.c | 11 - net/mac80211/vht.c | 8 net/netfilter/nf_conntrack_netlink.c | 2 net/packet/af_packet.c | 9 net/vmw_vsock/virtio_transport.c | 265 +++++++++++++++++----------- net/vmw_vsock/virtio_transport_common.c | 13 - 42 files changed, 424 insertions(+), 298 deletions(-)
Al Viro (4):
epoll: do not insert into poll queues until all sanity checks are done
epoll: replace ->visited/visited_list with generation count
epoll: EPOLL_CTL_ADD: close the race in decision to take fast path ep_create_wakeup_source(): dentry name can change under you...
Bartosz Golaszewski (1):
gpio: mockup: fix resource leak in error path
Bryan O'Donoghue (1):
USB: gadget: f_ncm: Fix NDP16 datagram validation
Chaitanya Kulkarni (1):
nvme-core: get/put ctrl and transport module in nvme_dev_open/release()
Chris Packham (2):
spi: fsl-espi: Only process interrupts for expected events
pinctrl: mvebu: Fix i2c sda definition for 98DX3236
Dinh Nguyen (1):
clk: socfpga: stratix10: fix the divider for the emac_ptp_free_clk
Felix Fietkau (1):
mac80211: do not allow bigger VHT MPDUs than the hardware supports
Greg Kroah-Hartman (1):
Linux 4.19.150
Hans de Goede (1):
mmc: sdhci: Workaround broken command queuing on Intel GLK based IRBIS models
James Smart (1):
nvme-fc: fail new connections to a deleted host or remote port
Jean Delvare (1):
drm/amdgpu: restore proper ref count in amdgpu_display_crtc_set_config
Jeffrey Mitchell (1):
nfs: Fix security label length not being reset
Jiri Kosina (1):
Input: i8042 - add nopnp quirk for Acer Aspire 5 A515
Laurent Dufour (2):
mm: replace memmap_context by meminit_context
mm: don't rely on system state to detect hot-plug operations
Lucy Yan (1):
net: dec: de2104x: Increase receive ring size for Tulip
Marek Szyprowski (1):
clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED
Martin Cerveny (1):
drm/sun4i: mixer: Extend regmap max_register
Nicolas VINCENT (1):
i2c: cpm: Fix i2c_ram structure
Olympia Giannou (1):
rndis_host: increase sleep time in the query-response loop
Or Cohen (1):
net/packet: fix overflow in tpacket_rcv
Sebastien Boeuf (1):
net: virtio_vsock: Enhance connection semantics
Stefano Garzarella (3):
vsock/virtio: use RCU to avoid use-after-free on the_virtio_vsock vsock/virtio: stop workers during the .remove()
vsock/virtio: add transport parameter to the virtio_transport_reset_no_sock()
Steven Rostedt (VMware) (1):
ftrace: Move RCU is watching check after recursion check
Taiping Lai (1):
gpio: sprd: Clear interrupt when setting the type as edge
Thibaut Sautereau (1):
random32: Restore __latent_entropy attribute on net_rand_state
Vincent Huang (1):
Input: trackpoint - enable Synaptics trackpoints
Will McVicker (1):
netfilter: ctnetlink: add a range check for l3/l4 protonum
Xie He (3):
drivers/net/wan/hdlc_fr: Add needed_headroom for PVC devices
drivers/net/wan/lapbether: Make skb->protocol consistent with the header
drivers/net/wan/hdlc: Set skb->protocol before transmittingYu Kuai (1):
iommu/exynos: add missing put_device() call in exynos_iommu_of_xlate()
dillon min (1):
gpio: tc35894: fix up tc35894 interrupt configuration
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 4 PATCHLEVEL = 19 -SUBLEVEL = 149 +SUBLEVEL = 150 EXTRAVERSION = NAME = "People's Front"
arch/ia64/mm/init.c +3 -3
@@ -499,7 +499,7 @@ virtual_memmap_init(u64 start, u64 end, void *arg)if (map_start < map_end)memmap_init_zone ((unsigned long )(map_end - map_start), args->nid, args->zone,page_to_pfn (map_start), -MEMMAP_EARLY ,NULL ); +MEMINIT_EARLY ,NULL );return 0 ; }
@@ -508,8 +508,8 @@ memmap_init (unsigned long size, int nid, unsigned long zone, unsigned long start_pfn) {if (!vmem_map) { -memmap_init_zone (size, nid, zone, start_pfn,MEMMAP_EARLY , -NULL ); +memmap_init_zone (size, nid, zone, start_pfn, +MEMINIT_EARLY ,NULL ); }else {struct page *start;struct memmap_init_callback_data args;
drivers/base/node.c +54 -30
112 lines not on this page · raw message
drivers/clk/samsung/clk-exynos4.c +2 -2
@@ -1072,7 +1072,7 @@ static const struct samsung_gate_clock exynos4210_gate_clks[] __initconst = {GATE (CLK_PCIE ,"pcie" ,"aclk133" ,GATE_IP_FSYS ,14 ,0 ,0 ),GATE (CLK_SMMU_PCIE ,"smmu_pcie" ,"aclk133" ,GATE_IP_FSYS ,18 ,0 ,0 ),GATE (CLK_MODEMIF ,"modemif" ,"aclk100" ,GATE_IP_PERIL ,28 ,0 ,0 ), -GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,0 ,0 ), +GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ),GATE (CLK_SYSREG ,"sysreg" ,"aclk100" ,E4210_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4210_GATE_IP_PERIR, 11, 0,
@@ -1113,7 +1113,7 @@ static const struct samsung_gate_clock exynos4x12_gate_clks[] __initconst = { 0),GATE (CLK_TSADC ,"tsadc" ,"aclk133" ,E4X12_GATE_BUS_FSYS1 ,16 ,0 ,0 ),GATE (CLK_MIPI_HSI ,"mipi_hsi" ,"aclk133" ,GATE_IP_FSYS ,10 ,0 ,0 ), -GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4X12_GATE_IP_PERIR ,0 ,0 ,0 ), +GATE (CLK_CHIPID ,"chipid" ,"aclk100" ,E4X12_GATE_IP_PERIR ,0 ,CLK_IGNORE_UNUSED ,0 ),GATE (CLK_SYSREG ,"sysreg" ,"aclk100" ,E4X12_GATE_IP_PERIR ,1 ,CLK_IGNORE_UNUSED ,0 ), GATE(CLK_HDMI_CEC, "hdmi_cec", "aclk100", E4X12_GATE_IP_PERIR, 11, 0,
drivers/clk/socfpga/clk-s10.c +1 -1
@@ -107,7 +107,7 @@ static const struct stratix10_perip_cnt_clock s10_main_perip_cnt_clks[] = { {STRATIX10_EMAC_B_FREE_CLK ,"emacb_free_clk" ,NULL , emacb_free_mux,ARRAY_SIZE (emacb_free_mux), 0, 0, 2, 0xB0, 1}, { STRATIX10_EMAC_PTP_FREE_CLK, "emac_ptp_free_clk", NULL, emac_ptp_free_mux, - ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 4, 0xB0, 2}, + ARRAY_SIZE(emac_ptp_free_mux), 0, 0, 2, 0xB0, 2}, { STRATIX10_GPIO_DB_FREE_CLK, "gpio_db_free_clk", NULL, gpio_db_free_mux, ARRAY_SIZE(gpio_db_free_mux), 0, 0, 0, 0xB0, 3}, { STRATIX10_SDMMC_FREE_CLK, "sdmmc_free_clk", NULL, sdmmc_free_mux,
drivers/gpio/gpio-mockup.c +2 -0
@@ -367,6 +367,7 @@ static int __init gpio_mockup_init(void) err =platform_driver_register (&gpio_mockup_driver);if (err) {gpio_mockup_err ("error registering platform driver\n" ); +debugfs_remove_recursive (gpio_mockup_dbg_dir);return err; }
@@ -386,6 +387,7 @@ static int __init gpio_mockup_init(void)gpio_mockup_err ("error registering device" );platform_driver_unregister (&gpio_mockup_driver);gpio_mockup_unregister_pdevs (); +debugfs_remove_recursive (gpio_mockup_dbg_dir);return PTR_ERR (pdev); }
drivers/gpio/gpio-sprd.c +3 -0
@@ -149,17 +149,20 @@ static int sprd_gpio_irq_set_type(struct irq_data *data,sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IEV ,1 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IEV ,0 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_gpio_update (chip, offset,SPRD_GPIO_IS ,0 );sprd_gpio_update (chip, offset,SPRD_GPIO_IBE ,1 ); +sprd_gpio_update (chip, offset,SPRD_GPIO_IC ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :
drivers/gpio/gpio-tc3589x.c +1 -1
@@ -209,7 +209,7 @@ static void tc3589x_gpio_irq_sync_unlock(struct irq_data *d)continue ; tc3589x_gpio->oldregs[i][j] = new; -tc3589x_reg_write (tc3589x, regmap[i] + j *8 , new); +tc3589x_reg_write (tc3589x, regmap[i] + j, new); } }
drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +1 -1
@@ -290,7 +290,7 @@ int amdgpu_display_crtc_set_config(struct drm_mode_set *set,take the current one */ if (active && !adev->have_disp_power_ref) { adev->have_disp_power_ref = true; - goto out; +return ret; }/* if we have no active crtcs, then drop the power ref we got before */
drivers/gpu/drm/sun4i/sun8i_mixer.c +1 -1
@@ -364,7 +364,7 @@ static struct regmap_config sun8i_mixer_regmap_config = { .reg_bits = 32, .val_bits = 32, .reg_stride = 4, - .max_register = 0xbfffc, /* guessed */ + .max_register = 0xffffc, /* guessed */ };static int sun8i_mixer_of_get_id (struct device_node *node)
drivers/i2c/busses/i2c-cpm.c +3 -0
@@ -74,6 +74,9 @@ struct i2c_ram {char res1[4 ];/* Reserved */ ushort rpbase;/* Relocation pointer */ char res2[2 ];/* Reserved */ +/* The following elements are only for CPM2 */ +char res3[4 ];/* Reserved */ +uint sdmatmp;/* Internal */ };#define I2COM_START 0x80
drivers/input/mouse/trackpoint.c +2 -0
@@ -285,6 +285,8 @@ static int trackpoint_start_protocol(struct psmouse *psmouse,case TP_VARIANT_ALPS :case TP_VARIANT_ELAN :case TP_VARIANT_NXP : +case TP_VARIANT_JYT_SYNAPTICS : +case TP_VARIANT_SYNAPTICS :if (variant_id) *variant_id = param[0 ];if (firmware_id)
drivers/input/serio/i8042-x86ia64io.h +7 -0
@@ -725,6 +725,13 @@ static const struct dmi_system_id __initconst i8042_dmi_nopnp_table[] = { DMI_MATCH(DMI_BOARD_VENDOR, "MICRO-STAR INTERNATIONAL CO., LTD"), }, }, + { + /* Acer Aspire 5 A515 */ + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Grumpy_PK"), + DMI_MATCH(DMI_BOARD_VENDOR, "PK"), + }, + }, { } };
drivers/iommu/exynos-iommu.c +6 -2
@@ -1302,13 +1302,17 @@ static int exynos_iommu_of_xlate(struct device *dev,return -ENODEV ; data =platform_get_drvdata (sysmmu); -if (!data) +if (!data) { +put_device (&sysmmu->dev);return -ENODEV ; + }if (!owner) { owner =kzalloc (sizeof (*owner),GFP_KERNEL ); -if (!owner) +if (!owner) { +put_device (&sysmmu->dev);return -ENOMEM ; + }INIT_LIST_HEAD (&owner->controllers);mutex_init (&owner->rpm_lock);
drivers/mmc/host/sdhci-pci-core.c +2 -1
@@ -739,7 +739,8 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot)static bool glk_broken_cqhci (struct sdhci_pci_slot *slot) {return slot->chip->pdev->device ==PCI_DEVICE_ID_INTEL_GLK_EMMC && -dmi_match (DMI_BIOS_VENDOR ,"LENOVO" ); + (dmi_match (DMI_BIOS_VENDOR ,"LENOVO" ) || +dmi_match (DMI_SYS_VENDOR ,"IRBIS" )); }static int glk_emmc_probe_slot (struct sdhci_pci_slot *slot)
drivers/net/ethernet/dec/tulip/de2104x.c +1 -1
@@ -91,7 +91,7 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi#define DSL CONFIG_DE2104X_DSL#endif -#define DE_RX_RING_SIZE 64 +#define DE_RX_RING_SIZE 128#define DE_TX_RING_SIZE 64#define DE_RING_BYTES \ ((sizeof(struct de_desc) * DE_RX_RING_SIZE) + \
drivers/net/usb/rndis_host.c +1 -1
@@ -213,7 +213,7 @@ int rndis_command(struct usbnet *dev, struct rndis_msg_hdr *buf, int buflen)dev_dbg (&info->control->dev,"rndis response error, code %d\n" , retval); } -msleep (20 ); +msleep (40 ); }dev_dbg (&info->control->dev,"rndis response timeout\n" );return -ETIMEDOUT ;
drivers/net/wan/hdlc_cisco.c +1 -0
@@ -121,6 +121,7 @@ static void cisco_keepalive_send(struct net_device *dev, u32 type,skb_put (skb,sizeof (struct cisco_packet )); skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);dev_queue_xmit (skb);
drivers/net/wan/hdlc_fr.c +5 -1
@@ -436,6 +436,8 @@ static netdev_tx_t pvc_xmit(struct sk_buff *skb, struct net_device *dev)if (pvc->state.fecn)/* TX Congestion counter */ dev->stats.tx_compressed++; skb->dev = pvc->frad; + skb->protocol =htons (ETH_P_HDLC ); +skb_reset_network_header (skb);dev_queue_xmit (skb);return NETDEV_TX_OK ; }
@@ -558,6 +560,7 @@ static void fr_lmi_send(struct net_device *dev, int fullrep)skb_put (skb, i); skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);dev_queue_xmit (skb);
@@ -1044,7 +1047,7 @@ static void pvc_setup(struct net_device *dev) { dev->type =ARPHRD_DLCI ; dev->flags =IFF_POINTOPOINT ; - dev->hard_header_len =10 ; + dev->hard_header_len =0 ; dev->addr_len =2 ;netif_keep_dst (dev); }
@@ -1096,6 +1099,7 @@ static int fr_add_pvc(struct net_device *frad, unsigned int dlci, int type) dev->mtu =HDLC_MAX_MTU ; dev->min_mtu =68 ; dev->max_mtu =HDLC_MAX_MTU ; + dev->needed_headroom =10 ; dev->priv_flags |=IFF_NO_QUEUE ; dev->ml_priv = pvc;
drivers/net/wan/hdlc_ppp.c +1 -0
@@ -254,6 +254,7 @@ static void ppp_tx_cp(struct net_device *dev, u16 pid, u8 code, skb->priority =TC_PRIO_CONTROL ; skb->dev = dev; + skb->protocol =htons (ETH_P_HDLC );skb_reset_network_header (skb);skb_queue_tail (&tx_queue, skb); }
drivers/net/wan/lapbether.c +2 -2
@@ -201,8 +201,6 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb)struct net_device *dev;int size = skb->len; - skb->protocol =htons (ETH_P_X25 ); - ptr =skb_push (skb,2 ); *ptr++ = size %256 ;
@@ -213,6 +211,8 @@ static void lapbeth_data_transmit(struct net_device *ndev, struct sk_buff *skb) skb->dev = dev = lapbeth->ethdev; + skb->protocol =htons (ETH_P_DEC ); +skb_reset_network_header (skb);dev_hard_header (skb, dev,ETH_P_DEC , bcast_addr,NULL ,0 );
drivers/nvme/host/core.c +15 -0
@@ -2605,10 +2605,24 @@ static int nvme_dev_open(struct inode *inode, struct file *file)return -EWOULDBLOCK ; } +nvme_get_ctrl (ctrl); +if (!try_module_get (ctrl->ops->module)) +return -EINVAL ; + file->private_data = ctrl;return 0 ; } +static int nvme_dev_release (struct inode *inode,struct file *file) +{ +struct nvme_ctrl *ctrl = + container_of(inode->i_cdev, struct nvme_ctrl, cdev); + +module_put (ctrl->ops->module); +nvme_put_ctrl (ctrl); +return 0 ; +} +static int nvme_dev_user_cmd (struct nvme_ctrl *ctrl,void __user *argp) {struct nvme_ns *ns;
@@ -2669,6 +2683,7 @@ static long nvme_dev_ioctl(struct file *file, unsigned int cmd,static const struct file_operations nvme_dev_fops = { .owner =THIS_MODULE , .open = nvme_dev_open, + .release = nvme_dev_release, .unlocked_ioctl = nvme_dev_ioctl, .compat_ioctl = nvme_dev_ioctl, };
drivers/nvme/host/fc.c +4 -2
@@ -3294,12 +3294,14 @@ nvme_fc_create_ctrl(struct device *dev, struct nvmf_ctrl_options *opts)spin_lock_irqsave (&nvme_fc_lock, flags);list_for_each_entry (lport, &nvme_fc_lport_list, port_list) {if (lport->localport.node_name != laddr.nn || - lport->localport.port_name != laddr.pn) + lport->localport.port_name != laddr.pn || + lport->localport.port_state !=FC_OBJSTATE_ONLINE )continue ;list_for_each_entry (rport, &lport->endp_list, endp_list) {if (rport->remoteport.node_name != raddr.nn || - rport->remoteport.port_name != raddr.pn) + rport->remoteport.port_name != raddr.pn || + rport->remoteport.port_state !=FC_OBJSTATE_ONLINE )continue ;/* if fail to get reference fall through. Will error */
drivers/pinctrl/mvebu/pinctrl-armada-xp.c +1 -1
@@ -418,7 +418,7 @@ static struct mvebu_mpp_mode mv98dx3236_mpp_modes[] = { MPP_VAR_FUNCTION(0x1, "i2c0", "sck", V_98DX3236_PLUS)),MPP_MODE (15 ,MPP_VAR_FUNCTION (0x0 ,"gpio" ,NULL ,V_98DX3236_PLUS ), -MPP_VAR_FUNCTION (0x4 ,"i2c0" ,"sda" ,V_98DX3236_PLUS )), +MPP_VAR_FUNCTION (0x1 ,"i2c0" ,"sda" ,V_98DX3236_PLUS )),MPP_MODE (16 ,MPP_VAR_FUNCTION (0x0 ,"gpo" ,NULL ,V_98DX3236_PLUS ), MPP_VAR_FUNCTION(0x4, "dev", "oe", V_98DX3236_PLUS)),
drivers/spi/spi-fsl-espi.c +3 -2
@@ -559,13 +559,14 @@ static void fsl_espi_cpu_irq(struct fsl_espi *espi, u32 events)static irqreturn_t fsl_espi_irq (s32 irq,void *context_data) {struct fsl_espi *espi = context_data; -u32 events; +u32 events, mask;spin_lock (&espi->lock);/* Get interrupt events(tx/rx) */ events =fsl_espi_read_reg (espi,ESPI_SPIE ); -if (!events) { + mask =fsl_espi_read_reg (espi,ESPI_SPIM ); +if (!(events & mask)) {spin_unlock (&espi->lock);return IRQ_NONE ; }
drivers/usb/gadget/function/f_ncm.c +2 -28
@@ -1192,7 +1192,6 @@ static int ncm_unwrap_ntb(struct gether *port,const struct ndp_parser_opts *opts = ncm->parser_opts;unsigned crc_len = ncm->is_crc ?sizeof (uint32_t ) :0 ;int dgram_counter; -bool ndp_after_header;/* dwSignature */ if (get_unaligned_le32 (tmp) != opts->nth_sign) {
@@ -1219,7 +1218,6 @@ static int ncm_unwrap_ntb(struct gether *port, } ndp_index =get_ncm (&tmp, opts->ndp_index); - ndp_after_header = false;/* Run through all the NDP's in the NTB */ do {
@@ -1235,8 +1233,6 @@ static int ncm_unwrap_ntb(struct gether *port, ndp_index); goto err; } -if (ndp_index == opts->nth_size) - ndp_after_header = true;/* * walk through NDP
@@ -1315,37 +1311,13 @@ static int ncm_unwrap_ntb(struct gether *port, index2 =get_ncm (&tmp, opts->dgram_item_len); dg_len2 =get_ncm (&tmp, opts->dgram_item_len); -if (index2 ==0 || dg_len2 ==0 ) -break ; -/* wDatagramIndex[1] */ -if (ndp_after_header) { -if (index2 < opts->nth_size + opts->ndp_size) { -INFO (port->func.config->cdev, -"Bad index: %#X\n" , index2); - goto err; - } - }else { -if (index2 < opts->nth_size + opts->dpe_size) { -INFO (port->func.config->cdev, -"Bad index: %#X\n" , index2); - goto err; - } - }if (index2 > block_len - opts->dpe_size) {INFO (port->func.config->cdev,"Bad index: %#X\n" , index2); goto err; } -/* wDatagramLength[1] */ -if ((dg_len2 <14 + crc_len) || - (dg_len2 > frame_max)) { -INFO (port->func.config->cdev, -"Bad dgram length: %#X\n" , dg_len); - goto err; - } -/* * Copy the data into a new skb. * This ensures the truesize is correct
@@ -1362,6 +1334,8 @@ static int ncm_unwrap_ntb(struct gether *port, ndp_len -=2 * (opts->dgram_item_len *2 ); dgram_counter++; +if (index2 ==0 || dg_len2 ==0 ) +break ; }while (ndp_len >2 * (opts->dgram_item_len *2 )); }while (ndp_index);
drivers/vhost/vsock.c +47 -47
112 lines not on this page · raw message
fs/eventpoll.c +30 -41
154 lines not on this page · raw message
fs/nfs/dir.c +3 -0
@@ -553,6 +553,9 @@ int nfs_readdir_page_filler(nfs_readdir_descriptor_t *desc, struct nfs_entry *enxdr_set_scratch_buffer (&stream,page_address (scratch),PAGE_SIZE ); do { + if (entry->label) + entry->label->len = NFS4_MAXLABELLEN; + status = xdr_decode(desc, entry, &stream); if (status != 0) { if (status == -EAGAIN)
include/linux/mm.h +1 -1
@@ -2179,7 +2179,7 @@ static inline void zero_resv_unavail(void) {}extern void set_dma_reserve (unsigned long new_dma_reserve);extern void memmap_init_zone (unsigned long ,int ,unsigned long ,unsigned long , -enum memmap_context ,struct vmem_altmap *); +enum meminit_context ,struct vmem_altmap *);extern void setup_per_zone_wmarks (void );extern int __meminit init_per_zone_wmark_min (void );extern void mem_init (void );
include/linux/mmzone.h +8 -3
@@ -759,10 +759,15 @@ bool zone_watermark_ok(struct zone *z, unsigned int order, unsigned int alloc_flags);bool zone_watermark_ok_safe (struct zone *z,unsigned int order,unsigned long mark,int classzone_idx); -enum memmap_context { -MEMMAP_EARLY , -MEMMAP_HOTPLUG , +/* +* Memory initialization context, use to differentiate memory added by +* the platform statically or via memory hotplug interface. +*/ +enum meminit_context { +MEMINIT_EARLY , +MEMINIT_HOTPLUG , }; +extern void init_currently_empty_zone (struct zone *zone,unsigned long start_pfn,unsigned long size);
include/linux/node.h +7 -4
@@ -32,11 +32,13 @@ extern struct node *node_devices[];typedef void (*node_registration_func_t )(struct node *);#if defined(CONFIG_MEMORY_HOTPLUG_SPARSE ) && defined(CONFIG_NUMA ) -extern int link_mem_sections (int nid,unsigned long start_pfn, -unsigned long end_pfn); +int link_mem_sections (int nid,unsigned long start_pfn, +unsigned long end_pfn, +enum meminit_context context);#else static inline int link_mem_sections (int nid,unsigned long start_pfn, -unsigned long end_pfn) +unsigned long end_pfn, +enum meminit_context context) {return 0 ; }
@@ -61,7 +63,8 @@ static inline int register_one_node(int nid)if (error)return error;/* link memory sections under this node */ - error =link_mem_sections (nid, start_pfn, end_pfn); + error =link_mem_sections (nid, start_pfn, end_pfn, +MEMINIT_EARLY ); }return error;
include/linux/virtio_vsock.h +2 -1
@@ -149,7 +149,8 @@ virtio_transport_dgram_enqueue(struct vsock_sock *vsk,void virtio_transport_destruct (struct vsock_sock *vsk); -void virtio_transport_recv_pkt (struct virtio_vsock_pkt *pkt); +void virtio_transport_recv_pkt (struct virtio_transport *t, +struct virtio_vsock_pkt *pkt);void virtio_transport_free_pkt (struct virtio_vsock_pkt *pkt);void virtio_transport_inc_tx_pkt (struct virtio_vsock_sock *vvs,struct virtio_vsock_pkt *pkt);u32 virtio_transport_get_credit (struct virtio_vsock_sock *vvs,u32 wanted);
kernel/trace/ftrace.c +2 -4
@@ -6370,16 +6370,14 @@ static void ftrace_ops_assist_func(unsigned long ip, unsigned long parent_ip, {int bit; -if ((op->flags &FTRACE_OPS_FL_RCU ) && !rcu_is_watching ()) -return ; - bit =trace_test_and_set_recursion (TRACE_LIST_START ,TRACE_LIST_MAX );if (bit <0 )return ;preempt_disable_notrace (); - op->func (ip, parent_ip, op, regs); +if (!(op->flags &FTRACE_OPS_FL_RCU ) ||rcu_is_watching ()) + op->func (ip, parent_ip, op, regs);preempt_enable_notrace ();trace_clear_recursion (bit);
lib/random32.c +1 -1
@@ -48,7 +48,7 @@ static inline void prandom_state_selftest(void) }#endif -DEFINE_PER_CPU(struct rnd_state, net_rand_state); +DEFINE_PER_CPU(struct rnd_state, net_rand_state) __latent_entropy;/** * prandom_u32_state - seeded pseudo-random number generator.
mm/memory_hotplug.c +3 -2
@@ -733,7 +733,7 @@ void __ref move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn,* are reserved so nobody should be touching them so we should be safe */ memmap_init_zone (nr_pages, nid,zone_idx (zone), start_pfn, -MEMMAP_HOTPLUG , altmap); +MEMINIT_HOTPLUG , altmap);set_zone_contiguous (zone); }
@@ -1102,7 +1102,8 @@ int __ref add_memory_resource(int nid, struct resource *res, bool online) }/* link memory sections under this node.*/ - ret =link_mem_sections (nid,PFN_DOWN (start),PFN_UP (start + size -1 )); + ret =link_mem_sections (nid,PFN_DOWN (start),PFN_UP (start + size -1 ), +MEMINIT_HOTPLUG );BUG_ON (ret);/* create new memmap entry */
mm/page_alloc.c +6 -5
@@ -5480,7 +5480,7 @@ void __ref build_all_zonelists(pg_data_t *pgdat)* done. Non-atomic initialization, single-pass. */ void __meminit memmap_init_zone (unsigned long size,int nid,unsigned long zone, -unsigned long start_pfn,enum memmap_context context, +unsigned long start_pfn,enum meminit_context context,struct vmem_altmap *altmap) {unsigned long end_pfn = start_pfn + size;
@@ -5507,7 +5507,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,* There can be holes in boot-time mem_map[]s handed to this * function. They do not exist on hotplugged memory. */ -if (context !=MEMMAP_EARLY ) +if (context !=MEMINIT_EARLY ) goto not_early;if (!early_pfn_valid (pfn))
@@ -5542,7 +5542,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, not_early: page =pfn_to_page (pfn);__init_single_page (page, pfn, zone, nid); -if (context ==MEMMAP_HOTPLUG ) +if (context ==MEMINIT_HOTPLUG )SetPageReserved (page);/*
@@ -5557,7 +5557,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone,* check here not to call set_pageblock_migratetype() against * pfn out of zone. * -* Please note that MEMMAP_HOTPLUG path doesn't clear memmap +* Please note that MEMINIT_HOTPLUG path doesn't clear memmap * because this is done early in sparse_add_one_section */ if (!(pfn & (pageblock_nr_pages -1 ))) {
@@ -5578,7 +5578,8 @@ static void __meminit zone_init_free_lists(struct zone *zone)#ifndef __HAVE_ARCH_MEMMAP_INIT#define memmap_init (size, nid, zone, start_pfn) \ - memmap_init_zone((size), (nid), (zone), (start_pfn), MEMMAP_EARLY, NULL) + memmap_init_zone((size), (nid), (zone), (start_pfn), \ + MEMINIT_EARLY, NULL)#endif static int zone_batchsize (struct zone *zone)
net/mac80211/vht.c +4 -4
@@ -170,10 +170,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,/* take some capabilities as-is */ cap_info =le32_to_cpu (vht_cap_ie->vht_cap_info); vht_cap->cap = cap_info; - vht_cap->cap &=IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 | -IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 | -IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 | -IEEE80211_VHT_CAP_RXLDPC | + vht_cap->cap &=IEEE80211_VHT_CAP_RXLDPC |IEEE80211_VHT_CAP_VHT_TXOP_PS |IEEE80211_VHT_CAP_HTC_VHT | IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
@@ -182,6 +179,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN ; + vht_cap->cap |=min_t (u32, cap_info &IEEE80211_VHT_CAP_MAX_MPDU_MASK , + own_cap.cap &IEEE80211_VHT_CAP_MAX_MPDU_MASK ); +/* and some based on our own capabilities */ switch (own_cap.cap &IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK ) {case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ :
net/netfilter/nf_conntrack_netlink.c +2 -0
@@ -1129,6 +1129,8 @@ ctnetlink_parse_tuple(const struct nlattr * const cda[],if (!tb[CTA_TUPLE_IP ])return -EINVAL ; +if (l3num !=NFPROTO_IPV4 && l3num !=NFPROTO_IPV6 ) +return -EOPNOTSUPP ; tuple->src.l3num = l3num; err =ctnetlink_parse_tuple_ip (tb[CTA_TUPLE_IP ], tuple);
net/packet/af_packet.c +8 -1
@@ -2162,7 +2162,8 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev,int skb_len = skb->len;unsigned int snaplen, res;unsigned long status =TP_STATUS_USER ; -unsigned short macoff, netoff, hdrlen; +unsigned short macoff, hdrlen; +unsigned int netoff;struct sk_buff *copy_skb =NULL ;struct timespec ts;__u32 ts_status;
@@ -2225,6 +2226,12 @@ static int tpacket_rcv(struct sk_buff *skb, struct net_device *dev, } macoff = netoff - maclen; } +if (netoff >USHRT_MAX ) { +spin_lock (&sk->sk_receive_queue.lock); + po->stats.stats1.tp_drops++; +spin_unlock (&sk->sk_receive_queue.lock); + goto drop_n_restore; + }if (po->tp_version <=TPACKET_V2 ) {if (macoff + snaplen > po->rx_ring.frame_size) { if (po->copy_thresh &&
net/vmw_vsock/virtio_transport.c +168 -97
417 lines not on this page · raw message
net/vmw_vsock/virtio_transport_common.c +7 -6
@@ -669,9 +669,9 @@ static int virtio_transport_reset(struct vsock_sock *vsk,/* Normally packets are associated with a socket. There may be no socket if an * attempt was made to connect to a socket that does not exist. */ -static int virtio_transport_reset_no_sock (struct virtio_vsock_pkt *pkt) +static int virtio_transport_reset_no_sock (const struct virtio_transport *t, +struct virtio_vsock_pkt *pkt) { -const struct virtio_transport *t;struct virtio_vsock_pkt *reply;struct virtio_vsock_pkt_info info = { .op =VIRTIO_VSOCK_OP_RST ,
@@ -691,7 +691,6 @@ static int virtio_transport_reset_no_sock(struct virtio_vsock_pkt *pkt)if (!reply)return -ENOMEM ; - t =virtio_transport_get_ops ();if (!t) {virtio_transport_free_pkt (reply);return -ENOTCONN ;
@@ -993,7 +992,8 @@ static bool virtio_transport_space_update(struct sock *sk,/* We are under the virtio-vsock's vsock->rx_lock or vhost-vsock's vq->mutex * lock. */ -void virtio_transport_recv_pkt (struct virtio_vsock_pkt *pkt) +void virtio_transport_recv_pkt (struct virtio_transport *t, +struct virtio_vsock_pkt *pkt) {struct sockaddr_vm src, dst;struct vsock_sock *vsk;
@@ -1015,7 +1015,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt) le32_to_cpu(pkt->hdr.fwd_cnt));if (le16_to_cpu (pkt->hdr.type) !=VIRTIO_VSOCK_TYPE_STREAM ) { - (void )virtio_transport_reset_no_sock (pkt); + (void )virtio_transport_reset_no_sock (t, pkt); goto free_pkt; }
@@ -1026,7 +1026,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt)if (!sk) { sk =vsock_find_bound_socket (&dst);if (!sk) { - (void )virtio_transport_reset_no_sock (pkt); + (void )virtio_transport_reset_no_sock (t, pkt); goto free_pkt; } }
@@ -1060,6 +1060,7 @@ void virtio_transport_recv_pkt(struct virtio_vsock_pkt *pkt)virtio_transport_free_pkt (pkt);break ;default : + (void )virtio_transport_reset_no_sock (t, pkt);virtio_transport_free_pkt (pkt);break ; }