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

Commit ae2ea7fe authored by Blagovest Kolenichev's avatar Blagovest Kolenichev
Browse files

Merge android-4.9.98 (f679e4d9) into msm-4.9



* refs/heads/tmp-f679e4d9:
  Linux 4.9.98
  powerpc/eeh: Fix race with driver un/bind
  x86/microcode/intel: Save microcode patch unconditionally
  x86/smpboot: Don't use mwait_play_dead() on AMD systems
  x86/ipc: Fix x32 version of shmid64_ds and msqid64_ds
  tools/lib/subcmd/pager.c: do not alias select() params
  objtool, perf: Fix GCC 8 -Wrestrict error
  drm/amdgpu: set COMPUTE_PGM_RSRC1 for SGPR/VGPR clearing shaders
  rtc: opal: Fix OPAL RTC driver OPAL_BUSY loops
  cpufreq: powernv: Fix hardlockup due to synchronous smp_call in timer interrupt
  earlycon: Use a pointer table to fix __earlycon_table stride
  libceph: validate con->state at the top of try_write()
  libceph: reschedule a tick in finish_hunting()
  libceph: un-backoff on tick when we have a authenticated session
  ASoC: fsl_esai: Fix divisor calculation failure at lower ratio
  crypto: drbg - set freed buffers to NULL
  ARM: amba: Don't read past the end of sysfs "driver_override" buffer
  ARM: amba: Fix race condition with driver_override
  ARM: amba: Make driver_override output consistent with other buses
  PCI: aardvark: Fix PCIe Max Read Request Size setting
  PCI: aardvark: Set PIO_ADDR_LS correctly in advk_pcie_rd_conf()
  PCI: aardvark: Fix logic in advk_pcie_{rd,wr}_conf()
  scsi: sd: Defer spinning up drive while SANITIZE is in progress
  kobject: don't use WARN for registration failures
  mtd: cfi: cmdset_0002: Do not allow read/write to suspend erase block.
  mtd: cfi: cmdset_0001: Workaround Micron Erase suspend bug.
  mtd: cfi: cmdset_0001: Do not allow read/write to suspend erase block.
  ALSA: hda/realtek - Add some fixes for ALC233
  ALSA: hda: Hardening for potential Spectre v1
  ALSA: seq: oss: Hardening for potential Spectre v1
  ALSA: seq: oss: Fix unbalanced use lock for synth MIDI device
  ALSA: core: Report audio_tstamp in snd_pcm_sync_ptr
  ALSA: control: Hardening for potential Spectre v1
  ALSA: rme9652: Hardening for potential Spectre v1
  ALSA: hdspm: Hardening for potential Spectre v1
  ALSA: asihpi: Hardening for potential Spectre v1
  ALSA: opl3: Hardening for potential Spectre v1
  ALSA: dice: fix error path to destroy initialized stream data
  ALSA: dice: fix OUI for TC group
  tty: Use __GFP_NOFAIL for tty_ldisc_get()
  tty: n_gsm: Fix DLCI handling for ADM mode if debug & 2 is not set
  tty: n_gsm: Fix long delays with control frame timeouts in ADM mode
  tty: Don't call panic() at tty_ldisc_init()
  drm/virtio: fix vq wait_event condition
  virtio_console: free buffers after reset
  virtio: add ability to iterate over vqs
  ALSA: usb-audio: Skip broken EU on Dell dock USB-audio
  USB: Increment wakeup count on remote wakeup.
  usb: core: Add quirk for HP v222w 16GB Mini
  USB: serial: cp210x: add ID for NI USB serial console
  USB: serial: ftdi_sio: use jtag quirk for Arrow USB Blaster
  USB: serial: simple: add libtransistor console
  usbip: vhci_hcd: Fix usb device and sockfd leaks
  usbip: usbip_host: fix to hold parent lock for device_attach() calls
  usbip: usbip_event: fix to not print kernel pointer address
  random: rate limit unseeded randomness warnings
  random: fix possible sleeping allocation from irq context
  random: set up the NUMA crng instances after the CRNG is fully initialized
  ext4: fix bitmap position validation
  ext4: add validity checks for bitmap block numbers
  ext4: set h_journal if there is a failure starting a reserved handle
  ext4: prevent right-shifting extents beyond EXT_MAX_BLOCKS
  cfi: print target address on failure
  BACKPORT: ARM: cpuidle: Correct driver unregistration if init fails
  BACKPORT: ARM: cpuidle: Avoid memleak if init fail
  BACKPORT: ARM: cpuidle: Support asymmetric idle definition

