Skip to content

Commit

Permalink
driver core: make struct device_type.uevent() take a const *
Browse files Browse the repository at this point in the history
The uevent() callback in struct device_type should not be modifying the
device that is passed into it, so mark it as a const * and propagate the
function signature changes out into all relevant subsystems that use
this callback.

Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: Andreas Noever <andreas.noever@gmail.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Bard Liao <yung-chuan.liao@linux.intel.com>
Cc: Chaitanya Kulkarni <kch@nvidia.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Frank Rowand <frowand.list@gmail.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Jilin Yuan <yuanjilin@cdjrlc.com>
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: Len Brown <lenb@kernel.org>
Cc: Mark Gross <markgross@kernel.org>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
Cc: Maximilian Luz <luzmaximilian@gmail.com>
Cc: Michael Jamet <michael.jamet@intel.com>
Cc: Ming Lei <ming.lei@redhat.com>
Cc: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: Sanyog Kale <sanyog.r.kale@intel.com>
Cc: Sean Young <sean@mess.org>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Won Chung <wonchung@google.com>
Cc: Yehezkel Bernat <YehezkelShB@gmail.com>
Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com> # for Thunderbolt
Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Acked-by: Wolfram Sang <wsa@kernel.org>
Acked-by: Vinod Koul <vkoul@kernel.org>
Acked-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230111113018.459199-6-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
gregkh authored and junxiaoc committed Jul 18, 2023
1 parent e711f8e commit 4f8e0e8
Show file tree
Hide file tree
Showing 25 changed files with 53 additions and 54 deletions.
4 changes: 2 additions & 2 deletions block/partitions/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,9 +254,9 @@ static void part_release(struct device *dev)
iput(dev_to_bdev(dev)->bd_inode);
}

static int part_uevent(struct device *dev, struct kobj_uevent_env *env)
static int part_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct block_device *part = dev_to_bdev(dev);
const struct block_device *part = dev_to_bdev(dev);

