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

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

Merge 4.4.65 into android-4.4



Changes in 4.4.65:
	tipc: make sure IPv6 header fits in skb headroom
	tipc: make dist queue pernet
	tipc: re-enable compensation for socket receive buffer double counting
	tipc: correct error in node fsm
	tty: nozomi: avoid a harmless gcc warning
	hostap: avoid uninitialized variable use in hfa384x_get_rid
	gfs2: avoid uninitialized variable warning
	tipc: fix random link resets while adding a second bearer
	tipc: fix socket timer deadlock
	mnt: Add a per mount namespace limit on the number of mounts
	xc2028: avoid use after free
	netfilter: nfnetlink: correctly validate length of batch messages
	tipc: check minimum bearer MTU
	vfio/pci: Fix integer overflows, bitmask check
	staging/android/ion : fix a race condition in the ion driver
	ping: implement proper locking
	perf/core: Fix concurrent sys_perf_event_open() vs. 'move_group' race
	Linux 4.4.65

Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parents 90d78776 418b9904
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -265,6 +265,13 @@ aio-nr can grow to.

==============================================================

mount-max:

This denotes the maximum number of mounts that may exist
in a mount namespace.

==============================================================


2. /proc/sys/fs/binfmt_misc
----------------------------------------------------------
+1 −1
Original line number Diff line number Diff line
VERSION = 4
PATCHLEVEL = 4
SUBLEVEL = 64
SUBLEVEL = 65
EXTRAVERSION =
NAME = Blurry Fish Butt

+10 −5
Original line number Diff line number Diff line
@@ -836,25 +836,30 @@ static int hfa384x_get_rid(struct net_device *dev, u16 rid, void *buf, int len,
	spin_lock_bh(&local->baplock);

	res = hfa384x_setup_bap(dev, BAP0, rid, 0);
	if (!res)
	if (res)
		goto unlock;

	res = hfa384x_from_bap(dev, BAP0, &rec, sizeof(rec));
	if (res)
		goto unlock;

	if (le16_to_cpu(rec.len) == 0) {
		/* RID not available */
		res = -ENODATA;
		goto unlock;
	}

	rlen = (le16_to_cpu(rec.len) - 1) * 2;
	if (!res && exact_len && rlen != len) {
	if (exact_len && rlen != len) {
		printk(KERN_DEBUG "%s: hfa384x_get_rid - RID len mismatch: "
		       "rid=0x%04x, len=%d (expected %d)\n",
		       dev->name, rid, rlen, len);
		res = -ENODATA;
	}

	if (!res)
	res = hfa384x_from_bap(dev, BAP0, buf, len);

unlock:
	spin_unlock_bh(&local->baplock);
	mutex_unlock(&local->rid_bap_mtx);

+1 −1
Original line number Diff line number Diff line
@@ -823,7 +823,7 @@ static int receive_data(enum port_type index, struct nozomi *dc)
	struct tty_struct *tty = tty_port_tty_get(&port->port);
	int i, ret;

	read_mem32((u32 *) &size, addr, 4);
	size = __le32_to_cpu(readl(addr));
	/*  DBG1( "%d bytes port: %d", size, index); */

	if (tty && test_bit(TTY_THROTTLED, &tty->flags)) {
+21 −12
Original line number Diff line number Diff line
@@ -562,8 +562,9 @@ static long vfio_pci_ioctl(void *device_data,

	} else if (cmd == VFIO_DEVICE_SET_IRQS) {
		struct vfio_irq_set hdr;
		size_t size;
		u8 *data = NULL;
		int ret = 0;
		int max, ret = 0;

		minsz = offsetofend(struct vfio_irq_set, count);

@@ -571,23 +572,31 @@ static long vfio_pci_ioctl(void *device_data,
			return -EFAULT;

		if (hdr.argsz < minsz || hdr.index >= VFIO_PCI_NUM_IRQS ||
		    hdr.count >= (U32_MAX - hdr.start) ||
		    hdr.flags & ~(VFIO_IRQ_SET_DATA_TYPE_MASK |
				  VFIO_IRQ_SET_ACTION_TYPE_MASK))
			return -EINVAL;

		if (!(hdr.flags & VFIO_IRQ_SET_DATA_NONE)) {
			size_t size;
			int max = vfio_pci_get_irq_count(vdev, hdr.index);
		max = vfio_pci_get_irq_count(vdev, hdr.index);
		if (hdr.start >= max || hdr.start + hdr.count > max)
			return -EINVAL;

			if (hdr.flags & VFIO_IRQ_SET_DATA_BOOL)
		switch (hdr.flags & VFIO_IRQ_SET_DATA_TYPE_MASK) {
		case VFIO_IRQ_SET_DATA_NONE:
			size = 0;
			break;
		case VFIO_IRQ_SET_DATA_BOOL:
			size = sizeof(uint8_t);
			else if (hdr.flags & VFIO_IRQ_SET_DATA_EVENTFD)
			break;
		case VFIO_IRQ_SET_DATA_EVENTFD:
			size = sizeof(int32_t);
			else
			break;
		default:
			return -EINVAL;
		}

			if (hdr.argsz - minsz < hdr.count * size ||
			    hdr.start >= max || hdr.start + hdr.count > max)
		if (size) {
			if (hdr.argsz - minsz < hdr.count * size)
				return -EINVAL;

			data = memdup_user((void __user *)(arg + minsz),
Loading