Change-Id: Ie291572945a83300a1cd5303862691e18d882fa9
Signed-off-by: default avatarBlagovest Kolenichev <bkolenichev@codeaurora.org>
parents 8ea36d18 f679e4d9
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
VERSION = 4
VERSION = 4
PATCHLEVEL = 9
PATCHLEVEL = 9
SUBLEVEL = 97
SUBLEVEL = 98
EXTRAVERSION =
EXTRAVERSION =
NAME = Roaring Lionus
NAME = Roaring Lionus


+38 −23
Original line number Original line Diff line number Diff line
@@ -207,18 +207,18 @@ static void *eeh_report_error(void *data, void *userdata)


	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
		return NULL;
		return NULL;

	device_lock(&dev->dev);
	dev->error_state = pci_channel_io_frozen;
	dev->error_state = pci_channel_io_frozen;


	driver = eeh_pcid_get(dev);
	driver = eeh_pcid_get(dev);
	if (!driver) return NULL;
	if (!driver) goto out_no_dev;


	eeh_disable_irq(dev);
	eeh_disable_irq(dev);


	if (!driver->err_handler ||
	if (!driver->err_handler ||
	    !driver->err_handler->error_detected) {
	    !driver->err_handler->error_detected)
		eeh_pcid_put(dev);
		goto out;
		return NULL;
	}


	rc = driver->err_handler->error_detected(dev, pci_channel_io_frozen);
	rc = driver->err_handler->error_detected(dev, pci_channel_io_frozen);


@@ -227,7 +227,10 @@ static void *eeh_report_error(void *data, void *userdata)
	if (*res == PCI_ERS_RESULT_NONE) *res = rc;
	if (*res == PCI_ERS_RESULT_NONE) *res = rc;


	edev->in_error = true;
	edev->in_error = true;
out:
	eeh_pcid_put(dev);
	eeh_pcid_put(dev);
out_no_dev:
	device_unlock(&dev->dev);
	return NULL;
	return NULL;
}
}


@@ -250,15 +253,14 @@ static void *eeh_report_mmio_enabled(void *data, void *userdata)
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
		return NULL;
		return NULL;


	device_lock(&dev->dev);
	driver = eeh_pcid_get(dev);
	driver = eeh_pcid_get(dev);
	if (!driver) return NULL;
	if (!driver) goto out_no_dev;


	if (!driver->err_handler ||
	if (!driver->err_handler ||
	    !driver->err_handler->mmio_enabled ||
	    !driver->err_handler->mmio_enabled ||
	    (edev->mode & EEH_DEV_NO_HANDLER)) {
	    (edev->mode & EEH_DEV_NO_HANDLER))
		eeh_pcid_put(dev);
		goto out;
		return NULL;
	}


	rc = driver->err_handler->mmio_enabled(dev);
	rc = driver->err_handler->mmio_enabled(dev);


@@ -266,7 +268,10 @@ static void *eeh_report_mmio_enabled(void *data, void *userdata)
	if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;
	if (rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;
	if (*res == PCI_ERS_RESULT_NONE) *res = rc;
	if (*res == PCI_ERS_RESULT_NONE) *res = rc;


out:
	eeh_pcid_put(dev);
	eeh_pcid_put(dev);
out_no_dev:
	device_unlock(&dev->dev);
	return NULL;
	return NULL;
}
}


