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

Commit a8afaca4 authored by Ivaylo Georgiev's avatar Ivaylo Georgiev
Browse files

Merge android-4.19-q.66 (51181630) into msm-4.19



* refs/heads/tmp-51181630:
  Linux 4.19.66
  spi: bcm2835: Fix 3-wire mode if DMA is enabled
  cgroup: Fix css_task_iter_advance_css_set() cset skip condition
  cgroup: css_task_iter_skip()'d iterators must be advanced before accessed
  cgroup: Include dying leaders with live threads in PROCS iterations
  cgroup: Implement css_task_iter_skip()
  cgroup: Call cgroup_release() before __exit_signal()
  compat_ioctl: pppoe: fix PPPOEIOCSFWD handling
  r8169: don't use MSI before RTL8168d
  net/mlx5e: Prevent encap flow counter update async to user query
  net/mlx5: Fix modify_cq_in alignment
  tun: mark small packets as owned by the tap sock
  tipc: compat: allow tipc commands without arguments
  ocelot: Cancel delayed work before wq destruction
  NFC: nfcmrvl: fix gpio-handling regression
  net/smc: do not schedule tx_work in SMC_CLOSED state
  net: sched: use temporary variable for actions indexes
  net sched: update vlan action for batched events operations
  net: sched: Fix a possible null-pointer dereference in dequeue_func()
  net: qualcomm: rmnet: Fix incorrect UL checksum offload logic
  net: phylink: Fix flow control for fixed-link
  net/mlx5: Use reversed order when unregister devices
  net/mlx5e: always initialize frag->last_in_page
  net: fix ifindex collision during namespace removal
  net: bridge: mcast: don't delete permanent entries when fast leave is enabled
  net: bridge: delete local fdb on device init failure
  mvpp2: refactor MTU change code
  mvpp2: fix panic on module removal
  mlxsw: spectrum: Fix error path in mlxsw_sp_module_init()
  ipip: validate header length in ipip_tunnel_xmit
  ip6_tunnel: fix possible use-after-free on xmit
  ip6_gre: reload ipv6h in prepare_ip6gre_xmit_ipv6
  ife: error out when nla attributes are empty
  bnx2x: Disable multi-cos feature.
  atm: iphase: Fix Spectre v1 vulnerability
  IB: directly cast the sockaddr union to aockaddr
  HID: Add quirk for HP X1200 PIXART OEM mouse
  HID: wacom: fix bit shift for Cintiq Companion 2
  libnvdimm/bus: Fix wait_nvdimm_bus_probe_idle() ABBA deadlock
  libnvdimm/bus: Prepare the nd_ioctl() path to be re-entrant
  libnvdimm/region: Register badblocks before namespaces
  libnvdimm/bus: Prevent duplicate device_unregister() calls
  drivers/base: Introduce kill_device()
  driver core: Establish order of operations for device_add and device_del via bitflag
  gcc-9: don't warn about uninitialized variable
  scsi: fcoe: Embed fc_rport_priv in fcoe_rport structure

Change-Id: Id10478edd741fd55ffa841c4ed7c608d9ece3bbb
Signed-off-by: default avatarIvaylo Georgiev <irgeorgiev@codeaurora.org>
parents f80dad3c 51181630
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
VERSION = 4
PATCHLEVEL = 19
SUBLEVEL = 65
SUBLEVEL = 66
EXTRAVERSION =
NAME = "People's Front"

+6 −2
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@
#include <asm/byteorder.h>  
#include <linux/vmalloc.h>
#include <linux/jiffies.h>
#include <linux/nospec.h>
#include "iphase.h"		  
#include "suni.h"		  
#define swap_byte_order(x) (((x & 0xff) << 8) | ((x & 0xff00) >> 8))
@@ -2760,8 +2761,11 @@ static int ia_ioctl(struct atm_dev *dev, unsigned int cmd, void __user *arg)
   }
   if (copy_from_user(&ia_cmds, arg, sizeof ia_cmds)) return -EFAULT; 
   board = ia_cmds.status;

	if ((board < 0) || (board > iadev_count))
		board = 0;
	board = array_index_nospec(board, iadev_count + 1);

   iadev = ia_dev[board];
   switch (ia_cmds.cmd) {
   case MEMDUMP:
+4 −0
Original line number Diff line number Diff line
@@ -66,6 +66,9 @@ struct driver_private {
 *	probed first.
 * @device - pointer back to the struct device that this structure is
 * associated with.
 * @dead - This device is currently either in the process of or has been
 *	removed from the system. Any asynchronous events scheduled for this
 *	device should exit without taking any action.
 *
 * Nothing outside of the driver core should ever touch these fields.
 */
@@ -76,6 +79,7 @@ struct device_private {
	struct klist_node knode_bus;
	struct list_head deferred_probe;
	struct device *device;
	u8 dead:1;
};
#define to_device_private_parent(obj)	\
	container_of(obj, struct device_private, knode_parent)
+22 −0
Original line number Diff line number Diff line
@@ -2036,6 +2036,24 @@ void put_device(struct device *dev)
}
EXPORT_SYMBOL_GPL(put_device);

bool kill_device(struct device *dev)
{
	/*
	 * Require the device lock and set the "dead" flag to guarantee that
	 * the update behavior is consistent with the other bitfields near
	 * it and that we cannot have an asynchronous probe routine trying
	 * to run while we are tearing out the bus/class/sysfs from
	 * underneath the device.
	 */
	lockdep_assert_held(&dev->mutex);

	if (dev->p->dead)
		return false;
	dev->p->dead = true;
	return true;
}
EXPORT_SYMBOL_GPL(kill_device);

/**
 * device_del - delete device from system.
 * @dev: device.
@@ -2055,6 +2073,10 @@ void device_del(struct device *dev)
	struct kobject *glue_dir = NULL;
	struct class_interface *class_intf;

	device_lock(dev);
	kill_device(dev);
	device_unlock(dev);

	/* Notify clients of device removal.  This call must come
	 * before dpm_sysfs_remove().
	 */
+11 −11
Original line number Diff line number Diff line
@@ -746,15 +746,6 @@ static int __device_attach_driver(struct device_driver *drv, void *_data)
	bool async_allowed;
	int ret;

	/*
	 * Check if device has already been claimed. This may
	 * happen with driver loading, device discovery/registration,
	 * and deferred probe processing happens all at once with
	 * multiple threads.
	 */
	if (dev->driver)
		return -EBUSY;

	ret = driver_match_device(drv, dev);
	if (ret == 0) {
		/* no match */
@@ -789,6 +780,15 @@ static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)

	device_lock(dev);

	/*
	 * Check if device has already been removed or claimed. This may
	 * happen with driver loading, device discovery/registration,
	 * and deferred probe processing happens all at once with
	 * multiple threads.
	 */
	if (dev->p->dead || dev->driver)
		goto out_unlock;

	if (dev->parent)
		pm_runtime_get_sync(dev->parent);

@@ -799,7 +799,7 @@ static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)

	if (dev->parent)
		pm_runtime_put(dev->parent);

out_unlock:
	device_unlock(dev);

	put_device(dev);
@@ -912,7 +912,7 @@ static int __driver_attach(struct device *dev, void *data)
	if (dev->parent && dev->bus->need_parent_lock)
		device_lock(dev->parent);
	device_lock(dev);
	if (!dev->driver)
	if (!dev->p->dead && !dev->driver)
		driver_probe_device(drv, dev);
	device_unlock(dev);
	if (dev->parent && dev->bus->need_parent_lock)
Loading