Linux 4.14.201
Greg Kroah-Hartman
maintainerI'm announcing the release of the 4.14.201 kernel.
All users of the 4.14 kernel series must upgrade.
The updated 4.14.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-4.14.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/base/dd.c | 5 drivers/clk/samsung/clk-exynos4.c | 4 drivers/gpio/gpio-tc3589x.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 1 drivers/gpu/drm/drm_syncobj.c | 1 drivers/gpu/drm/sun4i/sun8i_mixer.c | 2 drivers/i2c/busses/i2c-cpm.c | 3 drivers/i2c/busses/i2c-meson.c | 19 + drivers/input/mouse/trackpoint.c | 2 drivers/input/serio/i8042-x86ia64io.h | 7 drivers/iommu/exynos-iommu.c | 8 drivers/mmc/core/queue.c | 2 drivers/mtd/nand/sunxi_nand.c | 2 drivers/net/bonding/bond_main.c | 1 drivers/net/ethernet/dec/tulip/de2104x.c | 2 drivers/net/ethernet/renesas/ravb_main.c | 110 +++---- drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 15 - drivers/net/macsec.c | 4 drivers/net/phy/Kconfig | 1 drivers/net/team/team.c | 3 drivers/net/usb/ax88179_178a.c | 1 drivers/net/usb/rndis_host.c | 2 drivers/net/usb/rtl8150.c | 16 - 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/fc.c | 6 drivers/pinctrl/mvebu/pinctrl-armada-xp.c | 2 drivers/platform/x86/Kconfig | 1 drivers/platform/x86/thinkpad_acpi.c | 6 drivers/spi/spi-fsl-espi.c | 5 drivers/usb/gadget/function/f_ncm.c | 30 -- drivers/vhost/vsock.c | 94 +++--- drivers/video/console/newport_con.c | 7 drivers/video/fbdev/core/fbcon.c | 12 drivers/video/fbdev/core/fbcon.h | 7 drivers/video/fbdev/core/fbcon_rotate.c | 1 drivers/video/fbdev/core/tileblit.c | 1 fs/btrfs/ctree.h | 1 fs/btrfs/disk-io.c | 1 fs/btrfs/inode.c | 25 - fs/btrfs/ioctl.c | 16 + fs/cifs/smb2ops.c | 2 fs/eventpoll.c | 71 ++--- fs/nfs/dir.c | 3 include/linux/font.h | 13 include/linux/khugepaged.h | 5 include/linux/virtio_vsock.h | 3 include/net/xfrm.h | 16 - kernel/events/core.c | 5 kernel/trace/ftrace.c | 8 kernel/umh.c | 9 lib/fonts/font_10x18.c | 9 lib/fonts/font_6x10.c | 9 lib/fonts/font_6x11.c | 9 lib/fonts/font_7x14.c | 9 lib/fonts/font_8x16.c | 9 lib/fonts/font_8x8.c | 9 lib/fonts/font_acorn_8x8.c | 9 lib/fonts/font_mini_4x6.c | 8 lib/fonts/font_pearl_8x8.c | 9 lib/fonts/font_sun12x22.c | 9 lib/fonts/font_sun8x16.c | 7 lib/random32.c | 2 mm/khugepaged.c | 25 + mm/page_alloc.c | 3 net/mac80211/vht.c | 8 net/netfilter/nf_conntrack_netlink.c | 2 net/openvswitch/conntrack.c | 22 - net/packet/af_packet.c | 9 net/rxrpc/conn_event.c | 6 net/rxrpc/key.c | 18 - net/sctp/auth.c | 1 net/vmw_vsock/virtio_transport.c | 265 ++++++++++++------- net/vmw_vsock/virtio_transport_common.c | 13 net/wireless/nl80211.c | 3 net/xfrm/xfrm_state.c | 41 ++ tools/perf/builtin-top.c | 4 81 files changed, 647 insertions(+), 450 deletions(-)
Aaron Ma (1):
platform/x86: thinkpad_acpi: re-initialize ACPI buffer size when reuse
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...
Anant Thazhemadam (3):
net: wireless: nl80211: fix out-of-bounds access in nl80211_del_key()
net: team: fix memory leak in __team_options_register
net: usb: rtl8150: set random MAC address when set_ethernet_addr() fails
Antony Antony (3):
xfrm: clone XFRMA_REPLAY_ESN_VAL in xfrm_do_migrate
xfrm: clone XFRMA_SEC_CTX in xfrm_do_migrate
xfrm: clone whole liftime_cur structure in xfrm_do_migrate
Bryan O'Donoghue (1):
USB: gadget: f_ncm: Fix NDP16 datagram validation
Chris Packham (2):
spi: fsl-espi: Only process interrupts for expected events
pinctrl: mvebu: Fix i2c sda definition for 98DX3236
Coly Li (1):
mmc: core: don't set limits.discard_granularity as 0
David Howells (3):
rxrpc: Downgrade the BUG() for unsupported token type in rxrpc_read()
rxrpc: Fix some missing _bh annotations on locking conn->state_lock
rxrpc: Fix server keyring leak
Dumitru Ceara (1):
openvswitch: handle DNAT tuple collision
Eric Dumazet (4):
macsec: avoid use-after-free in macsec_handle_frame()
sctp: fix sctp_auth_init_hmacs() error path
team: set dev->needed_headroom in team_setup_by_port()
bonding: set dev->needed_headroom in bond_setup_by_slave()
Felix Fietkau (1):
mac80211: do not allow bigger VHT MPDUs than the hardware supports
Geert Uytterhoeven (1):
Revert "ravb: Fixed to be able to unload modules"
Giuliano Procida (1):
drm/syncobj: Fix drm_syncobj_handle_to_fd refcount leak
Greg Kroah-Hartman (1):
Linux 4.14.201
Herbert Xu (1):
xfrm: Use correct address family in xfrm_state_find
Hugh Dickins (1):
mm/khugepaged: fix filemap page_to_pgoff(page) != offset
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
Jerome Brunet (1):
i2c: meson: fix clock setting overwrite
Jiri Kosina (1):
Input: i8042 - add nopnp quirk for Acer Aspire 5 A515
Kajol Jain (1):
perf: Fix task_function_call() error handling
Linus Torvalds (1):
usermodehelper: reset umask to default before executing user process
Lucy Yan (1):
net: dec: de2104x: Increase receive ring size for Tulip
Marc Dionne (1):
rxrpc: Fix rxkad token xdr encoding
Marek Szyprowski (1):
clk: samsung: exynos4: mark 'chipid' clock as CLK_IGNORE_UNUSED
Martin Cerveny (1):
drm/sun4i: mixer: Extend regmap max_register
Miquel Raynal (1):
mtd: rawnand: sunxi: Fix the probe error path
Necip Fazil Yildiran (1):
platform/x86: fix kconfig dependency warning for FUJITSU_LAPTOP
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
Peilin Ye (3):
fbdev, newport_con: Move FONT_EXTRA_WORDS macros into linux/font.h
Fonts: Support FONT_EXTRA_WORDS macros for built-in fonts
fbcon: Fix global-out-of-bounds read in fbcon_get_font()
Philip Yang (1):
drm/amdgpu: prevent double kfree ttm->sg
Randy Dunlap (1):
mdio: fix mdio-thunder.c dependency & build error
Robbie Ko (1):
Btrfs: fix unexpected failure of nocow buffered writes after snapshotting when low on space
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
Tetsuo Handa (1):
driver core: Fix probe_count imbalance in really_probe()
Thibaut Sautereau (1):
random32: Restore __latent_entropy attribute on net_rand_state
Tom Rix (1):
platform/x86: thinkpad_acpi: initialize tp_nvram_state variable
Tommi Rantala (1):
perf top: Fix stdio interface input handling with glibc 2.28+
Vijay Balakrishna (1):
mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged
Vincent Huang (1):
Input: trackpoint - enable Synaptics trackpoints
Vladimir Zapolskiy (1):
cifs: Fix incomplete memory allocation on setxattr path
Voon Weifeng (1):
net: stmmac: removed enabling eee in EEE set callback
Wilken Gottwalt (1):
net: usb: ax88179_178a: fix missing stop entry in driver_info
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 = 14 -SUBLEVEL = 200 +SUBLEVEL = 201 EXTRAVERSION = NAME = Petit Gorille
drivers/base/dd.c +3 -2
@@ -377,7 +377,8 @@ static int really_probe(struct device *dev, struct device_driver *drv) drv->bus->name, __func__, drv->name, dev_name(dev));if (!list_empty (&dev->devres_head)) {dev_crit (dev,"Resources present before probing\n" ); -return -EBUSY ; + ret = -EBUSY ; + goto done; } re_probe:
@@ -486,7 +487,7 @@ static int really_probe(struct device *dev, struct device_driver *drv) ret =0 ; done:atomic_dec (&probe_count); -wake_up (&probe_waitqueue); +wake_up_all (&probe_waitqueue);return ret; }
drivers/clk/samsung/clk-exynos4.c +2 -2
@@ -1075,7 +1075,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,
@@ -1116,7 +1116,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/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
@@ -284,7 +284,7 @@ int amdgpu_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/amd/amdgpu/amdgpu_ttm.c +1 -0
@@ -727,6 +727,7 @@ static int amdgpu_ttm_tt_pin_userptr(struct ttm_tt *ttm) release_sg:kfree (ttm->sg); + ttm->sg =NULL ;return r; }
drivers/gpu/drm/drm_syncobj.c +0 -1
@@ -355,7 +355,6 @@ static int drm_syncobj_handle_to_fd(struct drm_file *file_private,return PTR_ERR (file); } -drm_syncobj_get (syncobj);fd_install (fd, file); *p_fd = fd;
drivers/gpu/drm/sun4i/sun8i_mixer.c +1 -1
@@ -235,7 +235,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_bind(struct device *dev, struct device *master,
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/i2c/busses/i2c-meson.c +18 -1
@@ -8,6 +8,7 @@* published by the Free Software Foundation. */ +#include <linux/bitfield.h> #include <linux/clk.h> #include <linux/completion.h> #include <linux/i2c.h>
@@ -39,6 +40,12 @@#define REG_CTRL_CLKDIVEXT_SHIFT 28#define REG_CTRL_CLKDIVEXT_MASK GENMASK(29, 28) +#define REG_SLV_ADDR GENMASK(7, 0) +#define REG_SLV_SDA_FILTER GENMASK(10, 8) +#define REG_SLV_SCL_FILTER GENMASK(13, 11) +#define REG_SLV_SCL_LOW GENMASK(27, 16) +#define REG_SLV_SCL_LOW_EN BIT(28) +#define I2C_TIMEOUT_MS 500enum {
@@ -142,6 +149,9 @@ static void meson_i2c_set_clk_div(struct meson_i2c *i2c, unsigned int freq)meson_i2c_set_mask (i2c,REG_CTRL ,REG_CTRL_CLKDIVEXT_MASK , (div >>10 ) <<REG_CTRL_CLKDIVEXT_SHIFT ); +/* Disable HIGH/LOW mode */ +meson_i2c_set_mask (i2c,REG_SLAVE_ADDR ,REG_SLV_SCL_LOW_EN ,0 ); +dev_dbg (i2c->dev,"%s: clk %lu, freq %u, div %u\n" , __func__, clk_rate, freq, div); }
@@ -269,7 +279,10 @@ static void meson_i2c_do_start(struct meson_i2c *i2c, struct i2c_msg *msg) token = (msg->flags &I2C_M_RD ) ?TOKEN_SLAVE_ADDR_READ :TOKEN_SLAVE_ADDR_WRITE ; -writel (msg->addr <<1 , i2c->regs +REG_SLAVE_ADDR ); + +meson_i2c_set_mask (i2c,REG_SLAVE_ADDR ,REG_SLV_ADDR , +FIELD_PREP (REG_SLV_ADDR , msg->addr <<1 )); +meson_i2c_add_token (i2c,TOKEN_START );meson_i2c_add_token (i2c, token); }
@@ -425,6 +438,10 @@ static int meson_i2c_probe(struct platform_device *pdev)return ret; } +/* Disable filtering */ +meson_i2c_set_mask (i2c,REG_SLAVE_ADDR , +REG_SLV_SDA_FILTER |REG_SLV_SCL_FILTER ,0 ); +meson_i2c_set_clk_div (i2c, timings.bus_freq_hz);return 0 ;
drivers/input/mouse/trackpoint.c +2 -0
@@ -297,6 +297,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
@@ -1296,13 +1296,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/core/queue.c +1 -1
@@ -143,7 +143,7 @@ static void mmc_queue_setup_discard(struct request_queue *q, q->limits.discard_granularity = card->pref_erase <<9 ;/* granularity must not be greater than max. discard */ if (card->pref_erase > max_discard) - q->limits.discard_granularity =0 ; + q->limits.discard_granularity =SECTOR_SIZE ;if (mmc_can_secure_erase_trim (card))queue_flag_set_unlocked (QUEUE_FLAG_SECERASE , q); }
drivers/mtd/nand/sunxi_nand.c +1 -1
@@ -2125,7 +2125,7 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc, ret =mtd_device_register (mtd,NULL ,0 );if (ret) {dev_err (dev,"failed to register mtd device: %d\n" , ret); -nand_release (nand); +nand_cleanup (nand);return ret; }
drivers/net/bonding/bond_main.c +1 -0
@@ -1129,6 +1129,7 @@ static void bond_setup_by_slave(struct net_device *bond_dev, bond_dev->type = slave_dev->type; bond_dev->hard_header_len = slave_dev->hard_header_len; + bond_dev->needed_headroom = slave_dev->needed_headroom; bond_dev->addr_len = slave_dev->addr_len; memcpy(bond_dev->broadcast, slave_dev->broadcast,
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/ethernet/renesas/ravb_main.c +55 -55
158 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +4 -11
@@ -677,23 +677,16 @@ static int stmmac_ethtool_op_set_eee(struct net_device *dev,struct stmmac_priv *priv =netdev_priv (dev);int ret; -if (!edata->eee_enabled) { +if (!priv->dma_cap.eee) +return -EOPNOTSUPP ; + +if (!edata->eee_enabled)stmmac_disable_eee_mode (priv); - }else { -/* We are asking for enabling the EEE but it is safe -* to verify all by invoking the eee_init function. -* In case of failure it will return an error. -*/ - edata->eee_enabled =stmmac_eee_init (priv); -if (!edata->eee_enabled) -return -EOPNOTSUPP ; - } ret =phy_ethtool_set_eee (dev->phydev, edata);if (ret)return ret; - priv->eee_enabled = edata->eee_enabled; priv->tx_lpi_timer = edata->tx_lpi_timer;return 0 ; }
drivers/net/macsec.c +3 -1
@@ -1081,6 +1081,7 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)struct macsec_rx_sa *rx_sa;struct macsec_rxh_data *rxd;struct macsec_dev *macsec; +unsigned int len;sci_t sci;u32 pn;bool cbit;
@@ -1236,9 +1237,10 @@ static rx_handler_result_t macsec_handle_frame(struct sk_buff **pskb)macsec_rxsc_put (rx_sc);skb_orphan (skb); + len = skb->len; ret =gro_cells_receive (&macsec->gro_cells, skb);if (ret ==NET_RX_SUCCESS ) -count_rx (dev, skb->len); +count_rx (dev, len);else macsec->secy.netdev->stats.rx_dropped++;
drivers/net/phy/Kconfig +1 -0
@@ -146,6 +146,7 @@ config MDIO_THUNDER depends on 64BIT depends on PCI select MDIO_CAVIUM + select MDIO_DEVRES help This driver supports the MDIO interfaces found on Cavium ThunderX SoCs when the MDIO bus device appears as a PCI
drivers/net/team/team.c +2 -1
@@ -299,7 +299,7 @@ static int __team_options_register(struct team *team,for (i--; i >=0 ; i--)__team_option_inst_del_option (team, dst_opts[i]); - i = option_count -1 ; + i = option_count; alloc_rollback:for (i--; i >=0 ; i--)kfree (dst_opts[i]);
@@ -2078,6 +2078,7 @@ static void team_setup_by_port(struct net_device *dev, dev->header_ops = port_dev->header_ops; dev->type = port_dev->type; dev->hard_header_len = port_dev->hard_header_len; + dev->needed_headroom = port_dev->needed_headroom; dev->addr_len = port_dev->addr_len; dev->mtu = port_dev->mtu;memcpy (dev->broadcast, port_dev->broadcast, port_dev->addr_len);
drivers/net/usb/ax88179_178a.c +1 -0
@@ -1736,6 +1736,7 @@ static const struct driver_info belkin_info = { .status = ax88179_status, .link_reset = ax88179_link_reset, .reset = ax88179_reset, + .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, .tx_fixup = ax88179_tx_fixup,
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/usb/rtl8150.c +12 -4
@@ -277,12 +277,20 @@ static int write_mii_word(rtl8150_t * dev, u8 phy, __u8 indx, u16 reg)return 1 ; } -static inline void set_ethernet_addr (rtl8150_t * dev) +static void set_ethernet_addr (rtl8150_t *dev) { -u8 node_id[6 ]; +u8 node_id[ETH_ALEN ]; +int ret; + + ret =get_registers (dev,IDR ,sizeof (node_id), node_id); -get_registers (dev,IDR ,sizeof (node_id), node_id); -memcpy (dev->netdev->dev_addr, node_id,sizeof (node_id)); +if (ret ==sizeof (node_id)) { +ether_addr_copy (dev->netdev->dev_addr, node_id); + }else { +eth_hw_addr_random (dev->netdev); +netdev_notice (dev->netdev,"Assigned a random MAC address: %pM\n" , + dev->netdev->dev_addr); + } }static int rtl8150_set_mac_address (struct net_device *netdev,void *p)
drivers/net/wan/hdlc_cisco.c +1 -0
@@ -120,6 +120,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
@@ -435,6 +435,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 ; }
@@ -557,6 +559,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);
@@ -1045,7 +1048,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); }
@@ -1097,6 +1100,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/fc.c +4 -2
@@ -3012,12 +3012,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/platform/x86/Kconfig +1 -0
@@ -183,6 +183,7 @@ config FUJITSU_LAPTOP depends on BACKLIGHT_CLASS_DEVICE depends on ACPI_VIDEO || ACPI_VIDEO = n select INPUT_SPARSEKMAP + select NEW_LEDS select LEDS_CLASS ---help--- This is a driver for laptops built by Fujitsu:
drivers/platform/x86/thinkpad_acpi.c +4 -2
@@ -2477,7 +2477,7 @@ static void hotkey_compare_and_issue_event(struct tp_nvram_state *oldn,*/ static int hotkey_kthread (void *data) { -struct tp_nvram_state s[2 ]; +struct tp_nvram_state s[2 ] = {0 };u32 poll_mask, event_mask;unsigned int si, so;unsigned long t;
@@ -6749,8 +6749,10 @@ static int __init tpacpi_query_bcl_levels(acpi_handle handle)list_for_each_entry (child, &device->children, node) {acpi_status status =acpi_evaluate_object (child->handle,"_BCL" ,NULL , &buffer); -if (ACPI_FAILURE (status)) +if (ACPI_FAILURE (status)) { + buffer.length =ACPI_ALLOCATE_BUFFER ;continue ; + } obj = (union acpi_object *)buffer.pointer;if (!obj || (obj->type !=ACPI_TYPE_PACKAGE )) {
drivers/spi/spi-fsl-espi.c +3 -2
@@ -556,13 +556,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
@@ -1210,7 +1210,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) {
@@ -1237,7 +1236,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 {
@@ -1253,8 +1251,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
@@ -1333,37 +1329,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
@@ -1380,6 +1352,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
drivers/video/console/newport_con.c +1 -6
@@ -35,12 +35,6 @@#define FONT_DATA ((unsigned char *)font_vga_8x16.data) -/* borrowed from fbcon.c */ -#define REFCOUNT (fd) (((int *)(fd))[-1]) -#define FNTSIZE (fd) (((int *)(fd))[-2]) -#define FNTCHARCNT (fd) (((int *)(fd))[-3]) -#define FONT_EXTRA_WORDS 3 -static unsigned char *font_data[MAX_NR_CONSOLES ];static struct newport_regs *npregs;
@@ -522,6 +516,7 @@ static int newport_set_font(int unit, struct console_font *op)FNTSIZE (new_data) = size;FNTCHARCNT (new_data) = op->charcount;REFCOUNT (new_data) =0 ;/* usage counter */ +FNTSUM (new_data) =0 ; p = new_data;for (i =0 ; i < op->charcount; i++) {
drivers/video/fbdev/core/fbcon.c +12 -0
@@ -2248,6 +2248,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font)if (font->width <=8 ) { j = vc->vc_font.height; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,32 - j);
@@ -2256,6 +2259,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) } }else if (font->width <=16 ) { j = vc->vc_font.height *2 ; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,64 - j);
@@ -2263,6 +2269,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) fontdata += j; } }else if (font->width <=24 ) { +if (font->charcount * (vc->vc_font.height *sizeof (u32)) >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {for (j =0 ; j < vc->vc_font.height; j++) { *data++ = fontdata[0 ];
@@ -2275,6 +2284,9 @@ static int fbcon_get_font(struct vc_data *vc, struct console_font *font) } }else { j = vc->vc_font.height *4 ; +if (font->charcount * j >FNTSIZE (fontdata)) +return -EINVAL ; +for (i =0 ; i < font->charcount; i++) {memcpy (data, fontdata, j);memset (data + j,0 ,128 - j);
drivers/video/fbdev/core/fbcon.h +0 -7
@@ -151,13 +151,6 @@ static inline int attr_col_ec(int shift, struct vc_data *vc,#define attr_bgcol_ec (bgshift, vc, info) attr_col_ec(bgshift, vc, info, 0)#define attr_fgcol_ec (fgshift, vc, info) attr_col_ec(fgshift, vc, info, 1) -/* Font */ -#define REFCOUNT (fd) (((int *)(fd))[-1]) -#define FNTSIZE (fd) (((int *)(fd))[-2]) -#define FNTCHARCNT (fd) (((int *)(fd))[-3]) -#define FNTSUM (fd) (((int *)(fd))[-4]) -#define FONT_EXTRA_WORDS 4 -/* * Scroll Method */
drivers/video/fbdev/core/fbcon_rotate.c +1 -0
@@ -14,6 +14,7 @@#include <linux/fb.h> #include <linux/vt_kern.h> #include <linux/console.h> +#include <linux/font.h> #include <asm/types.h> #include "fbcon.h" #include "fbcon_rotate.h"
drivers/video/fbdev/core/tileblit.c +1 -0
@@ -13,6 +13,7 @@#include <linux/fb.h> #include <linux/vt_kern.h> #include <linux/console.h> +#include <linux/font.h> #include <asm/types.h> #include "fbcon.h"
fs/btrfs/ctree.h +1 -0
@@ -1257,6 +1257,7 @@ struct btrfs_root {int send_in_progress;struct btrfs_subvolume_writers *subv_writers;atomic_t will_be_snapshotted; +atomic_t snapshot_force_cow;/* For qgroup metadata space reserve */ atomic64_t qgroup_meta_rsv;
fs/btrfs/disk-io.c +1 -0
@@ -1200,6 +1200,7 @@ static void __setup_root(struct btrfs_root *root, struct btrfs_fs_info *fs_info,refcount_set (&root->refs,1 );atomic_set (&root->will_be_snapshotted,0 );atomic64_set (&root->qgroup_meta_rsv,0 ); +atomic_set (&root->snapshot_force_cow,0 ); root->log_transid =0 ; root->log_transid_committed =-1 ; root->last_log_commit =0 ;
fs/btrfs/inode.c +4 -21
@@ -1335,7 +1335,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,u64 disk_num_bytes;u64 ram_bytes;int extent_type; -int ret, err; +int ret;int type;int nocow;int check_prev =1 ;
@@ -1460,11 +1460,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,* if there are pending snapshots for this root, * we fall into common COW way. */ -if (!nolock) { - err =btrfs_start_write_no_snapshotting (root); -if (!err) - goto out_check; - } +if (!nolock &&atomic_read (&root->snapshot_force_cow)) + goto out_check;/* * force cow if csum exists in the range. * this ensure that csum for a given extent are
@@ -1473,9 +1470,6 @@ static noinline int run_delalloc_nocow(struct inode *inode, ret =csum_exist_in_range (fs_info, disk_bytenr, num_bytes);if (ret) { -if (!nolock) -btrfs_end_write_no_snapshotting (root); -/* * ret could be -EIO if the above fails to read * metadata.
@@ -1488,11 +1482,8 @@ static noinline int run_delalloc_nocow(struct inode *inode,WARN_ON_ONCE (nolock); goto out_check; } -if (!btrfs_inc_nocow_writers (fs_info, disk_bytenr)) { -if (!nolock) -btrfs_end_write_no_snapshotting (root); +if (!btrfs_inc_nocow_writers (fs_info, disk_bytenr)) goto out_check; - } nocow =1 ; }else if (extent_type ==BTRFS_FILE_EXTENT_INLINE ) { extent_end = found_key.offset +
@@ -1505,8 +1496,6 @@ static noinline int run_delalloc_nocow(struct inode *inode, out_check:if (extent_end <= start) { path->slots[0 ]++; -if (!nolock && nocow) -btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr); goto next_slot;
@@ -1528,8 +1517,6 @@ static noinline int run_delalloc_nocow(struct inode *inode, end, page_started, nr_written,1 , NULL);if (ret) { -if (!nolock && nocow) -btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr);
@@ -1549,8 +1536,6 @@ static noinline int run_delalloc_nocow(struct inode *inode, ram_bytes,BTRFS_COMPRESS_NONE , BTRFS_ORDERED_PREALLOC);if (IS_ERR (em)) { -if (!nolock && nocow) -btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr);
@@ -1589,8 +1574,6 @@ static noinline int run_delalloc_nocow(struct inode *inode,EXTENT_CLEAR_DATA_RESV , PAGE_UNLOCK | PAGE_SET_PRIVATE2); -if (!nolock && nocow) -btrfs_end_write_no_snapshotting (root); cur_offset = extent_end;/*
fs/btrfs/ioctl.c +16 -0
@@ -655,6 +655,7 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir,struct btrfs_pending_snapshot *pending_snapshot;struct btrfs_trans_handle *trans;int ret; +bool snapshot_force_cow = false;if (!test_bit (BTRFS_ROOT_REF_COWS , &root->state))return -EINVAL ;
@@ -671,6 +672,11 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir, goto free_pending; } +/* +* Force new buffered writes to reserve space even when NOCOW is +* possible. This is to avoid later writeback (running dealloc) to +* fallback to COW mode and unexpectedly fail with ENOSPC. +*/ atomic_inc (&root->will_be_snapshotted);smp_mb__after_atomic ();btrfs_wait_for_no_snapshotting_writes (root);
@@ -679,6 +685,14 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir,if (ret) goto dec_and_free; +/* +* All previous writes have started writeback in NOCOW mode, so now +* we force future writes to fallback to COW mode during snapshot +* creation. +*/ +atomic_inc (&root->snapshot_force_cow); + snapshot_force_cow = true; +btrfs_wait_ordered_extents (root,U64_MAX ,0 , (u64)-1 ); btrfs_init_block_rsv(&pending_snapshot->block_rsv,
@@ -744,6 +758,8 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir, fail:btrfs_subvolume_release_metadata (fs_info, &pending_snapshot->block_rsv); dec_and_free: +if (snapshot_force_cow) +atomic_dec (&root->snapshot_force_cow);if (atomic_dec_and_test (&root->will_be_snapshotted))wake_up_atomic_t (&root->will_be_snapshotted); free_pending:
fs/cifs/smb2ops.c +1 -1
@@ -652,7 +652,7 @@ smb2_set_ea(const unsigned int xid, struct cifs_tcon *tcon,return rc; } - len =sizeof (ea) + ea_name_len + ea_value_len +1 ; + len =sizeof (*ea) + ea_name_len + ea_value_len +1 ; ea =kzalloc (len,GFP_KERNEL );if (ea ==NULL ) {SMB2_close (xid, tcon, fid.persistent_fid, fid.volatile_fid);
fs/eventpoll.c +30 -41
154 lines not on this page · raw message
fs/nfs/dir.c +3 -0
@@ -560,6 +560,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/font.h +13 -0
@@ -57,4 +57,17 @@ extern const struct font_desc *get_default_font(int xres, int yres,/* Max. length for the name of a predefined font */ #define MAX_FONT_NAME 32 +/* Extra word getters */ +#define REFCOUNT (fd) (((int *)(fd))[-1]) +#define FNTSIZE (fd) (((int *)(fd))[-2]) +#define FNTCHARCNT (fd) (((int *)(fd))[-3]) +#define FNTSUM (fd) (((int *)(fd))[-4]) + +#define FONT_EXTRA_WORDS 4 + +struct font_data { +unsigned int extra[FONT_EXTRA_WORDS ]; +const unsigned char data[]; +} __packed; +#endif /* _VIDEO_FONT_H */
include/linux/khugepaged.h +5 -0
@@ -15,6 +15,7 @@ extern int __khugepaged_enter(struct mm_struct *mm);extern void __khugepaged_exit (struct mm_struct *mm);extern int khugepaged_enter_vma_merge (struct vm_area_struct *vma,unsigned long vm_flags); +extern void khugepaged_min_free_kbytes_update (void );#define khugepaged_enabled () \ (transparent_hugepage_flags & \
@@ -73,6 +74,10 @@ static inline int khugepaged_enter_vma_merge(struct vm_area_struct *vma, {return 0 ; } + +static inline void khugepaged_min_free_kbytes_update (void ) +{ +}#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ #endif /* _LINUX_KHUGEPAGED_H */
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);
include/net/xfrm.h +6 -10
@@ -1808,21 +1808,17 @@ static inline int xfrm_replay_state_esn_len(struct xfrm_replay_state_esn *replaystatic inline int xfrm_replay_clone (struct xfrm_state *x,struct xfrm_state *orig) { - x->replay_esn =kzalloc (xfrm_replay_state_esn_len (orig->replay_esn), + + x->replay_esn =kmemdup (orig->replay_esn, +xfrm_replay_state_esn_len (orig->replay_esn),GFP_KERNEL );if (!x->replay_esn)return -ENOMEM ; - - x->replay_esn->bmp_len = orig->replay_esn->bmp_len; - x->replay_esn->replay_window = orig->replay_esn->replay_window; - - x->preplay_esn =kmemdup (x->replay_esn, -xfrm_replay_state_esn_len (x->replay_esn), + x->preplay_esn =kmemdup (orig->preplay_esn, +xfrm_replay_state_esn_len (orig->preplay_esn),GFP_KERNEL ); -if (!x->preplay_esn) { -kfree (x->replay_esn); +if (!x->preplay_esn)return -ENOMEM ; - }return 0 ; }
kernel/events/core.c +3 -2
@@ -98,7 +98,7 @@ static void remote_function(void *data)* retry due to any failures in smp_call_function_single(), such as if the * task_cpu() goes offline concurrently. * -* returns @func return value or -ESRCH when the process isn't running +* returns @func return value or -ESRCH or -ENXIO when the process isn't running */ static int task_function_call (struct task_struct *p,remote_function_f func,void *info)
@@ -114,7 +114,8 @@ task_function_call(struct task_struct *p, remote_function_f func, void *info)for (;;) { ret =smp_call_function_single (task_cpu (p), remote_function, &data,1 ); - ret = !ret ? data.ret : -EAGAIN ; +if (!ret) + ret = data.ret;if (ret != -EAGAIN )break ;
kernel/trace/ftrace.c +3 -5
@@ -6159,17 +6159,15 @@ 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 (); -if (!(op->flags &FTRACE_OPS_FL_PER_CPU ) || - !ftrace_function_local_disabled (op)) { +if ((!(op->flags &FTRACE_OPS_FL_RCU ) ||rcu_is_watching ()) && + (!(op->flags &FTRACE_OPS_FL_PER_CPU ) || + !ftrace_function_local_disabled (op))) { op->func (ip, parent_ip, op, regs); }
kernel/umh.c +9 -0
@@ -13,6 +13,7 @@#include <linux/cred.h> #include <linux/file.h> #include <linux/fdtable.h> +#include <linux/fs_struct.h> #include <linux/workqueue.h> #include <linux/security.h> #include <linux/mount.h>
@@ -70,6 +71,14 @@ static int call_usermodehelper_exec_async(void *data)flush_signal_handlers (current,1 );spin_unlock_irq (¤t->sighand->siglock); +/* +* Initial kernel threads share ther FS with init, in order to +* get the init root directory. But we've now created a new +* thread that is going to execve a user process and has its own +* 'struct fs_struct'. Reset umask to the default. +*/ + current->fs->umask =0022 ; +/* * Our parent (unbound workqueue) runs with elevated scheduling * priority. Avoid propagating that into the userspace child.
lib/fonts/font_10x18.c +4 -5
@@ -8,8 +8,8 @@#define FONTDATAMAX 9216 -static const unsigned char fontdata_10x18[FONTDATAMAX ] = { - +static struct font_data fontdata_10x18 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 0000000000 */ 0x00 ,0x00 ,/* 0000000000 */
@@ -5129,8 +5129,7 @@ static const unsigned char fontdata_10x18[FONTDATAMAX] = {0x00 ,0x00 ,/* 0000000000 */ 0x00 ,0x00 ,/* 0000000000 */ 0x00, 0x00, /* 0000000000 */ - -}; +} }; const struct font_desc font_10x18 = {
@@ -5138,7 +5137,7 @@ const struct font_desc font_10x18 = { .name = "10x18", .width = 10, .height = 18, - .data = fontdata_10x18, + .data = fontdata_10x18.data,#ifdef __sparc__ .pref = 5,#else
lib/fonts/font_6x10.c +5 -4
@@ -1,8 +1,10 @@// SPDX-License-Identifier: GPL-2.0 #include <linux/font.h> -static const unsigned char fontdata_6x10[] = { +#define FONTDATAMAX 2560 +static struct font_data fontdata_6x10 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -3074,14 +3076,13 @@ static const unsigned char fontdata_6x10[] = { 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} };const struct font_desc font_6x10 = { .idx = FONT6x10_IDX, .name ="6x10" , .width =6 , .height =10 , - .data = fontdata_6x10, + .data = fontdata_6x10.data, .pref =0 , };
lib/fonts/font_6x11.c +4 -5
@@ -9,8 +9,8 @@#define FONTDATAMAX (11*256) -static const unsigned char fontdata_6x11[FONTDATAMAX ] = { - +static struct font_data fontdata_6x11 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -3338,8 +3338,7 @@ static const unsigned char fontdata_6x11[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_6x11 = {
@@ -3347,7 +3346,7 @@ const struct font_desc font_vga_6x11 = { .name = "ProFont6x11", .width = 6, .height = 11, - .data = fontdata_6x11, + .data = fontdata_6x11.data, /* Try avoiding this font if possible unless on MAC */ .pref = -2000, };
lib/fonts/font_7x14.c +4 -5
@@ -8,8 +8,8 @@#define FONTDATAMAX 3584 -static const unsigned char fontdata_7x14[FONTDATAMAX ] = { - +static struct font_data fontdata_7x14 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 0000000 */ 0x00 ,/* 0000000 */
@@ -4105,8 +4105,7 @@ static const unsigned char fontdata_7x14[FONTDATAMAX] = {0x00 ,/* 0000000 */ 0x00 ,/* 0000000 */ 0x00, /* 0000000 */ - -}; +} }; const struct font_desc font_7x14 = {
@@ -4114,6 +4113,6 @@ const struct font_desc font_7x14 = { .name = "7x14", .width = 7, .height = 14, - .data = fontdata_7x14, + .data = fontdata_7x14.data, .pref = 0, };
lib/fonts/font_8x16.c +4 -5
@@ -10,8 +10,8 @@#define FONTDATAMAX 4096 -static const unsigned char fontdata_8x16[FONTDATAMAX ] = { - +static struct font_data fontdata_8x16 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -4619,8 +4619,7 @@ static const unsigned char fontdata_8x16[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x16 = {
@@ -4628,7 +4627,7 @@ const struct font_desc font_vga_8x16 = { .name = "VGA8x16", .width = 8, .height = 16, - .data = fontdata_8x16, + .data = fontdata_8x16.data, .pref = 0, };EXPORT_SYMBOL (font_vga_8x16);
lib/fonts/font_8x8.c +4 -5
@@ -9,8 +9,8 @@#define FONTDATAMAX 2048 -static const unsigned char fontdata_8x8[FONTDATAMAX ] = { - +static struct font_data fontdata_8x8 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -2570,8 +2570,7 @@ static const unsigned char fontdata_8x8[FONTDATAMAX] = {0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */ 0x00, /* 00000000 */ - -}; +} }; const struct font_desc font_vga_8x8 = {
@@ -2579,6 +2578,6 @@ const struct font_desc font_vga_8x8 = { .name = "VGA8x8", .width = 8, .height = 8, - .data = fontdata_8x8, + .data = fontdata_8x8.data, .pref = 0, };
lib/fonts/font_acorn_8x8.c +6 -3
@@ -3,7 +3,10 @@#include <linux/font.h> -static const unsigned char acorndata_8x8[] = { +#define FONTDATAMAX 2048 + +static struct font_data acorndata_8x8 = { +{0 ,0 ,FONTDATAMAX ,0 }, {/* 00 */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* ^@ */ /* 01 */ 0x7e ,0x81 ,0xa5 ,0x81 ,0xbd ,0x99 ,0x81 ,0x7e ,/* ^A */ /* 02 */ 0x7e ,0xff ,0xbd ,0xff ,0xc3 ,0xe7 ,0xff ,0x7e ,/* ^B */
@@ -260,14 +263,14 @@ static const unsigned char acorndata_8x8[] = { /* FD */ 0x38, 0x04, 0x18, 0x20, 0x3c, 0x00, 0x00, 0x00, /* FE */ 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, /* FF */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +} };const struct font_desc font_acorn_8x8 = { .idx = ACORN8x8_IDX, .name ="Acorn8x8" , .width =8 , .height =8 , - .data = acorndata_8x8, + .data = acorndata_8x8.data, #ifdef CONFIG_ARCH_ACORN .pref =20 , #else
lib/fonts/font_mini_4x6.c +4 -4
@@ -43,8 +43,8 @@ __END__;#define FONTDATAMAX 1536 -static const unsigned char fontdata_mini_4x6[FONTDATAMAX ] = { - +static struct font_data fontdata_mini_4x6 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/*{*/ /* Char 0: ' ' */ 0xee ,/*= [*** ] */
@@ -2145,14 +2145,14 @@ static const unsigned char fontdata_mini_4x6[FONTDATAMAX] = { 0xee, /*= [*** ] */ 0x00, /*= [ ] */ /*}*/ -}; +} };const struct font_desc font_mini_4x6 = { .idx = MINI4x6_IDX, .name ="MINI4x6" , .width =4 , .height =6 , - .data = fontdata_mini_4x6, + .data = fontdata_mini_4x6.data, .pref =3 , };
lib/fonts/font_pearl_8x8.c +4 -5
@@ -14,8 +14,8 @@#define FONTDATAMAX 2048 -static const unsigned char fontdata_pearl8x8[FONTDATAMAX ] = { - +static struct font_data fontdata_pearl8x8 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,/* 00000000 */ 0x00 ,/* 00000000 */
@@ -2575,14 +2575,13 @@ static const unsigned char fontdata_pearl8x8[FONTDATAMAX] = { 0x00, /* 00000000 */ 0x00, /* 00000000 */ 0x00, /* 00000000 */ - -}; +} };const struct font_desc font_pearl_8x8 = { .idx = PEARL8x8_IDX, .name ="PEARL8x8" , .width =8 , .height =8 , - .data = fontdata_pearl8x8, + .data = fontdata_pearl8x8.data, .pref =2 , };
lib/fonts/font_sun12x22.c +4 -5
@@ -3,8 +3,8 @@#define FONTDATAMAX 11264 -static const unsigned char fontdata_sun12x22[FONTDATAMAX ] = { - +static struct font_data fontdata_sun12x22 = { + {0 ,0 ,FONTDATAMAX ,0 }, {/* 0 0x00 '^@' */ 0x00 ,0x00 ,/* 000000000000 */ 0x00 ,0x00 ,/* 000000000000 */
@@ -6148,8 +6148,7 @@ static const unsigned char fontdata_sun12x22[FONTDATAMAX] = {0x00 ,0x00 ,/* 000000000000 */ 0x00 ,0x00 ,/* 000000000000 */ 0x00, 0x00, /* 000000000000 */ - -}; +} }; const struct font_desc font_sun_12x22 = {
@@ -6157,7 +6156,7 @@ const struct font_desc font_sun_12x22 = { .name = "SUN12x22", .width = 12, .height = 22, - .data = fontdata_sun12x22, + .data = fontdata_sun12x22.data,#ifdef __sparc__ .pref = 5,#else
lib/fonts/font_sun8x16.c +4 -3
@@ -3,7 +3,8 @@#define FONTDATAMAX 4096 -static const unsigned char fontdata_sun8x16[FONTDATAMAX ] = { +static struct font_data fontdata_sun8x16 = { +{0 ,0 ,FONTDATAMAX ,0 }, {/* */ 0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,0x00 ,/* */ 0x00 ,0x00 ,0x7e ,0x81 ,0xa5 ,0x81 ,0x81 ,0xbd ,0x99 ,0x81 ,0x81 ,0x7e ,0x00 ,0x00 ,0x00 ,0x00 ,/* */ 0x00 ,0x00 ,0x7e ,0xff ,0xdb ,0xff ,0xff ,0xc3 ,0xe7 ,0xff ,0xff ,0x7e ,0x00 ,0x00 ,0x00 ,0x00 ,
@@ -260,14 +261,14 @@ static const unsigned char fontdata_sun8x16[FONTDATAMAX] = { /* */ 0x00,0x70,0xd8,0x30,0x60,0xc8,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x7c,0x00,0x00,0x00,0x00,0x00, /* */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -}; +} };const struct font_desc font_sun_8x16 = { .idx = SUN8x16_IDX, .name ="SUN8x16" , .width =8 , .height =16 , - .data = fontdata_sun8x16, + .data = fontdata_sun8x16.data, #ifdef __sparc__ .pref =10 , #else
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/khugepaged.c +23 -2
@@ -53,6 +53,9 @@ enum scan_result {#define CREATE_TRACE_POINTS #include <trace/events/huge_memory.h> +static struct task_struct *khugepaged_thread__read_mostly ; +static DEFINE_MUTEX (khugepaged_mutex); +/* default scan 8*512 pte (or vmas) every 30 second */ static unsigned int khugepaged_pages_to_scan__read_mostly ;static unsigned int khugepaged_pages_collapsed;
@@ -801,6 +804,18 @@ static struct page *khugepaged_alloc_hugepage(bool *wait)static bool khugepaged_prealloc_page (struct page **hpage,bool *wait) { +/* +* If the hpage allocated earlier was briefly exposed in page cache +* before collapse_file() failed, it is possible that racing lookups +* have not yet completed, and would then be unpleasantly surprised by +* finding the hpage reused for the same mapping at a different offset. +* Just release the previous allocation if there is any danger of that. +*/ +if (*hpage &&page_count (*hpage) >1 ) { +put_page (*hpage); + *hpage =NULL ; + } +if (!*hpage) *hpage =khugepaged_alloc_hugepage (wait);
@@ -1937,8 +1952,6 @@ static void set_recommended_min_free_kbytes(void)int start_stop_khugepaged (void ) { -static struct task_struct *khugepaged_thread__read_mostly ; -static DEFINE_MUTEX (khugepaged_mutex);int err =0 ;mutex_lock (&khugepaged_mutex);
@@ -1965,3 +1978,11 @@ int start_stop_khugepaged(void)mutex_unlock (&khugepaged_mutex);return err; } + +void khugepaged_min_free_kbytes_update (void ) +{ +mutex_lock (&khugepaged_mutex); +if (khugepaged_enabled () && khugepaged_thread) +set_recommended_min_free_kbytes (); +mutex_unlock (&khugepaged_mutex); +}
mm/page_alloc.c +3 -0
@@ -67,6 +67,7 @@#include <linux/ftrace.h> #include <linux/lockdep.h> #include <linux/nmi.h> +#include <linux/khugepaged.h> #include <asm/sections.h> #include <asm/tlbflush.h>
@@ -7021,6 +7022,8 @@ int __meminit init_per_zone_wmark_min(void)setup_min_slab_ratio ();#endif +khugepaged_min_free_kbytes_update (); +return 0 ; }postcore_initcall (init_per_zone_wmark_min)
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
@@ -1043,6 +1043,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/openvswitch/conntrack.c +13 -9
@@ -881,15 +881,19 @@ static int ovs_ct_nat(struct net *net, struct sw_flow_key *key, } err =ovs_ct_nat_execute (skb, ct, ctinfo, &info->range, maniptype); -if (err ==NF_ACCEPT && - ct->status &IPS_SRC_NAT && ct->status &IPS_DST_NAT ) { -if (maniptype ==NF_NAT_MANIP_SRC ) - maniptype =NF_NAT_MANIP_DST ; -else - maniptype =NF_NAT_MANIP_SRC ; - - err =ovs_ct_nat_execute (skb, ct, ctinfo, &info->range, - maniptype); +if (err ==NF_ACCEPT && ct->status &IPS_DST_NAT ) { +if (ct->status &IPS_SRC_NAT ) { +if (maniptype ==NF_NAT_MANIP_SRC ) + maniptype =NF_NAT_MANIP_DST ; +else + maniptype =NF_NAT_MANIP_SRC ; + + err =ovs_ct_nat_execute (skb, ct, ctinfo, &info->range, + maniptype); + }else if (CTINFO2DIR (ctinfo) ==IP_CT_DIR_ORIGINAL ) { + err =ovs_ct_nat_execute (skb, ct, ctinfo,NULL , +NF_NAT_MANIP_SRC ); + } }/* Mark NAT done if successful and update the flow key. */
net/packet/af_packet.c +8 -1
@@ -2201,7 +2201,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;
@@ -2264,6 +2265,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/rxrpc/conn_event.c +3 -3
@@ -316,18 +316,18 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,return ret;spin_lock (&conn->channel_lock); -spin_lock (&conn->state_lock); +spin_lock_bh (&conn->state_lock);if (conn->state ==RXRPC_CONN_SERVICE_CHALLENGING ) { conn->state =RXRPC_CONN_SERVICE ; -spin_unlock (&conn->state_lock); +spin_unlock_bh (&conn->state_lock);for (loop =0 ; loop <RXRPC_MAXCALLS ; loop++)rxrpc_call_is_secure (rcu_dereference_protected ( conn->channels[loop].call,lockdep_is_held (&conn->channel_lock))); }else { -spin_unlock (&conn->state_lock); +spin_unlock_bh (&conn->state_lock); }spin_unlock (&conn->channel_lock);
net/rxrpc/key.c +13 -5
@@ -905,7 +905,7 @@ int rxrpc_request_key(struct rxrpc_sock *rx, char __user *optval, int optlen)_enter ("" ); -if (optlen <=0 || optlen >PAGE_SIZE -1 ) +if (optlen <=0 || optlen >PAGE_SIZE -1 || rx->securities)return -EINVAL ; description =memdup_user_nul (optval, optlen);
@@ -1075,7 +1075,7 @@ static long rxrpc_read(const struct key *key,switch (token->security_index) {case RXRPC_SECURITY_RXKAD : - toksize +=9 *4 ;/* viceid, kvno, key*2 + len, begin, + toksize +=8 *4 ;/* viceid, kvno, key*2, begin, * end, primary, tktlen */ toksize +=RND (token->kad->ticket_len);break ;
@@ -1110,7 +1110,8 @@ static long rxrpc_read(const struct key *key,break ;default :/* we have a ticket we can't encode */ -BUG (); +pr_err ("Unsupported key token type (%u)\n" , + token->security_index);continue ; }
@@ -1141,6 +1142,14 @@ static long rxrpc_read(const struct key *key,memcpy ((u8 *)xdr + _l, &zero,4 - (_l &3 )); \ xdr += (_l +3 ) >>2 ; \ } while(0) +#define ENCODE_BYTES (l, s) \ + do { \ + u32 _l = (l); \ + memcpy(xdr, (s), _l); \ + if (_l & 3) \ + memcpy((u8 *)xdr + _l, &zero, 4 - (_l & 3)); \ + xdr += (_l + 3) >> 2; \ + } while(0)#define ENCODE64 (x) \ do { \ __be64 y = cpu_to_be64(x); \
@@ -1168,7 +1177,7 @@ static long rxrpc_read(const struct key *key,case RXRPC_SECURITY_RXKAD :ENCODE (token->kad->vice_id);ENCODE (token->kad->kvno); -ENCODE_DATA (8 , token->kad->session_key); +ENCODE_BYTES (8 , token->kad->session_key);ENCODE (token->kad->start);ENCODE (token->kad->expiry);ENCODE (token->kad->primary_flag);
@@ -1218,7 +1227,6 @@ static long rxrpc_read(const struct key *key,break ;default : -BUG ();break ; }
net/sctp/auth.c +1 -0
@@ -493,6 +493,7 @@ int sctp_auth_init_hmacs(struct sctp_endpoint *ep, gfp_t gfp) out_err:/* Clean up any successful allocations */ sctp_auth_destroy_hmacs (ep->auth_hmacs); + ep->auth_hmacs =NULL ;return -ENOMEM ; }
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 ;
@@ -989,7 +988,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;
@@ -1011,7 +1011,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; }
@@ -1022,7 +1022,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; } }
@@ -1056,6 +1056,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 ; }
net/wireless/nl80211.c +3 -0
@@ -3343,6 +3343,9 @@ static int nl80211_del_key(struct sk_buff *skb, struct genl_info *info)if (err)return err; +if (key.idx <0 ) +return -EINVAL ; +if (info->attrs[NL80211_ATTR_MAC ]) mac_addr =nla_data (info->attrs[NL80211_ATTR_MAC ]);
net/xfrm/xfrm_state.c +36 -5
83 lines not on this page · raw message
tools/perf/builtin-top.c +3 -1
@@ -652,7 +652,9 @@ static void *display_thread(void *arg) delay_msecs = top->delay_secs *MSEC_PER_SEC ;set_term_quiet_input (&save);/* trash return*/ -getc (stdin); +clearerr (stdin); +if (poll (&stdin_poll,1 ,0 ) >0 ) +getc (stdin);while (!done) {perf_top__print_sym_table (top);