@@ -289,20 +294,20 @@ static void *eeh_report_reset(void *data, void *userdata)


	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
		return NULL;
		return NULL;

	device_lock(&dev->dev);
	dev->error_state = pci_channel_io_normal;
	dev->error_state = pci_channel_io_normal;


	driver = eeh_pcid_get(dev);
	driver = eeh_pcid_get(dev);
	if (!driver) return NULL;
	if (!driver) goto out_no_dev;


	eeh_enable_irq(dev);
	eeh_enable_irq(dev);


	if (!driver->err_handler ||
	if (!driver->err_handler ||
	    !driver->err_handler->slot_reset ||
	    !driver->err_handler->slot_reset ||
	    (edev->mode & EEH_DEV_NO_HANDLER) ||
	    (edev->mode & EEH_DEV_NO_HANDLER) ||
	    (!edev->in_error)) {
	    (!edev->in_error))
		eeh_pcid_put(dev);
		goto out;
		return NULL;
	}


	rc = driver->err_handler->slot_reset(dev);
	rc = driver->err_handler->slot_reset(dev);
	if ((*res == PCI_ERS_RESULT_NONE) ||
	if ((*res == PCI_ERS_RESULT_NONE) ||
@@ -310,7 +315,10 @@ static void *eeh_report_reset(void *data, void *userdata)
	if (*res == PCI_ERS_RESULT_DISCONNECT &&
	if (*res == PCI_ERS_RESULT_DISCONNECT &&
	     rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;
	     rc == PCI_ERS_RESULT_NEED_RESET) *res = rc;


out:
	eeh_pcid_put(dev);
	eeh_pcid_put(dev);
out_no_dev:
	device_unlock(&dev->dev);
	return NULL;
	return NULL;
}
}


@@ -361,10 +369,12 @@ static void *eeh_report_resume(void *data, void *userdata)


	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
		return NULL;
		return NULL;

	device_lock(&dev->dev);
	dev->error_state = pci_channel_io_normal;
	dev->error_state = pci_channel_io_normal;


	driver = eeh_pcid_get(dev);
	driver = eeh_pcid_get(dev);
	if (!driver) return NULL;
	if (!driver) goto out_no_dev;


	was_in_error = edev->in_error;
	was_in_error = edev->in_error;
	edev->in_error = false;
	edev->in_error = false;
@@ -374,13 +384,15 @@ static void *eeh_report_resume(void *data, void *userdata)
	    !driver->err_handler->resume ||
	    !driver->err_handler->resume ||
	    (edev->mode & EEH_DEV_NO_HANDLER) || !was_in_error) {
	    (edev->mode & EEH_DEV_NO_HANDLER) || !was_in_error) {
		edev->mode &= ~EEH_DEV_NO_HANDLER;
		edev->mode &= ~EEH_DEV_NO_HANDLER;
		eeh_pcid_put(dev);
		goto out;
		return NULL;
	}
	}


	driver->err_handler->resume(dev);
	driver->err_handler->resume(dev);


out:
	eeh_pcid_put(dev);
	eeh_pcid_put(dev);
out_no_dev:
	device_unlock(&dev->dev);
	return NULL;
	return NULL;
}
}


@@ -400,22 +412,25 @@ static void *eeh_report_failure(void *data, void *userdata)


	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
	if (!dev || eeh_dev_removed(edev) || eeh_pe_passed(edev->pe))
		return NULL;
		return NULL;

	device_lock(&dev->dev);
	dev->error_state = pci_channel_io_perm_failure;
	dev->error_state = pci_channel_io_perm_failure;


	driver = eeh_pcid_get(dev);
	driver = eeh_pcid_get(dev);
	if (!driver) return NULL;
	if (!driver) goto out_no_dev;


	eeh_disable_irq(dev);
	eeh_disable_irq(dev);


	if (!driver->err_handler ||
	if (!driver->err_handler ||
	    !driver->err_handler->error_detected) {
	    !driver->err_handler->error_detected)
		eeh_pcid_put(dev);
		goto out;
		return NULL;
	}


	driver->err_handler->error_detected(dev, pci_channel_io_perm_failure);
	driver->err_handler->error_detected(dev, pci_channel_io_perm_failure);


out:
	eeh_pcid_put(dev);
	eeh_pcid_put(dev);