add_uevent_var(env, "PARTN=%u", part->bd_partno);
if (part->bd_meta_info && part->bd_meta_info->volname[0])
Expand Down
8 changes: 4 additions & 4 deletions drivers/acpi/device_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ static void acpi_hide_nondev_subnodes(struct acpi_device_data *data)
* -EINVAL: output error
* -ENOMEM: output is truncated
*/
static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
static int create_pnp_modalias(const struct acpi_device *acpi_dev, char *modalias,
int size)
{
int len;
Expand Down Expand Up @@ -191,7 +191,7 @@ static int create_pnp_modalias(struct acpi_device *acpi_dev, char *modalias,
* only be called for devices having ACPI_DT_NAMESPACE_HID in their list of
* ACPI/PNP IDs.
*/
static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
static int create_of_modalias(const struct acpi_device *acpi_dev, char *modalias,
int size)
{
struct acpi_buffer buf = { ACPI_ALLOCATE_BUFFER };
Expand Down Expand Up @@ -239,7 +239,7 @@ static int create_of_modalias(struct acpi_device *acpi_dev, char *modalias,
return len;
}

int __acpi_device_uevent_modalias(struct acpi_device *adev,
int __acpi_device_uevent_modalias(const struct acpi_device *adev,
struct kobj_uevent_env *env)
{
int len;
Expand Down Expand Up @@ -277,7 +277,7 @@ int __acpi_device_uevent_modalias(struct acpi_device *adev,
* Because other buses do not support ACPI HIDs & CIDs, e.g. for a device with
* hid:IBM0001 and cid:ACPI0001 you get: "acpi:IBM0001:ACPI0001".
*/
int acpi_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env)
int acpi_device_uevent_modalias(const struct device *dev, struct kobj_uevent_env *env)
{
return __acpi_device_uevent_modalias(acpi_companion_match(dev), env);
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/acpi/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ int acpi_bus_register_early_device(int type);
Device Matching and Notification
-------------------------------------------------------------------------- */
struct acpi_device *acpi_companion_match(const struct device *dev);
int __acpi_device_uevent_modalias(struct acpi_device *adev,
int __acpi_device_uevent_modalias(const struct acpi_device *adev,
struct kobj_uevent_env *env);

/* --------------------------------------------------------------------------
Expand Down
8 changes: 4 additions & 4 deletions drivers/firewire/core-device.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ static void get_ids(const u32 *directory, int *id)
}
}

static void get_modalias_ids(struct fw_unit *unit, int *id)
static void get_modalias_ids(const struct fw_unit *unit, int *id)
{
get_ids(&fw_parent_device(unit)->config_rom[5], id);
get_ids(unit->directory, id);
Expand Down Expand Up @@ -195,7 +195,7 @@ static void fw_unit_remove(struct device *dev)
driver->remove(fw_unit(dev));
}

static int get_modalias(struct fw_unit *unit, char *buffer, size_t buffer_size)
static int get_modalias(const struct fw_unit *unit, char *buffer, size_t buffer_size)
{
int id[] = {0, 0, 0, 0};

Expand All @@ -206,9 +206,9 @@ static int get_modalias(struct fw_unit *unit, char *buffer, size_t buffer_size)
id[0], id[1], id[2], id[3]);
}

static int fw_unit_uevent(struct device *dev, struct kobj_uevent_env *env)
static int fw_unit_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct fw_unit *unit = fw_unit(dev);
const struct fw_unit *unit = fw_unit(dev);
char modalias[64];

get_modalias(unit, modalias, sizeof(modalias));
Expand Down
2 changes: 1 addition & 1 deletion drivers/gpu/drm/display/drm_dp_aux_bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ static void dp_aux_ep_dev_release(struct device *dev)
kfree(aux_ep_with_data);
}

static int dp_aux_ep_dev_modalias(struct device *dev, struct kobj_uevent_env *env)
static int dp_aux_ep_dev_modalias(const struct device *dev, struct kobj_uevent_env *env)
{
return of_device_uevent_modalias(dev, env);
}
Expand Down
4 changes: 2 additions & 2 deletions drivers/i2c/i2c-core-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,9 +136,9 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv)
return 0;
}

static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
static int i2c_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct i2c_client *client = to_i2c_client(dev);
const struct i2c_client *client = to_i2c_client(dev);
int rc;

rc = of_device_uevent_modalias(dev, env);
Expand Down
2 changes: 1 addition & 1 deletion drivers/i3c/device.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ EXPORT_SYMBOL_GPL(i3c_device_do_priv_xfers);
*
* Retrieve I3C dev info.
*/
void i3c_device_get_info(struct i3c_device *dev,
void i3c_device_get_info(const struct i3c_device *dev,
struct i3c_device_info *info)
{
if (!info)
Expand Down
4 changes: 2 additions & 2 deletions drivers/i3c/master.c
Original file line number Diff line number Diff line change
Expand Up @@ -273,9 +273,9 @@ static struct attribute *i3c_device_attrs[] = {
};
ATTRIBUTE_GROUPS(i3c_device);

static int i3c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
static int i3c_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct i3c_device *i3cdev = dev_to_i3cdev(dev);
const struct i3c_device *i3cdev = dev_to_i3cdev(dev);
struct i3c_device_info devinfo;
u16 manuf, part, ext;

Expand Down
16 changes: 8 additions & 8 deletions drivers/input/input.c
Original file line number Diff line number Diff line change
Expand Up @@ -1371,7 +1371,7 @@ INPUT_DEV_STRING_ATTR_SHOW(phys);
INPUT_DEV_STRING_ATTR_SHOW(uniq);

static int input_print_modalias_bits(char *buf, int size,
char name, unsigned long *bm,
char name, const unsigned long *bm,
unsigned int min_bit, unsigned int max_bit)
{
int len = 0, i;
Expand All @@ -1383,7 +1383,7 @@ static int input_print_modalias_bits(char *buf, int size,
return len;
}

static int input_print_modalias(char *buf, int size, struct input_dev *id,
static int input_print_modalias(char *buf, int size, const struct input_dev *id,
int add_cr)
{
int len;
Expand Down Expand Up @@ -1431,7 +1431,7 @@ static ssize_t input_dev_show_modalias(struct device *dev,
}
static DEVICE_ATTR(modalias, S_IRUGO, input_dev_show_modalias, NULL);

static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
static int input_print_bitmap(char *buf, int buf_size, const unsigned long *bitmap,
int max, int add_cr);

static ssize_t input_dev_show_properties(struct device *dev,
Expand Down Expand Up @@ -1523,7 +1523,7 @@ static const struct attribute_group input_dev_id_attr_group = {
.attrs = input_dev_id_attrs,
};

static int input_print_bitmap(char *buf, int buf_size, unsigned long *bitmap,
static int input_print_bitmap(char *buf, int buf_size, const unsigned long *bitmap,
int max, int add_cr)
{
int i;
Expand Down Expand Up @@ -1620,7 +1620,7 @@ static void input_dev_release(struct device *device)
* device bitfields.
*/
static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
const char *name, unsigned long *bitmap, int max)
const char *name, const unsigned long *bitmap, int max)
{
int len;

Expand All @@ -1638,7 +1638,7 @@ static int input_add_uevent_bm_var(struct kobj_uevent_env *env,
}

static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
struct input_dev *dev)
const struct input_dev *dev)
{
int len;

Expand Down Expand Up @@ -1676,9 +1676,9 @@ static int input_add_uevent_modalias_var(struct kobj_uevent_env *env,
return err; \
} while (0)

static int input_dev_uevent(struct device *device, struct kobj_uevent_env *env)
static int input_dev_uevent(const struct device *device, struct kobj_uevent_env *env)
{
struct input_dev *dev = to_input_dev(device);
const struct input_dev *dev = to_input_dev(device);

INPUT_ADD_HOTPLUG_VAR("PRODUCT=%x/%x/%x/%x",
dev->id.bustype, dev->id.vendor,
Expand Down
2 changes: 1 addition & 1 deletion drivers/media/rc/rc-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1614,7 +1614,7 @@ static void rc_dev_release(struct device *device)
kfree(dev);
}

static int rc_dev_uevent(struct device *device, struct kobj_uevent_env *env)
static int rc_dev_uevent(const struct device *device, struct kobj_uevent_env *env)
{
struct rc_dev *dev = to_rc_dev(device);
int ret = 0;
Expand Down
4 changes: 2 additions & 2 deletions drivers/platform/surface/aggregator/bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ static struct attribute *ssam_device_attrs[] = {
};
ATTRIBUTE_GROUPS(ssam_device);

static int ssam_device_uevent(struct device *dev, struct kobj_uevent_env *env)
static int ssam_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct ssam_device *sdev = to_ssam_device(dev);
const struct ssam_device *sdev = to_ssam_device(dev);

return add_uevent_var(env, "MODALIAS=ssam:d%02Xc%02Xt%02Xi%02Xf%02X",
sdev->uid.domain, sdev->uid.category,
Expand Down
4 changes: 2 additions & 2 deletions drivers/soundwire/bus_type.c
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ int sdw_slave_modalias(const struct sdw_slave *slave, char *buf, size_t size)
slave->id.sdw_version, slave->id.class_id);
}

int sdw_slave_uevent(struct device *dev, struct kobj_uevent_env *env)
int sdw_slave_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct sdw_slave *slave = dev_to_sdw_dev(dev);
const struct sdw_slave *slave = dev_to_sdw_dev(dev);
char modalias[32];

sdw_slave_modalias(slave, modalias, sizeof(modalias));
Expand Down
4 changes: 2 additions & 2 deletions drivers/thunderbolt/switch.c
Original file line number Diff line number Diff line change
Expand Up @@ -2115,9 +2115,9 @@ static void tb_switch_release(struct device *dev)
kfree(sw);
}

static int tb_switch_uevent(struct device *dev, struct kobj_uevent_env *env)
static int tb_switch_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct tb_switch *sw = tb_to_switch(dev);
const struct tb_switch *sw = tb_to_switch(dev);
const char *type;

if (tb_switch_is_usb4(sw)) {
Expand Down
2 changes: 1 addition & 1 deletion drivers/thunderbolt/tb.h
Original file line number Diff line number Diff line change
Expand Up @@ -858,7 +858,7 @@ static inline bool tb_is_switch(const struct device *dev)
return dev->type == &tb_switch_type;
}

static inline struct tb_switch *tb_to_switch(struct device *dev)
static inline struct tb_switch *tb_to_switch(const struct device *dev)
{
if (tb_is_switch(dev))
return container_of(dev, struct tb_switch, dev);
Expand Down
6 changes: 3 additions & 3 deletions drivers/thunderbolt/xdomain.c
Original file line number Diff line number Diff line change
Expand Up @@ -880,7 +880,7 @@ static ssize_t key_show(struct device *dev, struct device_attribute *attr,
}
static DEVICE_ATTR_RO(key);

static int get_modalias(struct tb_service *svc, char *buf, size_t size)
static int get_modalias(const struct tb_service *svc, char *buf, size_t size)
{
return snprintf(buf, size, "tbsvc:k%sp%08Xv%08Xr%08X", svc->key,
svc->prtcid, svc->prtcvers, svc->prtcrevs);
Expand Down Expand Up @@ -952,9 +952,9 @@ static const struct attribute_group *tb_service_attr_groups[] = {
NULL,
};

static int tb_service_uevent(struct device *dev, struct kobj_uevent_env *env)
static int tb_service_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct tb_service *svc = container_of(dev, struct tb_service, dev);
const struct tb_service *svc = container_of_const(dev, struct tb_service, dev);
char modalias[64];

get_modalias(svc, modalias, sizeof(modalias));
Expand Down
2 changes: 1 addition & 1 deletion drivers/tty/serdev/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ static struct attribute *serdev_device_attrs[] = {
};
ATTRIBUTE_GROUPS(serdev_device);

static int serdev_device_uevent(struct device *dev, struct kobj_uevent_env *env)
static int serdev_device_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
int rc;

Expand Down
8 changes: 4 additions & 4 deletions drivers/usb/core/message.c
Original file line number Diff line number Diff line change
Expand Up @@ -1818,11 +1818,11 @@ void usb_authorize_interface(struct usb_interface *intf)
}
}

static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
static int usb_if_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct usb_device *usb_dev;
struct usb_interface *intf;
struct usb_host_interface *alt;
const struct usb_device *usb_dev;
const struct usb_interface *intf;
const struct usb_host_interface *alt;

intf = to_usb_interface(dev);
usb_dev = interface_to_usbdev(intf);
Expand Down
4 changes: 2 additions & 2 deletions drivers/usb/core/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -499,9 +499,9 @@ static void usb_release_dev(struct device *dev)
kfree(udev);
}

static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
static int usb_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct usb_device *usb_dev;
const struct usb_device *usb_dev;

usb_dev = to_usb_device(dev);

Expand Down
6 changes: 3 additions & 3 deletions drivers/usb/phy/phy.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ static struct usb_phy *__of_usb_find_phy(struct device_node *node)
return ERR_PTR(-EPROBE_DEFER);
}

static struct usb_phy *__device_to_usb_phy(struct device *dev)
static struct usb_phy *__device_to_usb_phy(const struct device *dev)
{
struct usb_phy *usb_phy;

Expand Down Expand Up @@ -145,9 +145,9 @@ static void usb_phy_notify_charger_work(struct work_struct *work)
kobject_uevent(&usb_phy->dev->kobj, KOBJ_CHANGE);
}

static int usb_phy_uevent(struct device *dev, struct kobj_uevent_env *env)
static int usb_phy_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
struct usb_phy *usb_phy;
const struct usb_phy *usb_phy;
char uchger_state[50] = { 0 };
char uchger_type[50] = { 0 };
unsigned long flags;
Expand Down
3 changes: 1 addition & 2 deletions drivers/usb/roles/class.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,7 @@ static const struct attribute_group *usb_role_switch_groups[] = {
NULL,
};

static int
usb_role_switch_uevent(struct device *dev, struct kobj_uevent_env *env)
static int usb_role_switch_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
int ret;

Expand Down
2 changes: 1 addition & 1 deletion drivers/usb/typec/class.c
Original file line number Diff line number Diff line change
Expand Up @@ -1718,7 +1718,7 @@ static const struct attribute_group *typec_groups[] = {
NULL
};

static int typec_uevent(struct device *dev, struct kobj_uevent_env *env)
static int typec_uevent(const struct device *dev, struct kobj_uevent_env *env)
{
int ret;

Expand Down
4 changes: 2 additions & 2 deletions include/linux/acpi.h
Original file line number Diff line number Diff line change
Expand Up @@ -722,7 +722,7 @@ const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
const void *acpi_device_get_match_data(const struct device *dev);
extern bool acpi_driver_match_device(struct device *dev,
const struct device_driver *drv);
int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
int acpi_device_uevent_modalias(const struct device *, struct kobj_uevent_env *);
int acpi_device_modalias(struct device *, char *, int);

struct platform_device *acpi_create_platform_device(struct acpi_device *,
Expand Down Expand Up @@ -957,7 +957,7 @@ static inline union acpi_object *acpi_evaluate_dsm(acpi_handle handle,
return NULL;
}

static inline int acpi_device_uevent_modalias(struct device *dev,
static inline int acpi_device_uevent_modalias(const struct device *dev,
struct kobj_uevent_env *env)
{
return -ENODEV;
Expand Down
2 changes: 1 addition & 1 deletion include/linux/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ int subsys_virtual_register(struct bus_type *subsys,
struct device_type {
const char *name;
const struct attribute_group **groups;
int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
int (*uevent)(const struct device *dev, struct kobj_uevent_env *env);
char *(*devnode)(struct device *dev, umode_t *mode,
kuid_t *uid, kgid_t *gid);
void (*release)(struct device *dev);
Expand Down
2 changes: 1 addition & 1 deletion include/linux/i3c/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ int i3c_device_do_priv_xfers(struct i3c_device *dev,
struct i3c_priv_xfer *xfers,
int nxfers);

void i3c_device_get_info(struct i3c_device *dev, struct i3c_device_info *info);
void i3c_device_get_info(const struct i3c_device *dev, struct i3c_device_info *info);

struct i3c_ibi_payload {
unsigned int len;
Expand Down
2 changes: 1 addition & 1 deletion include/linux/soundwire/sdw_type.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ static inline int is_sdw_slave(const struct device *dev)
int __sdw_register_driver(struct sdw_driver *drv, struct module *owner);
void sdw_unregister_driver(struct sdw_driver *drv);

int sdw_slave_uevent(struct device *dev, struct kobj_uevent_env *env);
int sdw_slave_uevent(const struct device *dev, struct kobj_uevent_env *env);

/**
* module_sdw_driver() - Helper macro for registering a Soundwire driver
Expand Down

0 comments on commit 4f8e0e8

Please sign in to comment.