device.h: move kobj_to_dev() to use container_of_const()

Instead of rolling our own const-checking logic, use the newly
introduced container_of_const() to handle it all for us automatically.

Cc: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Link: https://lore.kernel.org/r/20221205121206.166576-2-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2022-12-05 13:12:04 +01:00
parent 64f6a5d192
commit 6149f83b31

View file

@ -680,26 +680,7 @@ struct device_link {
bool supplier_preactivated; /* Owned by consumer probe. */
};
static inline struct device *__kobj_to_dev(struct kobject *kobj)
{
return container_of(kobj, struct device, kobj);
}
static inline const struct device *__kobj_to_dev_const(const struct kobject *kobj)
{
return container_of(kobj, const struct device, kobj);
}
/*
* container_of() will happily take a const * and spit back a non-const * as it
* is just doing pointer math. But we want to be a bit more careful in the
* driver code, so manually force any const * of a kobject to also be a const *
* to a device.
*/
#define kobj_to_dev(kobj) \
_Generic((kobj), \
const struct kobject *: __kobj_to_dev_const, \
struct kobject *: __kobj_to_dev)(kobj)
#define kobj_to_dev(__kobj) container_of_const(__kobj, struct device, kobj)
/**
* device_iommu_mapped - Returns true when the device DMA is translated