out_no_dev:
	device_unlock(&dev->dev);
	return NULL;
	return NULL;
}
}


+5 −3
Original line number Original line Diff line number Diff line
@@ -48,10 +48,12 @@ unsigned long __init opal_get_boot_time(void)


	while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
	while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
		rc = opal_rtc_read(&__y_m_d, &__h_m_s_ms);
		rc = opal_rtc_read(&__y_m_d, &__h_m_s_ms);
		if (rc == OPAL_BUSY_EVENT)
		if (rc == OPAL_BUSY_EVENT) {
			mdelay(OPAL_BUSY_DELAY_MS);
			opal_poll_events(NULL);
			opal_poll_events(NULL);
		else if (rc == OPAL_BUSY)
		} else if (rc == OPAL_BUSY) {
			mdelay(10);
			mdelay(OPAL_BUSY_DELAY_MS);
		}
	}
	}
	if (rc != OPAL_SUCCESS)
	if (rc != OPAL_SUCCESS)
		return 0;
		return 0;
+31 −0
Original line number Original line Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_X64_MSGBUF_H
#define __ASM_X64_MSGBUF_H

#if !defined(__x86_64__) || !defined(__ILP32__)
#include <asm-generic/msgbuf.h>
#include <asm-generic/msgbuf.h>
#else
/*
 * The msqid64_ds structure for x86 architecture with x32 ABI.
 *
 * On x86-32 and x86-64 we can just use the generic definition, but
 * x32 uses the same binary layout as x86_64, which is differnet
 * from other 32-bit architectures.
 */

struct msqid64_ds {
	struct ipc64_perm msg_perm;
	__kernel_time_t msg_stime;	/* last msgsnd time */
	__kernel_time_t msg_rtime;	/* last msgrcv time */
	__kernel_time_t msg_ctime;	/* last change time */
	__kernel_ulong_t msg_cbytes;	/* current number of bytes on queue */
	__kernel_ulong_t msg_qnum;	/* number of messages in queue */
	__kernel_ulong_t msg_qbytes;	/* max number of bytes on queue */
	__kernel_pid_t msg_lspid;	/* pid of last msgsnd */
	__kernel_pid_t msg_lrpid;	/* last receive pid */
	__kernel_ulong_t __unused4;
	__kernel_ulong_t __unused5;
};

#endif

#endif /* __ASM_GENERIC_MSGBUF_H */
+42 −0
Original line number Original line Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __ASM_X86_SHMBUF_H
#define __ASM_X86_SHMBUF_H

#if !defined(__x86_64__) || !defined(__ILP32__)
#include <asm-generic/shmbuf.h>
#include <asm-generic/shmbuf.h>
#else
/*
 * The shmid64_ds structure for x86 architecture with x32 ABI.
 *
 * On x86-32 and x86-64 we can just use the generic definition, but
 * x32 uses the same binary layout as x86_64, which is differnet
 * from other 32-bit architectures.
 */

struct shmid64_ds {
	struct ipc64_perm	shm_perm;	/* operation perms */
	size_t			shm_segsz;	/* size of segment (bytes) */
	__kernel_time_t		shm_atime;	/* last attach time */
	__kernel_time_t		shm_dtime;	/* last detach time */
	__kernel_time_t		shm_ctime;	/* last change time */
	__kernel_pid_t		shm_cpid;	/* pid of creator */
	__kernel_pid_t		shm_lpid;	/* pid of last operator */
	__kernel_ulong_t	shm_nattch;	/* no. of current attaches */
	__kernel_ulong_t	__unused4;
	__kernel_ulong_t	__unused5;
};

struct shminfo64 {
	__kernel_ulong_t	shmmax;
	__kernel_ulong_t	shmmin;
	__kernel_ulong_t	shmmni;
	__kernel_ulong_t	shmseg;
	__kernel_ulong_t	shmall;
	__kernel_ulong_t	__unused1;
	__kernel_ulong_t	__unused2;
	__kernel_ulong_t	__unused3;
	__kernel_ulong_t	__unused4;
};

#endif

#endif /* __ASM_X86_SHMBUF_H */
Loading