Merge tag 'driver-core-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Oct 2018 15:42:25 +0000 (08:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 26 Oct 2018 15:42:25 +0000 (08:42 -0700)
Pull driver core updates from Greg KH:
 "Here is a small number of driver core patches for 4.20-rc1.

  Not much happened here this merge window, only a very tiny number of
  patches that do:

   - add BUS_ATTR_WO() for use by drivers

   - component error path fixes

   - kernfs range check fix

   - other tiny error path fixes and const changes

  All of these have been in linux-next with no reported issues for a
  while"

* tag 'driver-core-4.20-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
  devres: provide devm_kstrdup_const()
  mm: move is_kernel_rodata() to asm-generic/sections.h
  devres: constify p in devm_kfree()
  driver core: add BUS_ATTR_WO() macro
  kernfs: Fix range checks in kernfs_get_target_path
  component: fix loop condition to call unbind() if bind() fails
  drivers/base/devtmpfs.c: don't pretend path is const in delete_path
  kernfs: update comment about kernfs_path() return value

1  2 
include/linux/device.h

diff --combined include/linux/device.h
index 90224e75ade4c359d4e59ae6ccdccab1f35c4a30,fecd9722400e3dae55a3a8e30a356d80b19bb24e..1b25c7a43f4cc85604fbb0e0becab482edcb84a4
@@@ -55,6 -55,8 +55,8 @@@ struct bus_attribute 
        struct bus_attribute bus_attr_##_name = __ATTR_RW(_name)
  #define BUS_ATTR_RO(_name) \
        struct bus_attribute bus_attr_##_name = __ATTR_RO(_name)
+ #define BUS_ATTR_WO(_name) \
+       struct bus_attribute bus_attr_##_name = __ATTR_WO(_name)
  
  extern int __must_check bus_create_file(struct bus_type *,
                                        struct bus_attribute *);
@@@ -692,8 -694,10 +694,10 @@@ static inline void *devm_kcalloc(struc
  {
        return devm_kmalloc_array(dev, n, size, flags | __GFP_ZERO);
  }
- extern void devm_kfree(struct device *dev, void *p);
+ extern void devm_kfree(struct device *dev, const void *p);
  extern char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __malloc;
+ extern const char *devm_kstrdup_const(struct device *dev,
+                                     const char *s, gfp_t gfp);
  extern void *devm_kmemdup(struct device *dev, const void *src, size_t len,
                          gfp_t gfp);
  
@@@ -773,30 -777,6 +777,30 @@@ struct device *device_connection_find(s
  void device_connection_add(struct device_connection *con);
  void device_connection_remove(struct device_connection *con);
  
 +/**
 + * device_connections_add - Add multiple device connections at once
 + * @cons: Zero terminated array of device connection descriptors
 + */
 +static inline void device_connections_add(struct device_connection *cons)
 +{
 +      struct device_connection *c;
 +
 +      for (c = cons; c->endpoint[0]; c++)
 +              device_connection_add(c);
 +}
 +
 +/**
 + * device_connections_remove - Remove multiple device connections at once
 + * @cons: Zero terminated array of device connection descriptors
 + */
 +static inline void device_connections_remove(struct device_connection *cons)
 +{
 +      struct device_connection *c;
 +
 +      for (c = cons; c->endpoint[0]; c++)
 +              device_connection_remove(c);
 +}
 +
  /**
   * enum device_link_state - Device link states.
   * @DL_STATE_NONE: The presence of the drivers is not being tracked.
@@@ -951,8 -931,6 +955,8 @@@ struct dev_links_info 
   * @offline:  Set after successful invocation of bus type's .offline().
   * @of_node_reused: Set if the device-tree node is shared with an ancestor
   *              device.
 + * @dma_coherent: this particular device is dma coherent, even if the
 + *            architecture supports non-coherent devices.
   *
   * At the lowest level, every device in a Linux system is represented by an
   * instance of struct device. The device structure contains the information
@@@ -1042,11 -1020,6 +1046,11 @@@ struct device 
        bool                    offline_disabled:1;
        bool                    offline:1;
        bool                    of_node_reused:1;
 +#if defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_DEVICE) || \
 +    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) || \
 +    defined(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU_ALL)
 +      bool                    dma_coherent:1;
 +#endif
  };
  
  static inline struct device *kobj_to_dev(struct kobject *kobj)