Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9ffe756 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Merge 4.9.307 into android-4.9



Changes in 4.9.307
	net: qlogic: check the return value of dma_alloc_coherent() in qed_vf_hw_prepare()
	qed: return status of qed_iov_get_link
	ethernet: Fix error handling in xemaclite_of_probe
	net: ethernet: lpc_eth: Handle error for clk_enable
	ax25: Fix NULL pointer dereference in ax25_kill_by_device
	net/mlx5: Fix size field in bufferx_reg struct
	NFC: port100: fix use-after-free in port100_send_complete
	gpio: ts4900: Do not set DAT and OE together
	sctp: fix kernel-infoleak for SCTP sockets
	net-sysfs: add check for netdevice being present to speed_show
	Revert "xen-netback: Check for hotplug-status existence before watching"
	tracing: Ensure trace buffer is at least 4096 bytes large
	selftests/memfd: clean up mapping in mfd_fail_write
	ARM: Spectre-BHB: provide empty stub for non-config
	staging: gdm724x: fix use after free in gdm_lte_rx()
	batman-adv: Request iflink once in batadv-on-batadv check
	batman-adv: Don't expect inter-netns unique iflink indices
	ARM: fix Thumb2 regression with Spectre BHB
	btrfs: unlock newly allocated extent buffer after error
	Linux 4.9.307

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
Change-Id: I2ddea75b801bb11688f30b0c7554bd7aac4036aa
parents bf0024db 1e673048
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
VERSION = 4
PATCHLEVEL = 9
SUBLEVEL = 306
SUBLEVEL = 307
EXTRAVERSION =
NAME = Roaring Lionus

+6 −0
Original line number Diff line number Diff line
@@ -25,7 +25,13 @@ enum {
	SPECTRE_V2_METHOD_LOOP8 = BIT(__SPECTRE_V2_METHOD_LOOP8),
};

#ifdef CONFIG_GENERIC_CPU_VULNERABILITIES
void spectre_v2_update_state(unsigned int state, unsigned int methods);
#else
static inline void spectre_v2_update_state(unsigned int state,
					   unsigned int methods)
{}
#endif

int spectre_bhb_update_vectors(unsigned int method);

+2 −2
Original line number Diff line number Diff line
@@ -1074,9 +1074,9 @@ vector_bhb_loop8_\name:

	@ bhb workaround
	mov	r0, #8
1:	b	. + 4
3:	b	. + 4
	subs	r0, r0, #1
	bne	1b
	bne	3b
	dsb
	isb
	b	2b
+19 −5
Original line number Diff line number Diff line
/*
 * Digital I/O driver for Technologic Systems I2C FPGA Core
 *
 * Copyright (C) 2015 Technologic Systems
 * Copyright (C) 2015, 2018 Technologic Systems
 * Copyright (C) 2016 Savoir-Faire Linux
 *
 * This program is free software; you can redistribute it and/or
@@ -52,19 +52,33 @@ static int ts4900_gpio_direction_input(struct gpio_chip *chip,
{
	struct ts4900_gpio_priv *priv = gpiochip_get_data(chip);

	/*
	 * This will clear the output enable bit, the other bits are
	 * dontcare when this is cleared
	/* Only clear the OE bit here, requires a RMW. Prevents potential issue
	 * with OE and data getting to the physical pin at different times.
	 */
	return regmap_write(priv->regmap, offset, 0);
	return regmap_update_bits(priv->regmap, offset, TS4900_GPIO_OE, 0);
}

static int ts4900_gpio_direction_output(struct gpio_chip *chip,
					unsigned int offset, int value)
{
	struct ts4900_gpio_priv *priv = gpiochip_get_data(chip);
	unsigned int reg;
	int ret;

	/* If changing from an input to an output, we need to first set the
	 * proper data bit to what is requested and then set OE bit. This
	 * prevents a glitch that can occur on the IO line
	 */
	regmap_read(priv->regmap, offset, &reg);
	if (!(reg & TS4900_GPIO_OE)) {
		if (value)
			reg = TS4900_GPIO_OUT;
		else
			reg &= ~TS4900_GPIO_OUT;

		regmap_write(priv->regmap, offset, reg);
	}

	if (value)
		ret = regmap_write(priv->regmap, offset, TS4900_GPIO_OE |
							 TS4900_GPIO_OUT);
+4 −1
Original line number Diff line number Diff line
@@ -1515,6 +1515,7 @@ static int lpc_eth_drv_resume(struct platform_device *pdev)
{
	struct net_device *ndev = platform_get_drvdata(pdev);
	struct netdata_local *pldat;
	int ret;

	if (device_may_wakeup(&pdev->dev))
		disable_irq_wake(ndev->irq);
@@ -1524,7 +1525,9 @@ static int lpc_eth_drv_resume(struct platform_device *pdev)
			pldat = netdev_priv(ndev);

			/* Enable interface clock */
			clk_enable(pldat->clk);
			ret = clk_enable(pldat->clk);
			if (ret)
				return ret;

			/* Reset and initialize */
			__lpc_eth_reset(pldat);
Loading