Skip to content
Snippets Groups Projects
  • Linus Torvalds's avatar
    71a7507a
    Merge tag 'driver-core-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core · 71a7507a
    Linus Torvalds authored
    Pull driver core updates from Greg KH:
     "Here is the set of driver core and kernfs changes for 6.2-rc1.
    
      The "big" change in here is the addition of a new macro,
      container_of_const() that will preserve the "const-ness" of a pointer
      passed into it.
    
      The "problem" of the current container_of() macro is that if you pass
      in a "const *", out of it can comes a non-const pointer unless you
      specifically ask for it. For many usages, we want to preserve the
      "const" attribute by using the same call. For a specific example, this
      series changes the kobj_to_dev() macro to use it, allowing it to be
      used no matter what the const value is. This prevents every subsystem
      from having to declare 2 different individual macros (i.e.
      kobj_const_to_dev() and kobj_to_dev()) and having the compiler enforce
      the const value at build time, which having 2 macros would not do
      either.
    
      The driver for all of this have been discussions with the Rust kernel
      developers as to how to properly mark driver core, and kobject,
      objects as being "non-mutable". The changes to the kobject and driver
      core in this pull request are the result of that, as there are lots of
      paths where kobjects and device pointers are not modified at all, so
      marking them as "const" allows the compiler to enforce this.
    
      So, a nice side affect of the Rust development effort has been already
      to clean up the driver core code to be more obvious about object
      rules.
    
      All of this has been bike-shedded in quite a lot of detail on lkml
      with different names and implementations resulting in the tiny version
      we have in here, much better than my original proposal. Lots of
      subsystem maintainers have acked the changes as well.
    
      Other than this change, included in here are smaller stuff like:
    
       - kernfs fixes and updates to handle lock contention better
    
       - vmlinux.lds.h fixes and updates
    
       - sysfs and debugfs documentation updates
    
       - device property updates
    
      All of these have been in the linux-next tree for quite a while with
      no problems"
    
    * tag 'driver-core-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (58 commits)
      device property: Fix documentation for fwnode_get_next_parent()
      firmware_loader: fix up to_fw_sysfs() to preserve const
      usb.h: take advantage of container_of_const()
      device.h: move kobj_to_dev() to use container_of_const()
      container_of: add container_of_const() that preserves const-ness of the pointer
      driver core: fix up missed drivers/s390/char/hmcdrv_dev.c class.devnode() conversion.
      driver core: fix up missed scsi/cxlflash class.devnode() conversion.
      driver core: fix up some missing class.devnode() conversions.
      driver core: make struct class.devnode() take a const *
      driver core: make struct class.dev_uevent() take a const *
      cacheinfo: Remove of_node_put() for fw_token
      device property: Add a blank line in Kconfig of tests
      device property: Rename goto label to be more precise
      device property: Move PROPERTY_ENTRY_BOOL() a bit down
      device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*()
      kernfs: fix all kernel-doc warnings and multiple typos
      driver core: pass a const * into of_device_uevent()
      kobject: kset_uevent_ops: make name() callback take a const *
      kobject: kset_uevent_ops: make filter() callback take a const *
      kobject: make kobject_namespace take a const *
      ...
    71a7507a
    History
    Merge tag 'driver-core-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
    Linus Torvalds authored
    Pull driver core updates from Greg KH:
     "Here is the set of driver core and kernfs changes for 6.2-rc1.
    
      The "big" change in here is the addition of a new macro,
      container_of_const() that will preserve the "const-ness" of a pointer
      passed into it.
    
      The "problem" of the current container_of() macro is that if you pass
      in a "const *", out of it can comes a non-const pointer unless you
      specifically ask for it. For many usages, we want to preserve the
      "const" attribute by using the same call. For a specific example, this
      series changes the kobj_to_dev() macro to use it, allowing it to be
      used no matter what the const value is. This prevents every subsystem
      from having to declare 2 different individual macros (i.e.
      kobj_const_to_dev() and kobj_to_dev()) and having the compiler enforce
      the const value at build time, which having 2 macros would not do
      either.
    
      The driver for all of this have been discussions with the Rust kernel
      developers as to how to properly mark driver core, and kobject,
      objects as being "non-mutable". The changes to the kobject and driver
      core in this pull request are the result of that, as there are lots of
      paths where kobjects and device pointers are not modified at all, so
      marking them as "const" allows the compiler to enforce this.
    
      So, a nice side affect of the Rust development effort has been already
      to clean up the driver core code to be more obvious about object
      rules.
    
      All of this has been bike-shedded in quite a lot of detail on lkml
      with different names and implementations resulting in the tiny version
      we have in here, much better than my original proposal. Lots of
      subsystem maintainers have acked the changes as well.
    
      Other than this change, included in here are smaller stuff like:
    
       - kernfs fixes and updates to handle lock contention better
    
       - vmlinux.lds.h fixes and updates
    
       - sysfs and debugfs documentation updates
    
       - device property updates
    
      All of these have been in the linux-next tree for quite a while with
      no problems"
    
    * tag 'driver-core-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (58 commits)
      device property: Fix documentation for fwnode_get_next_parent()
      firmware_loader: fix up to_fw_sysfs() to preserve const
      usb.h: take advantage of container_of_const()
      device.h: move kobj_to_dev() to use container_of_const()
      container_of: add container_of_const() that preserves const-ness of the pointer
      driver core: fix up missed drivers/s390/char/hmcdrv_dev.c class.devnode() conversion.
      driver core: fix up missed scsi/cxlflash class.devnode() conversion.
      driver core: fix up some missing class.devnode() conversions.
      driver core: make struct class.devnode() take a const *
      driver core: make struct class.dev_uevent() take a const *
      cacheinfo: Remove of_node_put() for fw_token
      device property: Add a blank line in Kconfig of tests
      device property: Rename goto label to be more precise
      device property: Move PROPERTY_ENTRY_BOOL() a bit down
      device property: Get rid of __PROPERTY_ENTRY_ARRAY_EL*SIZE*()
      kernfs: fix all kernel-doc warnings and multiple typos
      driver core: pass a const * into of_device_uevent()
      kobject: kset_uevent_ops: make name() callback take a const *
      kobject: kset_uevent_ops: make filter() callback take a const *
      kobject: make kobject_namespace take a const *
      ...