* [PATCH 2/5] driver core: make struct class.devnode() take a const *
2022-11-23 12:25 [PATCH 1/5] driver core: make struct class.dev_uevent() take a const * Greg Kroah-Hartman
@ 2022-11-23 12:25 ` Greg Kroah-Hartman
2022-11-25 11:55 ` Mauro Carvalho Chehab
2022-11-23 12:38 ` [PATCH 1/5] driver core: make struct class.dev_uevent() " Rafael J. Wysocki
` (3 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Greg Kroah-Hartman @ 2022-11-23 12:25 UTC (permalink / raw)
To: linux-kernel
Cc: Greg Kroah-Hartman, Fenghua Yu, Reinette Chatre, Thomas Gleixner,
Ingo Molnar, Borislav Petkov, Dave Hansen, x86, H. Peter Anvin,
FUJITA Tomonori, Jens Axboe, Justin Sanders, Arnd Bergmann,
Sumit Semwal, Benjamin Gaignard, Liam Mark, Laura Abbott,
Brian Starkey, John Stultz, Christian König,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Jason Gunthorpe, Leon Romanovsky,
Dennis Dalessandro, Dmitry Torokhov, Mauro Carvalho Chehab,
Sean Young, Frank Haverkamp, Jiri Slaby, Michael S. Tsirkin,
Jason Wang, Alex Williamson, Cornelia Huck, Kees Cook,
Anton Vorontsov, Colin Cross, Tony Luck, Jaroslav Kysela,
Takashi Iwai, Hans Verkuil, Christophe JAILLET, Xie Yongji,
Gautam Dawar, Dan Carpenter, Eli Cohen, Parav Pandit,
Maxime Coquelin, alsa-devel, dri-devel, kvm, linaro-mm-sig,
linux-block, linux-input, linux-media, linux-rdma, linux-scsi,
linux-usb, virtualization
The devnode() in struct class 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: Fenghua Yu <fenghua.yu@intel.com>
Cc: Reinette Chatre <reinette.chatre@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: x86@kernel.org
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Justin Sanders <justin@coraid.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
Cc: Liam Mark <lmark@codeaurora.org>
Cc: Laura Abbott <labbott@redhat.com>
Cc: Brian Starkey <Brian.Starkey@arm.com>
Cc: John Stultz <jstultz@google.com>
Cc: "Christian König" <christian.koenig@amd.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <mripard@kernel.org>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: David Airlie <airlied@gmail.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Sean Young <sean@mess.org>
Cc: Frank Haverkamp <haver@linux.ibm.com>
Cc: Jiri Slaby <jirislaby@kernel.org>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Alex Williamson <alex.williamson@redhat.com>
Cc: Cornelia Huck <cohuck@redhat.com>
Cc: Kees Cook <keescook@chromium.org>
Cc: Anton Vorontsov <anton@enomsg.org>
Cc: Colin Cross <ccross@android.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.com>
Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Cc: Xie Yongji <xieyongji@bytedance.com>
Cc: Gautam Dawar <gautam.dawar@xilinx.com>
Cc: Dan Carpenter <error27@gmail.com>
Cc: Eli Cohen <elic@nvidia.com>
Cc: Parav Pandit <parav@nvidia.com>
Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
Cc: alsa-devel@alsa-project.org
Cc: dri-devel@lists.freedesktop.org
Cc: kvm@vger.kernel.org
Cc: linaro-mm-sig@lists.linaro.org
Cc: linux-block@vger.kernel.org
Cc: linux-input@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-media@vger.kernel.org
Cc: linux-rdma@vger.kernel.org
Cc: linux-scsi@vger.kernel.org
Cc: linux-usb@vger.kernel.org
Cc: virtualization@lists.linux-foundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/x86/kernel/cpu/resctrl/pseudo_lock.c | 4 ++--
arch/x86/kernel/cpuid.c | 2 +-
arch/x86/kernel/msr.c | 2 +-
block/bsg.c | 2 +-
drivers/block/aoe/aoechr.c | 2 +-
drivers/char/mem.c | 2 +-
drivers/char/misc.c | 4 ++--
drivers/dma-buf/dma-heap.c | 2 +-
drivers/gpu/drm/drm_sysfs.c | 2 +-
drivers/infiniband/core/user_mad.c | 2 +-
drivers/infiniband/core/uverbs_main.c | 2 +-
drivers/infiniband/hw/hfi1/device.c | 4 ++--
drivers/input/input.c | 2 +-
drivers/media/dvb-core/dvbdev.c | 4 ++--
drivers/media/pci/ddbridge/ddbridge-core.c | 4 ++--
drivers/media/rc/rc-main.c | 2 +-
drivers/misc/genwqe/card_base.c | 2 +-
drivers/tty/tty_io.c | 2 +-
drivers/usb/core/file.c | 2 +-
drivers/vdpa/vdpa_user/vduse_dev.c | 2 +-
drivers/vfio/vfio_main.c | 2 +-
fs/pstore/pmsg.c | 2 +-
include/linux/device/class.h | 2 +-
sound/sound_core.c | 2 +-
24 files changed, 29 insertions(+), 29 deletions(-)
diff --git a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
index d961ae3ed96e..4e4231a58f38 100644
--- a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
+++ b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
@@ -1560,9 +1560,9 @@ static const struct file_operations pseudo_lock_dev_fops = {
.mmap = pseudo_lock_dev_mmap,
};
-static char *pseudo_lock_devnode(struct device *dev, umode_t *mode)
+static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
{
- struct rdtgroup *rdtgrp;
+ const struct rdtgroup *rdtgrp;
rdtgrp = dev_get_drvdata(dev);
if (mode)
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
index 6f7b8cc1bc9f..621ba9c0f17a 100644
--- a/arch/x86/kernel/cpuid.c
+++ b/arch/x86/kernel/cpuid.c
@@ -139,7 +139,7 @@ static int cpuid_device_destroy(unsigned int cpu)
return 0;
}
-static char *cpuid_devnode(struct device *dev, umode_t *mode)
+static char *cpuid_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
}
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
index ed8ac6bcbafb..708751311786 100644
--- a/arch/x86/kernel/msr.c
+++ b/arch/x86/kernel/msr.c
@@ -250,7 +250,7 @@ static int msr_device_destroy(unsigned int cpu)
return 0;
}
-static char *msr_devnode(struct device *dev, umode_t *mode)
+static char *msr_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
}
diff --git a/block/bsg.c b/block/bsg.c
index 2ab1351eb082..08046bd9207d 100644
--- a/block/bsg.c
+++ b/block/bsg.c
@@ -232,7 +232,7 @@ struct bsg_device *bsg_register_queue(struct request_queue *q,
}
EXPORT_SYMBOL_GPL(bsg_register_queue);
-static char *bsg_devnode(struct device *dev, umode_t *mode)
+static char *bsg_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
}
diff --git a/drivers/block/aoe/aoechr.c b/drivers/block/aoe/aoechr.c
index 8eea2529da20..7a368c90467d 100644
--- a/drivers/block/aoe/aoechr.c
+++ b/drivers/block/aoe/aoechr.c
@@ -273,7 +273,7 @@ static const struct file_operations aoe_fops = {
.llseek = noop_llseek,
};
-static char *aoe_devnode(struct device *dev, umode_t *mode)
+static char *aoe_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev));
}
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 5611d127363e..83bf2a4dcb57 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -746,7 +746,7 @@ static const struct file_operations memory_fops = {
.llseek = noop_llseek,
};
-static char *mem_devnode(struct device *dev, umode_t *mode)
+static char *mem_devnode(const struct device *dev, umode_t *mode)
{
if (mode && devlist[MINOR(dev->devt)].mode)
*mode = devlist[MINOR(dev->devt)].mode;
diff --git a/drivers/char/misc.c b/drivers/char/misc.c
index cba19bfdc44d..88c6995b9a3d 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
@@ -254,9 +254,9 @@ void misc_deregister(struct miscdevice *misc)
}
EXPORT_SYMBOL(misc_deregister);
-static char *misc_devnode(struct device *dev, umode_t *mode)
+static char *misc_devnode(const struct device *dev, umode_t *mode)
{
- struct miscdevice *c = dev_get_drvdata(dev);
+ const struct miscdevice *c = dev_get_drvdata(dev);
if (mode && c->mode)
*mode = c->mode;
diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
index 8f5848aa144f..4d7150791315 100644
--- a/drivers/dma-buf/dma-heap.c
+++ b/drivers/dma-buf/dma-heap.c
@@ -299,7 +299,7 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
return err_ret;
}
-static char *dma_heap_devnode(struct device *dev, umode_t *mode)
+static char *dma_heap_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "dma_heap/%s", dev_name(dev));
}
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index 430e00b16eec..14bf156b3f1b 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -90,7 +90,7 @@ static void drm_sysfs_acpi_register(void) { }
static void drm_sysfs_acpi_unregister(void) { }
#endif
-static char *drm_devnode(struct device *dev, umode_t *mode)
+static char *drm_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
}
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 98cb594cd9a6..f83954180a33 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1224,7 +1224,7 @@ static struct attribute *umad_class_dev_attrs[] = {
};
ATTRIBUTE_GROUPS(umad_class_dev);
-static char *umad_devnode(struct device *dev, umode_t *mode)
+static char *umad_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
}
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index d54434088727..bdb179a09d77 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -1237,7 +1237,7 @@ static void ib_uverbs_remove_one(struct ib_device *device, void *client_data)
put_device(&uverbs_dev->dev);
}
-static char *uverbs_devnode(struct device *dev, umode_t *mode)
+static char *uverbs_devnode(const struct device *dev, umode_t *mode)
{
if (mode)
*mode = 0666;
diff --git a/drivers/infiniband/hw/hfi1/device.c b/drivers/infiniband/hw/hfi1/device.c
index 8ceff7141baf..1f4496032170 100644
--- a/drivers/infiniband/hw/hfi1/device.c
+++ b/drivers/infiniband/hw/hfi1/device.c
@@ -72,7 +72,7 @@ const char *class_name(void)
return hfi1_class_name;
}
-static char *hfi1_devnode(struct device *dev, umode_t *mode)
+static char *hfi1_devnode(const struct device *dev, umode_t *mode)
{
if (mode)
*mode = 0600;
@@ -85,7 +85,7 @@ static const char *class_name_user(void)
return hfi1_class_name_user;
}
-static char *hfi1_user_devnode(struct device *dev, umode_t *mode)
+static char *hfi1_user_devnode(const struct device *dev, umode_t *mode)
{
if (mode)
*mode = 0666;
diff --git a/drivers/input/input.c b/drivers/input/input.c
index ebb2b7f0f8ff..50597165dc54 100644
--- a/drivers/input/input.c
+++ b/drivers/input/input.c
@@ -1913,7 +1913,7 @@ static const struct device_type input_dev_type = {
#endif
};
-static char *input_devnode(struct device *dev, umode_t *mode)
+static char *input_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
}
diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
index 6ef18bab9648..e73f5240cc2c 100644
--- a/drivers/media/dvb-core/dvbdev.c
+++ b/drivers/media/dvb-core/dvbdev.c
@@ -1018,9 +1018,9 @@ static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
return 0;
}
-static char *dvb_devnode(struct device *dev, umode_t *mode)
+static char *dvb_devnode(const struct device *dev, umode_t *mode)
{
- struct dvb_device *dvbdev = dev_get_drvdata(dev);
+ const struct dvb_device *dvbdev = dev_get_drvdata(dev);
return kasprintf(GFP_KERNEL, "dvb/adapter%d/%s%d",
dvbdev->adapter->num, dnames[dvbdev->type], dvbdev->id);
diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c
index fe833f39698a..ee8087f29b2c 100644
--- a/drivers/media/pci/ddbridge/ddbridge-core.c
+++ b/drivers/media/pci/ddbridge/ddbridge-core.c
@@ -2716,9 +2716,9 @@ static const struct file_operations ddb_fops = {
.release = ddb_release,
};
-static char *ddb_devnode(struct device *device, umode_t *mode)
+static char *ddb_devnode(const struct device *device, umode_t *mode)
{
- struct ddb *dev = dev_get_drvdata(device);
+ const struct ddb *dev = dev_get_drvdata(device);
return kasprintf(GFP_KERNEL, "ddbridge/card%d", dev->nr);
}
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
index eba0cd30e314..527d9324742b 100644
--- a/drivers/media/rc/rc-main.c
+++ b/drivers/media/rc/rc-main.c
@@ -1017,7 +1017,7 @@ static void ir_close(struct input_dev *idev)
}
/* class for /sys/class/rc */
-static char *rc_devnode(struct device *dev, umode_t *mode)
+static char *rc_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "rc/%s", dev_name(dev));
}
diff --git a/drivers/misc/genwqe/card_base.c b/drivers/misc/genwqe/card_base.c
index 693981891870..0f00687f72d4 100644
--- a/drivers/misc/genwqe/card_base.c
+++ b/drivers/misc/genwqe/card_base.c
@@ -1349,7 +1349,7 @@ static struct pci_driver genwqe_driver = {
* Default mode should be rw for everybody. Do not change default
* device name.
*/
-static char *genwqe_devnode(struct device *dev, umode_t *mode)
+static char *genwqe_devnode(const struct device *dev, umode_t *mode)
{
if (mode)
*mode = 0666;
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index de06c3c2ff70..aad8171f6c21 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -3494,7 +3494,7 @@ void tty_default_fops(struct file_operations *fops)
*fops = tty_fops;
}
-static char *tty_devnode(struct device *dev, umode_t *mode)
+static char *tty_devnode(const struct device *dev, umode_t *mode)
{
if (!mode)
return NULL;
diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c
index 558890ada0e5..da7d88e069e6 100644
--- a/drivers/usb/core/file.c
+++ b/drivers/usb/core/file.c
@@ -62,7 +62,7 @@ static struct usb_class {
struct class *class;
} *usb_class;
-static char *usb_devnode(struct device *dev, umode_t *mode)
+static char *usb_devnode(const struct device *dev, umode_t *mode)
{
struct usb_class_driver *drv;
diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c
index 35dceee3ed56..0dd3c1f291da 100644
--- a/drivers/vdpa/vdpa_user/vduse_dev.c
+++ b/drivers/vdpa/vdpa_user/vduse_dev.c
@@ -1656,7 +1656,7 @@ static const struct file_operations vduse_ctrl_fops = {
.llseek = noop_llseek,
};
-static char *vduse_devnode(struct device *dev, umode_t *mode)
+static char *vduse_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "vduse/%s", dev_name(dev));
}
diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
index 6e8804fe0095..5bf4b3454918 100644
--- a/drivers/vfio/vfio_main.c
+++ b/drivers/vfio/vfio_main.c
@@ -1812,7 +1812,7 @@ EXPORT_SYMBOL(vfio_set_irqs_validate_and_prepare);
/*
* Module/class support
*/
-static char *vfio_devnode(struct device *dev, umode_t *mode)
+static char *vfio_devnode(const struct device *dev, umode_t *mode)
{
return kasprintf(GFP_KERNEL, "vfio/%s", dev_name(dev));
}
diff --git a/fs/pstore/pmsg.c b/fs/pstore/pmsg.c
index d8542ec2f38c..b31c9c72d90b 100644
--- a/fs/pstore/pmsg.c
+++ b/fs/pstore/pmsg.c
@@ -46,7 +46,7 @@ static int pmsg_major;
#undef pr_fmt
#define pr_fmt(fmt) PMSG_NAME ": " fmt
-static char *pmsg_devnode(struct device *dev, umode_t *mode)
+static char *pmsg_devnode(const struct device *dev, umode_t *mode)
{
if (mode)
*mode = 0220;
diff --git a/include/linux/device/class.h b/include/linux/device/class.h
index 94b1107258e5..42cc3fb44a84 100644
--- a/include/linux/device/class.h
+++ b/include/linux/device/class.h
@@ -60,7 +60,7 @@ struct class {
struct kobject *dev_kobj;
int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
- char *(*devnode)(struct device *dev, umode_t *mode);
+ char *(*devnode)(const struct device *dev, umode_t *mode);
void (*class_release)(struct class *class);
void (*dev_release)(struct device *dev);
diff --git a/sound/sound_core.c b/sound/sound_core.c
index 3332fe321737..3e7dd6fcb7cf 100644
--- a/sound/sound_core.c
+++ b/sound/sound_core.c
@@ -30,7 +30,7 @@ MODULE_DESCRIPTION("Core sound module");
MODULE_AUTHOR("Alan Cox");
MODULE_LICENSE("GPL");
-static char *sound_devnode(struct device *dev, umode_t *mode)
+static char *sound_devnode(const struct device *dev, umode_t *mode)
{
if (MAJOR(dev->devt) == SOUND_MAJOR)
return NULL;
--
2.38.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH 2/5] driver core: make struct class.devnode() take a const *
2022-11-23 12:25 ` [PATCH 2/5] driver core: make struct class.devnode() " Greg Kroah-Hartman
@ 2022-11-25 11:55 ` Mauro Carvalho Chehab
2022-11-25 12:40 ` Sumit Semwal
0 siblings, 1 reply; 11+ messages in thread
From: Mauro Carvalho Chehab @ 2022-11-25 11:55 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Fenghua Yu, Reinette Chatre, Thomas Gleixner,
Ingo Molnar, Borislav Petkov, Dave Hansen, x86, H. Peter Anvin,
FUJITA Tomonori, Jens Axboe, Justin Sanders, Arnd Bergmann,
Sumit Semwal, Benjamin Gaignard, Liam Mark, Laura Abbott,
Brian Starkey, John Stultz, Christian König,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Jason Gunthorpe, Leon Romanovsky,
Dennis Dalessandro, Dmitry Torokhov, Sean Young, Frank Haverkamp,
Jiri Slaby, Michael S. Tsirkin, Jason Wang, Alex Williamson,
Cornelia Huck, Kees Cook, Anton Vorontsov, Colin Cross, Tony Luck,
Jaroslav Kysela, Takashi Iwai, Hans Verkuil, Christophe JAILLET,
Xie Yongji, Gautam Dawar, Dan Carpenter, Eli Cohen, Parav Pandit,
Maxime Coquelin, alsa-devel, dri-devel, kvm, linaro-mm-sig,
linux-block, linux-input, linux-media, linux-rdma, linux-scsi,
linux-usb, virtualization
Em Wed, 23 Nov 2022 13:25:20 +0100
Greg Kroah-Hartman <gregkh@linuxfoundation.org> escreveu:
> The devnode() in struct class 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.
Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org>
>
> Cc: Fenghua Yu <fenghua.yu@intel.com>
> Cc: Reinette Chatre <reinette.chatre@intel.com>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: x86@kernel.org
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> Cc: Jens Axboe <axboe@kernel.dk>
> Cc: Justin Sanders <justin@coraid.com>
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: Sumit Semwal <sumit.semwal@linaro.org>
> Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
> Cc: Liam Mark <lmark@codeaurora.org>
> Cc: Laura Abbott <labbott@redhat.com>
> Cc: Brian Starkey <Brian.Starkey@arm.com>
> Cc: John Stultz <jstultz@google.com>
> Cc: "Christian König" <christian.koenig@amd.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: Maxime Ripard <mripard@kernel.org>
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: David Airlie <airlied@gmail.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Sean Young <sean@mess.org>
> Cc: Frank Haverkamp <haver@linux.ibm.com>
> Cc: Jiri Slaby <jirislaby@kernel.org>
> Cc: "Michael S. Tsirkin" <mst@redhat.com>
> Cc: Jason Wang <jasowang@redhat.com>
> Cc: Alex Williamson <alex.williamson@redhat.com>
> Cc: Cornelia Huck <cohuck@redhat.com>
> Cc: Kees Cook <keescook@chromium.org>
> Cc: Anton Vorontsov <anton@enomsg.org>
> Cc: Colin Cross <ccross@android.com>
> Cc: Tony Luck <tony.luck@intel.com>
> Cc: Jaroslav Kysela <perex@perex.cz>
> Cc: Takashi Iwai <tiwai@suse.com>
> Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> Cc: Xie Yongji <xieyongji@bytedance.com>
> Cc: Gautam Dawar <gautam.dawar@xilinx.com>
> Cc: Dan Carpenter <error27@gmail.com>
> Cc: Eli Cohen <elic@nvidia.com>
> Cc: Parav Pandit <parav@nvidia.com>
> Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
> Cc: alsa-devel@alsa-project.org
> Cc: dri-devel@lists.freedesktop.org
> Cc: kvm@vger.kernel.org
> Cc: linaro-mm-sig@lists.linaro.org
> Cc: linux-block@vger.kernel.org
> Cc: linux-input@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-rdma@vger.kernel.org
> Cc: linux-scsi@vger.kernel.org
> Cc: linux-usb@vger.kernel.org
> Cc: virtualization@lists.linux-foundation.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> arch/x86/kernel/cpu/resctrl/pseudo_lock.c | 4 ++--
> arch/x86/kernel/cpuid.c | 2 +-
> arch/x86/kernel/msr.c | 2 +-
> block/bsg.c | 2 +-
> drivers/block/aoe/aoechr.c | 2 +-
> drivers/char/mem.c | 2 +-
> drivers/char/misc.c | 4 ++--
> drivers/dma-buf/dma-heap.c | 2 +-
> drivers/gpu/drm/drm_sysfs.c | 2 +-
> drivers/infiniband/core/user_mad.c | 2 +-
> drivers/infiniband/core/uverbs_main.c | 2 +-
> drivers/infiniband/hw/hfi1/device.c | 4 ++--
> drivers/input/input.c | 2 +-
> drivers/media/dvb-core/dvbdev.c | 4 ++--
> drivers/media/pci/ddbridge/ddbridge-core.c | 4 ++--
> drivers/media/rc/rc-main.c | 2 +-
> drivers/misc/genwqe/card_base.c | 2 +-
> drivers/tty/tty_io.c | 2 +-
> drivers/usb/core/file.c | 2 +-
> drivers/vdpa/vdpa_user/vduse_dev.c | 2 +-
> drivers/vfio/vfio_main.c | 2 +-
> fs/pstore/pmsg.c | 2 +-
> include/linux/device/class.h | 2 +-
> sound/sound_core.c | 2 +-
> 24 files changed, 29 insertions(+), 29 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> index d961ae3ed96e..4e4231a58f38 100644
> --- a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> +++ b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> @@ -1560,9 +1560,9 @@ static const struct file_operations pseudo_lock_dev_fops = {
> .mmap = pseudo_lock_dev_mmap,
> };
>
> -static char *pseudo_lock_devnode(struct device *dev, umode_t *mode)
> +static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
> {
> - struct rdtgroup *rdtgrp;
> + const struct rdtgroup *rdtgrp;
>
> rdtgrp = dev_get_drvdata(dev);
> if (mode)
> diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
> index 6f7b8cc1bc9f..621ba9c0f17a 100644
> --- a/arch/x86/kernel/cpuid.c
> +++ b/arch/x86/kernel/cpuid.c
> @@ -139,7 +139,7 @@ static int cpuid_device_destroy(unsigned int cpu)
> return 0;
> }
>
> -static char *cpuid_devnode(struct device *dev, umode_t *mode)
> +static char *cpuid_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
> }
> diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
> index ed8ac6bcbafb..708751311786 100644
> --- a/arch/x86/kernel/msr.c
> +++ b/arch/x86/kernel/msr.c
> @@ -250,7 +250,7 @@ static int msr_device_destroy(unsigned int cpu)
> return 0;
> }
>
> -static char *msr_devnode(struct device *dev, umode_t *mode)
> +static char *msr_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
> }
> diff --git a/block/bsg.c b/block/bsg.c
> index 2ab1351eb082..08046bd9207d 100644
> --- a/block/bsg.c
> +++ b/block/bsg.c
> @@ -232,7 +232,7 @@ struct bsg_device *bsg_register_queue(struct request_queue *q,
> }
> EXPORT_SYMBOL_GPL(bsg_register_queue);
>
> -static char *bsg_devnode(struct device *dev, umode_t *mode)
> +static char *bsg_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
> }
> diff --git a/drivers/block/aoe/aoechr.c b/drivers/block/aoe/aoechr.c
> index 8eea2529da20..7a368c90467d 100644
> --- a/drivers/block/aoe/aoechr.c
> +++ b/drivers/block/aoe/aoechr.c
> @@ -273,7 +273,7 @@ static const struct file_operations aoe_fops = {
> .llseek = noop_llseek,
> };
>
> -static char *aoe_devnode(struct device *dev, umode_t *mode)
> +static char *aoe_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev));
> }
> diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> index 5611d127363e..83bf2a4dcb57 100644
> --- a/drivers/char/mem.c
> +++ b/drivers/char/mem.c
> @@ -746,7 +746,7 @@ static const struct file_operations memory_fops = {
> .llseek = noop_llseek,
> };
>
> -static char *mem_devnode(struct device *dev, umode_t *mode)
> +static char *mem_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode && devlist[MINOR(dev->devt)].mode)
> *mode = devlist[MINOR(dev->devt)].mode;
> diff --git a/drivers/char/misc.c b/drivers/char/misc.c
> index cba19bfdc44d..88c6995b9a3d 100644
> --- a/drivers/char/misc.c
> +++ b/drivers/char/misc.c
> @@ -254,9 +254,9 @@ void misc_deregister(struct miscdevice *misc)
> }
> EXPORT_SYMBOL(misc_deregister);
>
> -static char *misc_devnode(struct device *dev, umode_t *mode)
> +static char *misc_devnode(const struct device *dev, umode_t *mode)
> {
> - struct miscdevice *c = dev_get_drvdata(dev);
> + const struct miscdevice *c = dev_get_drvdata(dev);
>
> if (mode && c->mode)
> *mode = c->mode;
> diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
> index 8f5848aa144f..4d7150791315 100644
> --- a/drivers/dma-buf/dma-heap.c
> +++ b/drivers/dma-buf/dma-heap.c
> @@ -299,7 +299,7 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
> return err_ret;
> }
>
> -static char *dma_heap_devnode(struct device *dev, umode_t *mode)
> +static char *dma_heap_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "dma_heap/%s", dev_name(dev));
> }
> diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
> index 430e00b16eec..14bf156b3f1b 100644
> --- a/drivers/gpu/drm/drm_sysfs.c
> +++ b/drivers/gpu/drm/drm_sysfs.c
> @@ -90,7 +90,7 @@ static void drm_sysfs_acpi_register(void) { }
> static void drm_sysfs_acpi_unregister(void) { }
> #endif
>
> -static char *drm_devnode(struct device *dev, umode_t *mode)
> +static char *drm_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
> }
> diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
> index 98cb594cd9a6..f83954180a33 100644
> --- a/drivers/infiniband/core/user_mad.c
> +++ b/drivers/infiniband/core/user_mad.c
> @@ -1224,7 +1224,7 @@ static struct attribute *umad_class_dev_attrs[] = {
> };
> ATTRIBUTE_GROUPS(umad_class_dev);
>
> -static char *umad_devnode(struct device *dev, umode_t *mode)
> +static char *umad_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
> }
> diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
> index d54434088727..bdb179a09d77 100644
> --- a/drivers/infiniband/core/uverbs_main.c
> +++ b/drivers/infiniband/core/uverbs_main.c
> @@ -1237,7 +1237,7 @@ static void ib_uverbs_remove_one(struct ib_device *device, void *client_data)
> put_device(&uverbs_dev->dev);
> }
>
> -static char *uverbs_devnode(struct device *dev, umode_t *mode)
> +static char *uverbs_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode)
> *mode = 0666;
> diff --git a/drivers/infiniband/hw/hfi1/device.c b/drivers/infiniband/hw/hfi1/device.c
> index 8ceff7141baf..1f4496032170 100644
> --- a/drivers/infiniband/hw/hfi1/device.c
> +++ b/drivers/infiniband/hw/hfi1/device.c
> @@ -72,7 +72,7 @@ const char *class_name(void)
> return hfi1_class_name;
> }
>
> -static char *hfi1_devnode(struct device *dev, umode_t *mode)
> +static char *hfi1_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode)
> *mode = 0600;
> @@ -85,7 +85,7 @@ static const char *class_name_user(void)
> return hfi1_class_name_user;
> }
>
> -static char *hfi1_user_devnode(struct device *dev, umode_t *mode)
> +static char *hfi1_user_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode)
> *mode = 0666;
> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index ebb2b7f0f8ff..50597165dc54 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -1913,7 +1913,7 @@ static const struct device_type input_dev_type = {
> #endif
> };
>
> -static char *input_devnode(struct device *dev, umode_t *mode)
> +static char *input_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
> }
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 6ef18bab9648..e73f5240cc2c 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -1018,9 +1018,9 @@ static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> return 0;
> }
>
> -static char *dvb_devnode(struct device *dev, umode_t *mode)
> +static char *dvb_devnode(const struct device *dev, umode_t *mode)
> {
> - struct dvb_device *dvbdev = dev_get_drvdata(dev);
> + const struct dvb_device *dvbdev = dev_get_drvdata(dev);
>
> return kasprintf(GFP_KERNEL, "dvb/adapter%d/%s%d",
> dvbdev->adapter->num, dnames[dvbdev->type], dvbdev->id);
> diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c
> index fe833f39698a..ee8087f29b2c 100644
> --- a/drivers/media/pci/ddbridge/ddbridge-core.c
> +++ b/drivers/media/pci/ddbridge/ddbridge-core.c
> @@ -2716,9 +2716,9 @@ static const struct file_operations ddb_fops = {
> .release = ddb_release,
> };
>
> -static char *ddb_devnode(struct device *device, umode_t *mode)
> +static char *ddb_devnode(const struct device *device, umode_t *mode)
> {
> - struct ddb *dev = dev_get_drvdata(device);
> + const struct ddb *dev = dev_get_drvdata(device);
>
> return kasprintf(GFP_KERNEL, "ddbridge/card%d", dev->nr);
> }
> diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
> index eba0cd30e314..527d9324742b 100644
> --- a/drivers/media/rc/rc-main.c
> +++ b/drivers/media/rc/rc-main.c
> @@ -1017,7 +1017,7 @@ static void ir_close(struct input_dev *idev)
> }
>
> /* class for /sys/class/rc */
> -static char *rc_devnode(struct device *dev, umode_t *mode)
> +static char *rc_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "rc/%s", dev_name(dev));
> }
> diff --git a/drivers/misc/genwqe/card_base.c b/drivers/misc/genwqe/card_base.c
> index 693981891870..0f00687f72d4 100644
> --- a/drivers/misc/genwqe/card_base.c
> +++ b/drivers/misc/genwqe/card_base.c
> @@ -1349,7 +1349,7 @@ static struct pci_driver genwqe_driver = {
> * Default mode should be rw for everybody. Do not change default
> * device name.
> */
> -static char *genwqe_devnode(struct device *dev, umode_t *mode)
> +static char *genwqe_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode)
> *mode = 0666;
> diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
> index de06c3c2ff70..aad8171f6c21 100644
> --- a/drivers/tty/tty_io.c
> +++ b/drivers/tty/tty_io.c
> @@ -3494,7 +3494,7 @@ void tty_default_fops(struct file_operations *fops)
> *fops = tty_fops;
> }
>
> -static char *tty_devnode(struct device *dev, umode_t *mode)
> +static char *tty_devnode(const struct device *dev, umode_t *mode)
> {
> if (!mode)
> return NULL;
> diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c
> index 558890ada0e5..da7d88e069e6 100644
> --- a/drivers/usb/core/file.c
> +++ b/drivers/usb/core/file.c
> @@ -62,7 +62,7 @@ static struct usb_class {
> struct class *class;
> } *usb_class;
>
> -static char *usb_devnode(struct device *dev, umode_t *mode)
> +static char *usb_devnode(const struct device *dev, umode_t *mode)
> {
> struct usb_class_driver *drv;
>
> diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c
> index 35dceee3ed56..0dd3c1f291da 100644
> --- a/drivers/vdpa/vdpa_user/vduse_dev.c
> +++ b/drivers/vdpa/vdpa_user/vduse_dev.c
> @@ -1656,7 +1656,7 @@ static const struct file_operations vduse_ctrl_fops = {
> .llseek = noop_llseek,
> };
>
> -static char *vduse_devnode(struct device *dev, umode_t *mode)
> +static char *vduse_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "vduse/%s", dev_name(dev));
> }
> diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> index 6e8804fe0095..5bf4b3454918 100644
> --- a/drivers/vfio/vfio_main.c
> +++ b/drivers/vfio/vfio_main.c
> @@ -1812,7 +1812,7 @@ EXPORT_SYMBOL(vfio_set_irqs_validate_and_prepare);
> /*
> * Module/class support
> */
> -static char *vfio_devnode(struct device *dev, umode_t *mode)
> +static char *vfio_devnode(const struct device *dev, umode_t *mode)
> {
> return kasprintf(GFP_KERNEL, "vfio/%s", dev_name(dev));
> }
> diff --git a/fs/pstore/pmsg.c b/fs/pstore/pmsg.c
> index d8542ec2f38c..b31c9c72d90b 100644
> --- a/fs/pstore/pmsg.c
> +++ b/fs/pstore/pmsg.c
> @@ -46,7 +46,7 @@ static int pmsg_major;
> #undef pr_fmt
> #define pr_fmt(fmt) PMSG_NAME ": " fmt
>
> -static char *pmsg_devnode(struct device *dev, umode_t *mode)
> +static char *pmsg_devnode(const struct device *dev, umode_t *mode)
> {
> if (mode)
> *mode = 0220;
> diff --git a/include/linux/device/class.h b/include/linux/device/class.h
> index 94b1107258e5..42cc3fb44a84 100644
> --- a/include/linux/device/class.h
> +++ b/include/linux/device/class.h
> @@ -60,7 +60,7 @@ struct class {
> struct kobject *dev_kobj;
>
> int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
> - char *(*devnode)(struct device *dev, umode_t *mode);
> + char *(*devnode)(const struct device *dev, umode_t *mode);
>
> void (*class_release)(struct class *class);
> void (*dev_release)(struct device *dev);
> diff --git a/sound/sound_core.c b/sound/sound_core.c
> index 3332fe321737..3e7dd6fcb7cf 100644
> --- a/sound/sound_core.c
> +++ b/sound/sound_core.c
> @@ -30,7 +30,7 @@ MODULE_DESCRIPTION("Core sound module");
> MODULE_AUTHOR("Alan Cox");
> MODULE_LICENSE("GPL");
>
> -static char *sound_devnode(struct device *dev, umode_t *mode)
> +static char *sound_devnode(const struct device *dev, umode_t *mode)
> {
> if (MAJOR(dev->devt) == SOUND_MAJOR)
> return NULL;
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 2/5] driver core: make struct class.devnode() take a const *
2022-11-25 11:55 ` Mauro Carvalho Chehab
@ 2022-11-25 12:40 ` Sumit Semwal
0 siblings, 0 replies; 11+ messages in thread
From: Sumit Semwal @ 2022-11-25 12:40 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: Greg Kroah-Hartman, linux-kernel, Fenghua Yu, Reinette Chatre,
Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen, x86,
H. Peter Anvin, FUJITA Tomonori, Jens Axboe, Justin Sanders,
Arnd Bergmann, Benjamin Gaignard, Liam Mark, Laura Abbott,
Brian Starkey, John Stultz, Christian König,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Daniel Vetter, Jason Gunthorpe, Leon Romanovsky,
Dennis Dalessandro, Dmitry Torokhov, Sean Young, Frank Haverkamp,
Jiri Slaby, Michael S. Tsirkin, Jason Wang, Alex Williamson,
Cornelia Huck, Kees Cook, Anton Vorontsov, Colin Cross, Tony Luck,
Jaroslav Kysela, Takashi Iwai, Hans Verkuil, Christophe JAILLET,
Xie Yongji, Gautam Dawar, Dan Carpenter, Eli Cohen, Parav Pandit,
Maxime Coquelin, alsa-devel, dri-devel, kvm, linaro-mm-sig,
linux-block, linux-input, linux-media, linux-rdma, linux-scsi,
linux-usb, virtualization
Hello Greg,
On Fri, 25 Nov 2022 at 17:25, Mauro Carvalho Chehab <mchehab@kernel.org> wrote:
>
> Em Wed, 23 Nov 2022 13:25:20 +0100
> Greg Kroah-Hartman <gregkh@linuxfoundation.org> escreveu:
>
> > The devnode() in struct class 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.
>
> Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org>
> >
Please feel free to add my
Acked-by: Sumit Semwal <sumit.semwal@linaro.org>
for the dma-buf portion.
Best,
Sumit.
> > Cc: Fenghua Yu <fenghua.yu@intel.com>
> > Cc: Reinette Chatre <reinette.chatre@intel.com>
> > Cc: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Ingo Molnar <mingo@redhat.com>
> > Cc: Borislav Petkov <bp@alien8.de>
> > Cc: Dave Hansen <dave.hansen@linux.intel.com>
> > Cc: x86@kernel.org
> > Cc: "H. Peter Anvin" <hpa@zytor.com>
> > Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
> > Cc: Jens Axboe <axboe@kernel.dk>
> > Cc: Justin Sanders <justin@coraid.com>
> > Cc: Arnd Bergmann <arnd@arndb.de>
> > Cc: Sumit Semwal <sumit.semwal@linaro.org>
> > Cc: Benjamin Gaignard <benjamin.gaignard@collabora.com>
> > Cc: Liam Mark <lmark@codeaurora.org>
> > Cc: Laura Abbott <labbott@redhat.com>
> > Cc: Brian Starkey <Brian.Starkey@arm.com>
> > Cc: John Stultz <jstultz@google.com>
> > Cc: "Christian König" <christian.koenig@amd.com>
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Maxime Ripard <mripard@kernel.org>
> > Cc: Thomas Zimmermann <tzimmermann@suse.de>
> > Cc: David Airlie <airlied@gmail.com>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Cc: Jason Gunthorpe <jgg@ziepe.ca>
> > Cc: Leon Romanovsky <leon@kernel.org>
> > Cc: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
> > Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > Cc: Sean Young <sean@mess.org>
> > Cc: Frank Haverkamp <haver@linux.ibm.com>
> > Cc: Jiri Slaby <jirislaby@kernel.org>
> > Cc: "Michael S. Tsirkin" <mst@redhat.com>
> > Cc: Jason Wang <jasowang@redhat.com>
> > Cc: Alex Williamson <alex.williamson@redhat.com>
> > Cc: Cornelia Huck <cohuck@redhat.com>
> > Cc: Kees Cook <keescook@chromium.org>
> > Cc: Anton Vorontsov <anton@enomsg.org>
> > Cc: Colin Cross <ccross@android.com>
> > Cc: Tony Luck <tony.luck@intel.com>
> > Cc: Jaroslav Kysela <perex@perex.cz>
> > Cc: Takashi Iwai <tiwai@suse.com>
> > Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
> > Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> > Cc: Xie Yongji <xieyongji@bytedance.com>
> > Cc: Gautam Dawar <gautam.dawar@xilinx.com>
> > Cc: Dan Carpenter <error27@gmail.com>
> > Cc: Eli Cohen <elic@nvidia.com>
> > Cc: Parav Pandit <parav@nvidia.com>
> > Cc: Maxime Coquelin <maxime.coquelin@redhat.com>
> > Cc: alsa-devel@alsa-project.org
> > Cc: dri-devel@lists.freedesktop.org
> > Cc: kvm@vger.kernel.org
> > Cc: linaro-mm-sig@lists.linaro.org
> > Cc: linux-block@vger.kernel.org
> > Cc: linux-input@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > Cc: linux-media@vger.kernel.org
> > Cc: linux-rdma@vger.kernel.org
> > Cc: linux-scsi@vger.kernel.org
> > Cc: linux-usb@vger.kernel.org
> > Cc: virtualization@lists.linux-foundation.org
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > ---
> > arch/x86/kernel/cpu/resctrl/pseudo_lock.c | 4 ++--
> > arch/x86/kernel/cpuid.c | 2 +-
> > arch/x86/kernel/msr.c | 2 +-
> > block/bsg.c | 2 +-
> > drivers/block/aoe/aoechr.c | 2 +-
> > drivers/char/mem.c | 2 +-
> > drivers/char/misc.c | 4 ++--
> > drivers/dma-buf/dma-heap.c | 2 +-
> > drivers/gpu/drm/drm_sysfs.c | 2 +-
> > drivers/infiniband/core/user_mad.c | 2 +-
> > drivers/infiniband/core/uverbs_main.c | 2 +-
> > drivers/infiniband/hw/hfi1/device.c | 4 ++--
> > drivers/input/input.c | 2 +-
> > drivers/media/dvb-core/dvbdev.c | 4 ++--
> > drivers/media/pci/ddbridge/ddbridge-core.c | 4 ++--
> > drivers/media/rc/rc-main.c | 2 +-
> > drivers/misc/genwqe/card_base.c | 2 +-
> > drivers/tty/tty_io.c | 2 +-
> > drivers/usb/core/file.c | 2 +-
> > drivers/vdpa/vdpa_user/vduse_dev.c | 2 +-
> > drivers/vfio/vfio_main.c | 2 +-
> > fs/pstore/pmsg.c | 2 +-
> > include/linux/device/class.h | 2 +-
> > sound/sound_core.c | 2 +-
> > 24 files changed, 29 insertions(+), 29 deletions(-)
> >
> > diff --git a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> > index d961ae3ed96e..4e4231a58f38 100644
> > --- a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> > +++ b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
> > @@ -1560,9 +1560,9 @@ static const struct file_operations pseudo_lock_dev_fops = {
> > .mmap = pseudo_lock_dev_mmap,
> > };
> >
> > -static char *pseudo_lock_devnode(struct device *dev, umode_t *mode)
> > +static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode)
> > {
> > - struct rdtgroup *rdtgrp;
> > + const struct rdtgroup *rdtgrp;
> >
> > rdtgrp = dev_get_drvdata(dev);
> > if (mode)
> > diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c
> > index 6f7b8cc1bc9f..621ba9c0f17a 100644
> > --- a/arch/x86/kernel/cpuid.c
> > +++ b/arch/x86/kernel/cpuid.c
> > @@ -139,7 +139,7 @@ static int cpuid_device_destroy(unsigned int cpu)
> > return 0;
> > }
> >
> > -static char *cpuid_devnode(struct device *dev, umode_t *mode)
> > +static char *cpuid_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt));
> > }
> > diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c
> > index ed8ac6bcbafb..708751311786 100644
> > --- a/arch/x86/kernel/msr.c
> > +++ b/arch/x86/kernel/msr.c
> > @@ -250,7 +250,7 @@ static int msr_device_destroy(unsigned int cpu)
> > return 0;
> > }
> >
> > -static char *msr_devnode(struct device *dev, umode_t *mode)
> > +static char *msr_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt));
> > }
> > diff --git a/block/bsg.c b/block/bsg.c
> > index 2ab1351eb082..08046bd9207d 100644
> > --- a/block/bsg.c
> > +++ b/block/bsg.c
> > @@ -232,7 +232,7 @@ struct bsg_device *bsg_register_queue(struct request_queue *q,
> > }
> > EXPORT_SYMBOL_GPL(bsg_register_queue);
> >
> > -static char *bsg_devnode(struct device *dev, umode_t *mode)
> > +static char *bsg_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev));
> > }
> > diff --git a/drivers/block/aoe/aoechr.c b/drivers/block/aoe/aoechr.c
> > index 8eea2529da20..7a368c90467d 100644
> > --- a/drivers/block/aoe/aoechr.c
> > +++ b/drivers/block/aoe/aoechr.c
> > @@ -273,7 +273,7 @@ static const struct file_operations aoe_fops = {
> > .llseek = noop_llseek,
> > };
> >
> > -static char *aoe_devnode(struct device *dev, umode_t *mode)
> > +static char *aoe_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev));
> > }
> > diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> > index 5611d127363e..83bf2a4dcb57 100644
> > --- a/drivers/char/mem.c
> > +++ b/drivers/char/mem.c
> > @@ -746,7 +746,7 @@ static const struct file_operations memory_fops = {
> > .llseek = noop_llseek,
> > };
> >
> > -static char *mem_devnode(struct device *dev, umode_t *mode)
> > +static char *mem_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode && devlist[MINOR(dev->devt)].mode)
> > *mode = devlist[MINOR(dev->devt)].mode;
> > diff --git a/drivers/char/misc.c b/drivers/char/misc.c
> > index cba19bfdc44d..88c6995b9a3d 100644
> > --- a/drivers/char/misc.c
> > +++ b/drivers/char/misc.c
> > @@ -254,9 +254,9 @@ void misc_deregister(struct miscdevice *misc)
> > }
> > EXPORT_SYMBOL(misc_deregister);
> >
> > -static char *misc_devnode(struct device *dev, umode_t *mode)
> > +static char *misc_devnode(const struct device *dev, umode_t *mode)
> > {
> > - struct miscdevice *c = dev_get_drvdata(dev);
> > + const struct miscdevice *c = dev_get_drvdata(dev);
> >
> > if (mode && c->mode)
> > *mode = c->mode;
> > diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
> > index 8f5848aa144f..4d7150791315 100644
> > --- a/drivers/dma-buf/dma-heap.c
> > +++ b/drivers/dma-buf/dma-heap.c
> > @@ -299,7 +299,7 @@ struct dma_heap *dma_heap_add(const struct dma_heap_export_info *exp_info)
> > return err_ret;
> > }
> >
> > -static char *dma_heap_devnode(struct device *dev, umode_t *mode)
> > +static char *dma_heap_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "dma_heap/%s", dev_name(dev));
> > }
> > diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
> > index 430e00b16eec..14bf156b3f1b 100644
> > --- a/drivers/gpu/drm/drm_sysfs.c
> > +++ b/drivers/gpu/drm/drm_sysfs.c
> > @@ -90,7 +90,7 @@ static void drm_sysfs_acpi_register(void) { }
> > static void drm_sysfs_acpi_unregister(void) { }
> > #endif
> >
> > -static char *drm_devnode(struct device *dev, umode_t *mode)
> > +static char *drm_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev));
> > }
> > diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
> > index 98cb594cd9a6..f83954180a33 100644
> > --- a/drivers/infiniband/core/user_mad.c
> > +++ b/drivers/infiniband/core/user_mad.c
> > @@ -1224,7 +1224,7 @@ static struct attribute *umad_class_dev_attrs[] = {
> > };
> > ATTRIBUTE_GROUPS(umad_class_dev);
> >
> > -static char *umad_devnode(struct device *dev, umode_t *mode)
> > +static char *umad_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
> > }
> > diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
> > index d54434088727..bdb179a09d77 100644
> > --- a/drivers/infiniband/core/uverbs_main.c
> > +++ b/drivers/infiniband/core/uverbs_main.c
> > @@ -1237,7 +1237,7 @@ static void ib_uverbs_remove_one(struct ib_device *device, void *client_data)
> > put_device(&uverbs_dev->dev);
> > }
> >
> > -static char *uverbs_devnode(struct device *dev, umode_t *mode)
> > +static char *uverbs_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode)
> > *mode = 0666;
> > diff --git a/drivers/infiniband/hw/hfi1/device.c b/drivers/infiniband/hw/hfi1/device.c
> > index 8ceff7141baf..1f4496032170 100644
> > --- a/drivers/infiniband/hw/hfi1/device.c
> > +++ b/drivers/infiniband/hw/hfi1/device.c
> > @@ -72,7 +72,7 @@ const char *class_name(void)
> > return hfi1_class_name;
> > }
> >
> > -static char *hfi1_devnode(struct device *dev, umode_t *mode)
> > +static char *hfi1_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode)
> > *mode = 0600;
> > @@ -85,7 +85,7 @@ static const char *class_name_user(void)
> > return hfi1_class_name_user;
> > }
> >
> > -static char *hfi1_user_devnode(struct device *dev, umode_t *mode)
> > +static char *hfi1_user_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode)
> > *mode = 0666;
> > diff --git a/drivers/input/input.c b/drivers/input/input.c
> > index ebb2b7f0f8ff..50597165dc54 100644
> > --- a/drivers/input/input.c
> > +++ b/drivers/input/input.c
> > @@ -1913,7 +1913,7 @@ static const struct device_type input_dev_type = {
> > #endif
> > };
> >
> > -static char *input_devnode(struct device *dev, umode_t *mode)
> > +static char *input_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev));
> > }
> > diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> > index 6ef18bab9648..e73f5240cc2c 100644
> > --- a/drivers/media/dvb-core/dvbdev.c
> > +++ b/drivers/media/dvb-core/dvbdev.c
> > @@ -1018,9 +1018,9 @@ static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> > return 0;
> > }
> >
> > -static char *dvb_devnode(struct device *dev, umode_t *mode)
> > +static char *dvb_devnode(const struct device *dev, umode_t *mode)
> > {
> > - struct dvb_device *dvbdev = dev_get_drvdata(dev);
> > + const struct dvb_device *dvbdev = dev_get_drvdata(dev);
> >
> > return kasprintf(GFP_KERNEL, "dvb/adapter%d/%s%d",
> > dvbdev->adapter->num, dnames[dvbdev->type], dvbdev->id);
> > diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c
> > index fe833f39698a..ee8087f29b2c 100644
> > --- a/drivers/media/pci/ddbridge/ddbridge-core.c
> > +++ b/drivers/media/pci/ddbridge/ddbridge-core.c
> > @@ -2716,9 +2716,9 @@ static const struct file_operations ddb_fops = {
> > .release = ddb_release,
> > };
> >
> > -static char *ddb_devnode(struct device *device, umode_t *mode)
> > +static char *ddb_devnode(const struct device *device, umode_t *mode)
> > {
> > - struct ddb *dev = dev_get_drvdata(device);
> > + const struct ddb *dev = dev_get_drvdata(device);
> >
> > return kasprintf(GFP_KERNEL, "ddbridge/card%d", dev->nr);
> > }
> > diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
> > index eba0cd30e314..527d9324742b 100644
> > --- a/drivers/media/rc/rc-main.c
> > +++ b/drivers/media/rc/rc-main.c
> > @@ -1017,7 +1017,7 @@ static void ir_close(struct input_dev *idev)
> > }
> >
> > /* class for /sys/class/rc */
> > -static char *rc_devnode(struct device *dev, umode_t *mode)
> > +static char *rc_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "rc/%s", dev_name(dev));
> > }
> > diff --git a/drivers/misc/genwqe/card_base.c b/drivers/misc/genwqe/card_base.c
> > index 693981891870..0f00687f72d4 100644
> > --- a/drivers/misc/genwqe/card_base.c
> > +++ b/drivers/misc/genwqe/card_base.c
> > @@ -1349,7 +1349,7 @@ static struct pci_driver genwqe_driver = {
> > * Default mode should be rw for everybody. Do not change default
> > * device name.
> > */
> > -static char *genwqe_devnode(struct device *dev, umode_t *mode)
> > +static char *genwqe_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode)
> > *mode = 0666;
> > diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
> > index de06c3c2ff70..aad8171f6c21 100644
> > --- a/drivers/tty/tty_io.c
> > +++ b/drivers/tty/tty_io.c
> > @@ -3494,7 +3494,7 @@ void tty_default_fops(struct file_operations *fops)
> > *fops = tty_fops;
> > }
> >
> > -static char *tty_devnode(struct device *dev, umode_t *mode)
> > +static char *tty_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (!mode)
> > return NULL;
> > diff --git a/drivers/usb/core/file.c b/drivers/usb/core/file.c
> > index 558890ada0e5..da7d88e069e6 100644
> > --- a/drivers/usb/core/file.c
> > +++ b/drivers/usb/core/file.c
> > @@ -62,7 +62,7 @@ static struct usb_class {
> > struct class *class;
> > } *usb_class;
> >
> > -static char *usb_devnode(struct device *dev, umode_t *mode)
> > +static char *usb_devnode(const struct device *dev, umode_t *mode)
> > {
> > struct usb_class_driver *drv;
> >
> > diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c b/drivers/vdpa/vdpa_user/vduse_dev.c
> > index 35dceee3ed56..0dd3c1f291da 100644
> > --- a/drivers/vdpa/vdpa_user/vduse_dev.c
> > +++ b/drivers/vdpa/vdpa_user/vduse_dev.c
> > @@ -1656,7 +1656,7 @@ static const struct file_operations vduse_ctrl_fops = {
> > .llseek = noop_llseek,
> > };
> >
> > -static char *vduse_devnode(struct device *dev, umode_t *mode)
> > +static char *vduse_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "vduse/%s", dev_name(dev));
> > }
> > diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
> > index 6e8804fe0095..5bf4b3454918 100644
> > --- a/drivers/vfio/vfio_main.c
> > +++ b/drivers/vfio/vfio_main.c
> > @@ -1812,7 +1812,7 @@ EXPORT_SYMBOL(vfio_set_irqs_validate_and_prepare);
> > /*
> > * Module/class support
> > */
> > -static char *vfio_devnode(struct device *dev, umode_t *mode)
> > +static char *vfio_devnode(const struct device *dev, umode_t *mode)
> > {
> > return kasprintf(GFP_KERNEL, "vfio/%s", dev_name(dev));
> > }
> > diff --git a/fs/pstore/pmsg.c b/fs/pstore/pmsg.c
> > index d8542ec2f38c..b31c9c72d90b 100644
> > --- a/fs/pstore/pmsg.c
> > +++ b/fs/pstore/pmsg.c
> > @@ -46,7 +46,7 @@ static int pmsg_major;
> > #undef pr_fmt
> > #define pr_fmt(fmt) PMSG_NAME ": " fmt
> >
> > -static char *pmsg_devnode(struct device *dev, umode_t *mode)
> > +static char *pmsg_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (mode)
> > *mode = 0220;
> > diff --git a/include/linux/device/class.h b/include/linux/device/class.h
> > index 94b1107258e5..42cc3fb44a84 100644
> > --- a/include/linux/device/class.h
> > +++ b/include/linux/device/class.h
> > @@ -60,7 +60,7 @@ struct class {
> > struct kobject *dev_kobj;
> >
> > int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
> > - char *(*devnode)(struct device *dev, umode_t *mode);
> > + char *(*devnode)(const struct device *dev, umode_t *mode);
> >
> > void (*class_release)(struct class *class);
> > void (*dev_release)(struct device *dev);
> > diff --git a/sound/sound_core.c b/sound/sound_core.c
> > index 3332fe321737..3e7dd6fcb7cf 100644
> > --- a/sound/sound_core.c
> > +++ b/sound/sound_core.c
> > @@ -30,7 +30,7 @@ MODULE_DESCRIPTION("Core sound module");
> > MODULE_AUTHOR("Alan Cox");
> > MODULE_LICENSE("GPL");
> >
> > -static char *sound_devnode(struct device *dev, umode_t *mode)
> > +static char *sound_devnode(const struct device *dev, umode_t *mode)
> > {
> > if (MAJOR(dev->devt) == SOUND_MAJOR)
> > return NULL;
--
Thanks and regards,
Sumit Semwal (he / him)
Tech Lead - LCG, Vertical Technologies
Linaro.org │ Open source software for ARM SoCs
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-23 12:25 [PATCH 1/5] driver core: make struct class.dev_uevent() take a const * Greg Kroah-Hartman
2022-11-23 12:25 ` [PATCH 2/5] driver core: make struct class.devnode() " Greg Kroah-Hartman
@ 2022-11-23 12:38 ` Rafael J. Wysocki
2022-11-24 15:03 ` Sebastian Reichel
` (2 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Rafael J. Wysocki @ 2022-11-23 12:38 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
Sebastian Reichel, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Johannes Berg, Wolfram Sang, Raed Salem,
Chen Zhongjin, Tetsuo Handa, Avihai Horon,
Matthew Wilcox (Oracle), Alan Stern, Colin Ian King,
Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
On Wed, Nov 23, 2022 at 1:25 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> The dev_uevent() in struct class 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: Jens Axboe <axboe@kernel.dk>
> Cc: Luis Chamberlain <mcgrof@kernel.org>
> Cc: Russ Weight <russell.h.weight@intel.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Jean Delvare <jdelvare@suse.com>
> Cc: Johan Hovold <johan@kernel.org>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Karsten Keil <isdn@linux-pingi.de>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Keith Busch <kbusch@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Sagi Grimberg <sagi@grimberg.me>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Cc: Sebastian Reichel <sre@kernel.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Cc: Raed Salem <raeds@nvidia.com>
> Cc: Chen Zhongjin <chenzhongjin@huawei.com>
> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Cc: Avihai Horon <avihaih@nvidia.com>
> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Cc: Colin Ian King <colin.i.king@gmail.com>
> Cc: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Jakob Koschel <jakobkoschel@gmail.com>
> Cc: Antoine Tenart <atenart@kernel.org>
> Cc: Frederic Weisbecker <frederic@kernel.org>
> Cc: Wang Yufen <wangyufen@huawei.com>
> Cc: linux-block@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-nvme@lists.infradead.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-rdma@vger.kernel.org
> Cc: linux-usb@vger.kernel.org
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
> ---
> block/genhd.c | 4 ++--
> drivers/base/firmware_loader/sysfs.c | 6 +++---
> drivers/base/firmware_loader/sysfs.h | 2 +-
> drivers/firmware/dmi-id.c | 2 +-
> drivers/gnss/core.c | 6 +++---
> drivers/infiniband/core/device.c | 2 +-
> drivers/isdn/mISDN/core.c | 4 ++--
> drivers/media/dvb-core/dvbdev.c | 4 ++--
> drivers/nvme/host/core.c | 4 ++--
> drivers/pcmcia/cs.c | 4 ++--
> drivers/power/supply/power_supply.h | 2 +-
> drivers/power/supply/power_supply_sysfs.c | 8 ++++----
> drivers/usb/gadget/udc/core.c | 4 ++--
> include/linux/device/class.h | 2 +-
> include/linux/mISDNif.h | 2 +-
> net/atm/atm_sysfs.c | 4 ++--
> net/core/net-sysfs.c | 4 ++--
> net/rfkill/core.c | 2 +-
> 18 files changed, 33 insertions(+), 33 deletions(-)
>
> diff --git a/block/genhd.c b/block/genhd.c
> index 0f9769db2de8..3f1124713442 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -1181,9 +1181,9 @@ static void disk_release(struct device *dev)
> iput(disk->part0->bd_inode); /* frees the disk */
> }
>
> -static int block_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int block_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gendisk *disk = dev_to_disk(dev);
> + const struct gendisk *disk = dev_to_disk(dev);
>
> return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq);
> }
> diff --git a/drivers/base/firmware_loader/sysfs.c b/drivers/base/firmware_loader/sysfs.c
> index 5b66b3d1fa16..56911d75b90a 100644
> --- a/drivers/base/firmware_loader/sysfs.c
> +++ b/drivers/base/firmware_loader/sysfs.c
> @@ -64,7 +64,7 @@ static struct attribute *firmware_class_attrs[] = {
> };
> ATTRIBUTE_GROUPS(firmware_class);
>
> -static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> +static int do_firmware_uevent(const struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name))
> return -ENOMEM;
> @@ -76,9 +76,9 @@ static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env
> return 0;
> }
>
> -static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int firmware_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> + const struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> int err = 0;
>
> mutex_lock(&fw_lock);
> diff --git a/drivers/base/firmware_loader/sysfs.h b/drivers/base/firmware_loader/sysfs.h
> index df1d5add698f..fd0b4ad9bdbb 100644
> --- a/drivers/base/firmware_loader/sysfs.h
> +++ b/drivers/base/firmware_loader/sysfs.h
> @@ -81,7 +81,7 @@ struct fw_sysfs {
> void *fw_upload_priv;
> };
>
> -static inline struct fw_sysfs *to_fw_sysfs(struct device *dev)
> +static inline struct fw_sysfs *to_fw_sysfs(const struct device *dev)
> {
> return container_of(dev, struct fw_sysfs, dev);
> }
> diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
> index 940ddf916202..5f3a3e913d28 100644
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,7 +155,7 @@ static const struct attribute_group* sys_dmi_attribute_groups[] = {
> NULL
> };
>
> -static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dmi_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> ssize_t len;
>
> diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
> index 1e82b7967570..77a4b280c552 100644
> --- a/drivers/gnss/core.c
> +++ b/drivers/gnss/core.c
> @@ -337,7 +337,7 @@ static const char * const gnss_type_names[GNSS_TYPE_COUNT] = {
> [GNSS_TYPE_MTK] = "MTK",
> };
>
> -static const char *gnss_type_name(struct gnss_device *gdev)
> +static const char *gnss_type_name(const struct gnss_device *gdev)
> {
> const char *name = NULL;
>
> @@ -365,9 +365,9 @@ static struct attribute *gnss_attrs[] = {
> };
> ATTRIBUTE_GROUPS(gnss);
>
> -static int gnss_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int gnss_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gnss_device *gdev = to_gnss_device(dev);
> + const struct gnss_device *gdev = to_gnss_device(dev);
> int ret;
>
> ret = add_uevent_var(env, "GNSS_TYPE=%s", gnss_type_name(gdev));
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index fa65c5d3d395..4186dbf9377f 100644
> --- a/drivers/infiniband/core/device.c
> +++ b/drivers/infiniband/core/device.c
> @@ -511,7 +511,7 @@ static void ib_device_release(struct device *device)
> kfree_rcu(dev, rcu_head);
> }
>
> -static int ib_device_uevent(struct device *device,
> +static int ib_device_uevent(const struct device *device,
> struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "NAME=%s", dev_name(device)))
> diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
> index 90ee56d07a6e..9120be590325 100644
> --- a/drivers/isdn/mISDN/core.c
> +++ b/drivers/isdn/mISDN/core.c
> @@ -139,9 +139,9 @@ static struct attribute *mISDN_attrs[] = {
> };
> ATTRIBUTE_GROUPS(mISDN);
>
> -static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int mISDN_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct mISDNdevice *mdev = dev_to_mISDN(dev);
> + const struct mISDNdevice *mdev = dev_to_mISDN(dev);
>
> if (!mdev)
> return 0;
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 675d877a67b2..6ef18bab9648 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -1008,9 +1008,9 @@ void dvb_module_release(struct i2c_client *client)
> EXPORT_SYMBOL_GPL(dvb_module_release);
> #endif
>
> -static int dvb_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct dvb_device *dvbdev = dev_get_drvdata(dev);
> + const struct dvb_device *dvbdev = dev_get_drvdata(dev);
>
> add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
> add_uevent_var(env, "DVB_DEVICE_TYPE=%s", dnames[dvbdev->type]);
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index da55ce45ac70..b4778b970dd4 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -4580,9 +4580,9 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)
> }
> EXPORT_SYMBOL_GPL(nvme_remove_namespaces);
>
> -static int nvme_class_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int nvme_class_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct nvme_ctrl *ctrl =
> + const struct nvme_ctrl *ctrl =
> container_of(dev, struct nvme_ctrl, ctrl_device);
> struct nvmf_ctrl_options *opts = ctrl->opts;
> int ret;
> diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
> index f70197154a36..e3224e49c43f 100644
> --- a/drivers/pcmcia/cs.c
> +++ b/drivers/pcmcia/cs.c
> @@ -810,10 +810,10 @@ int pcmcia_reset_card(struct pcmcia_socket *skt)
> EXPORT_SYMBOL(pcmcia_reset_card);
>
>
> -static int pcmcia_socket_uevent(struct device *dev,
> +static int pcmcia_socket_uevent(const struct device *dev,
> struct kobj_uevent_env *env)
> {
> - struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
> + const struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
>
> if (add_uevent_var(env, "SOCKET_NO=%u", s->sock))
> return -ENOMEM;
> diff --git a/drivers/power/supply/power_supply.h b/drivers/power/supply/power_supply.h
> index c310d4f36c10..645eee4d6b6a 100644
> --- a/drivers/power/supply/power_supply.h
> +++ b/drivers/power/supply/power_supply.h
> @@ -16,7 +16,7 @@ struct power_supply;
> #ifdef CONFIG_SYSFS
>
> extern void power_supply_init_attrs(struct device_type *dev_type);
> -extern int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env);
> +extern int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env);
>
> #else
>
> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
> index 5369abaceb5c..6ca7d3985a40 100644
> --- a/drivers/power/supply/power_supply_sysfs.c
> +++ b/drivers/power/supply/power_supply_sysfs.c
> @@ -427,7 +427,7 @@ void power_supply_init_attrs(struct device_type *dev_type)
> }
> }
>
> -static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> +static int add_prop_uevent(const struct device *dev, struct kobj_uevent_env *env,
> enum power_supply_property prop, char *prop_buf)
> {
> int ret = 0;
> @@ -438,7 +438,7 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr = &power_supply_attrs[prop];
> dev_attr = &pwr_attr->dev_attr;
>
> - ret = power_supply_show_property(dev, dev_attr, prop_buf);
> + ret = power_supply_show_property((struct device *)dev, dev_attr, prop_buf);
> if (ret == -ENODEV || ret == -ENODATA) {
> /*
> * When a battery is absent, we expect -ENODEV. Don't abort;
> @@ -458,9 +458,9 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr->prop_name, prop_buf);
> }
>
> -int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env)
> +int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct power_supply *psy = dev_get_drvdata(dev);
> + const struct power_supply *psy = dev_get_drvdata(dev);
> int ret = 0, j;
> char *prop_buf;
>
> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
> index c63c0c2cf649..b5994a0604f6 100644
> --- a/drivers/usb/gadget/udc/core.c
> +++ b/drivers/usb/gadget/udc/core.c
> @@ -1723,9 +1723,9 @@ static const struct attribute_group *usb_udc_attr_groups[] = {
> NULL,
> };
>
> -static int usb_udc_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int usb_udc_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> + const struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> int ret;
>
> ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name);
> diff --git a/include/linux/device/class.h b/include/linux/device/class.h
> index 20103e0b03c3..94b1107258e5 100644
> --- a/include/linux/device/class.h
> +++ b/include/linux/device/class.h
> @@ -59,7 +59,7 @@ struct class {
> const struct attribute_group **dev_groups;
> struct kobject *dev_kobj;
>
> - int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
> + int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
> char *(*devnode)(struct device *dev, umode_t *mode);
>
> void (*class_release)(struct class *class);
> diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> index 7dd1f01ec4f9..7aab4a769736 100644
> --- a/include/linux/mISDNif.h
> +++ b/include/linux/mISDNif.h
> @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> void *);
> extern void mISDN_unregister_clock(struct mISDNclock *);
>
> -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> {
> if (dev)
> return dev_get_drvdata(dev);
> diff --git a/net/atm/atm_sysfs.c b/net/atm/atm_sysfs.c
> index 0fdbdfd19474..466353b3dde4 100644
> --- a/net/atm/atm_sysfs.c
> +++ b/net/atm/atm_sysfs.c
> @@ -108,9 +108,9 @@ static struct device_attribute *atm_attrs[] = {
> };
>
>
> -static int atm_uevent(struct device *cdev, struct kobj_uevent_env *env)
> +static int atm_uevent(const struct device *cdev, struct kobj_uevent_env *env)
> {
> - struct atm_dev *adev;
> + const struct atm_dev *adev;
>
> if (!cdev)
> return -ENODEV;
> diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
> index 9cfc80b8ed25..03a61d1dffbd 100644
> --- a/net/core/net-sysfs.c
> +++ b/net/core/net-sysfs.c
> @@ -1873,9 +1873,9 @@ const struct kobj_ns_type_operations net_ns_type_operations = {
> };
> EXPORT_SYMBOL_GPL(net_ns_type_operations);
>
> -static int netdev_uevent(struct device *d, struct kobj_uevent_env *env)
> +static int netdev_uevent(const struct device *d, struct kobj_uevent_env *env)
> {
> - struct net_device *dev = to_net_dev(d);
> + const struct net_device *dev = to_net_dev(d);
> int retval;
>
> /* pass interface to uevent. */
> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
> index dac4fdc7488a..b390ff245d5e 100644
> --- a/net/rfkill/core.c
> +++ b/net/rfkill/core.c
> @@ -832,7 +832,7 @@ static void rfkill_release(struct device *dev)
> kfree(rfkill);
> }
>
> -static int rfkill_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int rfkill_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> struct rfkill *rfkill = to_rfkill(dev);
> unsigned long flags;
> --
> 2.38.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-23 12:25 [PATCH 1/5] driver core: make struct class.dev_uevent() take a const * Greg Kroah-Hartman
2022-11-23 12:25 ` [PATCH 2/5] driver core: make struct class.devnode() " Greg Kroah-Hartman
2022-11-23 12:38 ` [PATCH 1/5] driver core: make struct class.dev_uevent() " Rafael J. Wysocki
@ 2022-11-24 15:03 ` Sebastian Reichel
2022-11-25 11:54 ` Mauro Carvalho Chehab
2022-11-25 23:51 ` Bart Van Assche
4 siblings, 0 replies; 11+ messages in thread
From: Sebastian Reichel @ 2022-11-24 15:03 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Johannes Berg, Wolfram Sang, Raed Salem, Chen Zhongjin,
Tetsuo Handa, Avihai Horon, Matthew Wilcox (Oracle), Alan Stern,
Colin Ian King, Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
[-- Attachment #1: Type: text/plain, Size: 15799 bytes --]
Hi,
On Wed, Nov 23, 2022 at 01:25:19PM +0100, Greg Kroah-Hartman wrote:
> The dev_uevent() in struct class 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: Jens Axboe <axboe@kernel.dk>
> Cc: Luis Chamberlain <mcgrof@kernel.org>
> Cc: Russ Weight <russell.h.weight@intel.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Jean Delvare <jdelvare@suse.com>
> Cc: Johan Hovold <johan@kernel.org>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Karsten Keil <isdn@linux-pingi.de>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Keith Busch <kbusch@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Sagi Grimberg <sagi@grimberg.me>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Cc: Sebastian Reichel <sre@kernel.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Cc: Raed Salem <raeds@nvidia.com>
> Cc: Chen Zhongjin <chenzhongjin@huawei.com>
> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Cc: Avihai Horon <avihaih@nvidia.com>
> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Cc: Colin Ian King <colin.i.king@gmail.com>
> Cc: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Jakob Koschel <jakobkoschel@gmail.com>
> Cc: Antoine Tenart <atenart@kernel.org>
> Cc: Frederic Weisbecker <frederic@kernel.org>
> Cc: Wang Yufen <wangyufen@huawei.com>
> Cc: linux-block@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-nvme@lists.infradead.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-rdma@vger.kernel.org
> Cc: linux-usb@vger.kernel.org
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
Acked-by: Sebastian Reichel <sre@kernel.org>
-- Sebastian
> block/genhd.c | 4 ++--
> drivers/base/firmware_loader/sysfs.c | 6 +++---
> drivers/base/firmware_loader/sysfs.h | 2 +-
> drivers/firmware/dmi-id.c | 2 +-
> drivers/gnss/core.c | 6 +++---
> drivers/infiniband/core/device.c | 2 +-
> drivers/isdn/mISDN/core.c | 4 ++--
> drivers/media/dvb-core/dvbdev.c | 4 ++--
> drivers/nvme/host/core.c | 4 ++--
> drivers/pcmcia/cs.c | 4 ++--
> drivers/power/supply/power_supply.h | 2 +-
> drivers/power/supply/power_supply_sysfs.c | 8 ++++----
> drivers/usb/gadget/udc/core.c | 4 ++--
> include/linux/device/class.h | 2 +-
> include/linux/mISDNif.h | 2 +-
> net/atm/atm_sysfs.c | 4 ++--
> net/core/net-sysfs.c | 4 ++--
> net/rfkill/core.c | 2 +-
> 18 files changed, 33 insertions(+), 33 deletions(-)
>
> diff --git a/block/genhd.c b/block/genhd.c
> index 0f9769db2de8..3f1124713442 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -1181,9 +1181,9 @@ static void disk_release(struct device *dev)
> iput(disk->part0->bd_inode); /* frees the disk */
> }
>
> -static int block_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int block_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gendisk *disk = dev_to_disk(dev);
> + const struct gendisk *disk = dev_to_disk(dev);
>
> return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq);
> }
> diff --git a/drivers/base/firmware_loader/sysfs.c b/drivers/base/firmware_loader/sysfs.c
> index 5b66b3d1fa16..56911d75b90a 100644
> --- a/drivers/base/firmware_loader/sysfs.c
> +++ b/drivers/base/firmware_loader/sysfs.c
> @@ -64,7 +64,7 @@ static struct attribute *firmware_class_attrs[] = {
> };
> ATTRIBUTE_GROUPS(firmware_class);
>
> -static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> +static int do_firmware_uevent(const struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name))
> return -ENOMEM;
> @@ -76,9 +76,9 @@ static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env
> return 0;
> }
>
> -static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int firmware_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> + const struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> int err = 0;
>
> mutex_lock(&fw_lock);
> diff --git a/drivers/base/firmware_loader/sysfs.h b/drivers/base/firmware_loader/sysfs.h
> index df1d5add698f..fd0b4ad9bdbb 100644
> --- a/drivers/base/firmware_loader/sysfs.h
> +++ b/drivers/base/firmware_loader/sysfs.h
> @@ -81,7 +81,7 @@ struct fw_sysfs {
> void *fw_upload_priv;
> };
>
> -static inline struct fw_sysfs *to_fw_sysfs(struct device *dev)
> +static inline struct fw_sysfs *to_fw_sysfs(const struct device *dev)
> {
> return container_of(dev, struct fw_sysfs, dev);
> }
> diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
> index 940ddf916202..5f3a3e913d28 100644
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,7 +155,7 @@ static const struct attribute_group* sys_dmi_attribute_groups[] = {
> NULL
> };
>
> -static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dmi_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> ssize_t len;
>
> diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
> index 1e82b7967570..77a4b280c552 100644
> --- a/drivers/gnss/core.c
> +++ b/drivers/gnss/core.c
> @@ -337,7 +337,7 @@ static const char * const gnss_type_names[GNSS_TYPE_COUNT] = {
> [GNSS_TYPE_MTK] = "MTK",
> };
>
> -static const char *gnss_type_name(struct gnss_device *gdev)
> +static const char *gnss_type_name(const struct gnss_device *gdev)
> {
> const char *name = NULL;
>
> @@ -365,9 +365,9 @@ static struct attribute *gnss_attrs[] = {
> };
> ATTRIBUTE_GROUPS(gnss);
>
> -static int gnss_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int gnss_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gnss_device *gdev = to_gnss_device(dev);
> + const struct gnss_device *gdev = to_gnss_device(dev);
> int ret;
>
> ret = add_uevent_var(env, "GNSS_TYPE=%s", gnss_type_name(gdev));
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index fa65c5d3d395..4186dbf9377f 100644
> --- a/drivers/infiniband/core/device.c
> +++ b/drivers/infiniband/core/device.c
> @@ -511,7 +511,7 @@ static void ib_device_release(struct device *device)
> kfree_rcu(dev, rcu_head);
> }
>
> -static int ib_device_uevent(struct device *device,
> +static int ib_device_uevent(const struct device *device,
> struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "NAME=%s", dev_name(device)))
> diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
> index 90ee56d07a6e..9120be590325 100644
> --- a/drivers/isdn/mISDN/core.c
> +++ b/drivers/isdn/mISDN/core.c
> @@ -139,9 +139,9 @@ static struct attribute *mISDN_attrs[] = {
> };
> ATTRIBUTE_GROUPS(mISDN);
>
> -static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int mISDN_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct mISDNdevice *mdev = dev_to_mISDN(dev);
> + const struct mISDNdevice *mdev = dev_to_mISDN(dev);
>
> if (!mdev)
> return 0;
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 675d877a67b2..6ef18bab9648 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -1008,9 +1008,9 @@ void dvb_module_release(struct i2c_client *client)
> EXPORT_SYMBOL_GPL(dvb_module_release);
> #endif
>
> -static int dvb_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct dvb_device *dvbdev = dev_get_drvdata(dev);
> + const struct dvb_device *dvbdev = dev_get_drvdata(dev);
>
> add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
> add_uevent_var(env, "DVB_DEVICE_TYPE=%s", dnames[dvbdev->type]);
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index da55ce45ac70..b4778b970dd4 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -4580,9 +4580,9 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)
> }
> EXPORT_SYMBOL_GPL(nvme_remove_namespaces);
>
> -static int nvme_class_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int nvme_class_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct nvme_ctrl *ctrl =
> + const struct nvme_ctrl *ctrl =
> container_of(dev, struct nvme_ctrl, ctrl_device);
> struct nvmf_ctrl_options *opts = ctrl->opts;
> int ret;
> diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
> index f70197154a36..e3224e49c43f 100644
> --- a/drivers/pcmcia/cs.c
> +++ b/drivers/pcmcia/cs.c
> @@ -810,10 +810,10 @@ int pcmcia_reset_card(struct pcmcia_socket *skt)
> EXPORT_SYMBOL(pcmcia_reset_card);
>
>
> -static int pcmcia_socket_uevent(struct device *dev,
> +static int pcmcia_socket_uevent(const struct device *dev,
> struct kobj_uevent_env *env)
> {
> - struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
> + const struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
>
> if (add_uevent_var(env, "SOCKET_NO=%u", s->sock))
> return -ENOMEM;
> diff --git a/drivers/power/supply/power_supply.h b/drivers/power/supply/power_supply.h
> index c310d4f36c10..645eee4d6b6a 100644
> --- a/drivers/power/supply/power_supply.h
> +++ b/drivers/power/supply/power_supply.h
> @@ -16,7 +16,7 @@ struct power_supply;
> #ifdef CONFIG_SYSFS
>
> extern void power_supply_init_attrs(struct device_type *dev_type);
> -extern int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env);
> +extern int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env);
>
> #else
>
> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
> index 5369abaceb5c..6ca7d3985a40 100644
> --- a/drivers/power/supply/power_supply_sysfs.c
> +++ b/drivers/power/supply/power_supply_sysfs.c
> @@ -427,7 +427,7 @@ void power_supply_init_attrs(struct device_type *dev_type)
> }
> }
>
> -static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> +static int add_prop_uevent(const struct device *dev, struct kobj_uevent_env *env,
> enum power_supply_property prop, char *prop_buf)
> {
> int ret = 0;
> @@ -438,7 +438,7 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr = &power_supply_attrs[prop];
> dev_attr = &pwr_attr->dev_attr;
>
> - ret = power_supply_show_property(dev, dev_attr, prop_buf);
> + ret = power_supply_show_property((struct device *)dev, dev_attr, prop_buf);
> if (ret == -ENODEV || ret == -ENODATA) {
> /*
> * When a battery is absent, we expect -ENODEV. Don't abort;
> @@ -458,9 +458,9 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr->prop_name, prop_buf);
> }
>
> -int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env)
> +int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct power_supply *psy = dev_get_drvdata(dev);
> + const struct power_supply *psy = dev_get_drvdata(dev);
> int ret = 0, j;
> char *prop_buf;
>
> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
> index c63c0c2cf649..b5994a0604f6 100644
> --- a/drivers/usb/gadget/udc/core.c
> +++ b/drivers/usb/gadget/udc/core.c
> @@ -1723,9 +1723,9 @@ static const struct attribute_group *usb_udc_attr_groups[] = {
> NULL,
> };
>
> -static int usb_udc_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int usb_udc_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> + const struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> int ret;
>
> ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name);
> diff --git a/include/linux/device/class.h b/include/linux/device/class.h
> index 20103e0b03c3..94b1107258e5 100644
> --- a/include/linux/device/class.h
> +++ b/include/linux/device/class.h
> @@ -59,7 +59,7 @@ struct class {
> const struct attribute_group **dev_groups;
> struct kobject *dev_kobj;
>
> - int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
> + int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
> char *(*devnode)(struct device *dev, umode_t *mode);
>
> void (*class_release)(struct class *class);
> diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> index 7dd1f01ec4f9..7aab4a769736 100644
> --- a/include/linux/mISDNif.h
> +++ b/include/linux/mISDNif.h
> @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> void *);
> extern void mISDN_unregister_clock(struct mISDNclock *);
>
> -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> {
> if (dev)
> return dev_get_drvdata(dev);
> diff --git a/net/atm/atm_sysfs.c b/net/atm/atm_sysfs.c
> index 0fdbdfd19474..466353b3dde4 100644
> --- a/net/atm/atm_sysfs.c
> +++ b/net/atm/atm_sysfs.c
> @@ -108,9 +108,9 @@ static struct device_attribute *atm_attrs[] = {
> };
>
>
> -static int atm_uevent(struct device *cdev, struct kobj_uevent_env *env)
> +static int atm_uevent(const struct device *cdev, struct kobj_uevent_env *env)
> {
> - struct atm_dev *adev;
> + const struct atm_dev *adev;
>
> if (!cdev)
> return -ENODEV;
> diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
> index 9cfc80b8ed25..03a61d1dffbd 100644
> --- a/net/core/net-sysfs.c
> +++ b/net/core/net-sysfs.c
> @@ -1873,9 +1873,9 @@ const struct kobj_ns_type_operations net_ns_type_operations = {
> };
> EXPORT_SYMBOL_GPL(net_ns_type_operations);
>
> -static int netdev_uevent(struct device *d, struct kobj_uevent_env *env)
> +static int netdev_uevent(const struct device *d, struct kobj_uevent_env *env)
> {
> - struct net_device *dev = to_net_dev(d);
> + const struct net_device *dev = to_net_dev(d);
> int retval;
>
> /* pass interface to uevent. */
> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
> index dac4fdc7488a..b390ff245d5e 100644
> --- a/net/rfkill/core.c
> +++ b/net/rfkill/core.c
> @@ -832,7 +832,7 @@ static void rfkill_release(struct device *dev)
> kfree(rfkill);
> }
>
> -static int rfkill_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int rfkill_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> struct rfkill *rfkill = to_rfkill(dev);
> unsigned long flags;
> --
> 2.38.1
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-23 12:25 [PATCH 1/5] driver core: make struct class.dev_uevent() take a const * Greg Kroah-Hartman
` (2 preceding siblings ...)
2022-11-24 15:03 ` Sebastian Reichel
@ 2022-11-25 11:54 ` Mauro Carvalho Chehab
2022-11-25 23:51 ` Bart Van Assche
4 siblings, 0 replies; 11+ messages in thread
From: Mauro Carvalho Chehab @ 2022-11-25 11:54 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Keith Busch, Christoph Hellwig,
Sagi Grimberg, Dominik Brodowski, Sebastian Reichel,
David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Johannes Berg, Wolfram Sang, Raed Salem, Chen Zhongjin,
Tetsuo Handa, Avihai Horon, Matthew Wilcox (Oracle), Alan Stern,
Colin Ian King, Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
Em Wed, 23 Nov 2022 13:25:19 +0100
Greg Kroah-Hartman <gregkh@linuxfoundation.org> escreveu:
> The dev_uevent() in struct class 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.
Acked-by: Mauro Carvalho Chehab <mchehab@kernel.org>
>
> Cc: Jens Axboe <axboe@kernel.dk>
> Cc: Luis Chamberlain <mcgrof@kernel.org>
> Cc: Russ Weight <russell.h.weight@intel.com>
> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> Cc: Jean Delvare <jdelvare@suse.com>
> Cc: Johan Hovold <johan@kernel.org>
> Cc: Jason Gunthorpe <jgg@ziepe.ca>
> Cc: Leon Romanovsky <leon@kernel.org>
> Cc: Karsten Keil <isdn@linux-pingi.de>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Keith Busch <kbusch@kernel.org>
> Cc: Christoph Hellwig <hch@lst.de>
> Cc: Sagi Grimberg <sagi@grimberg.me>
> Cc: Dominik Brodowski <linux@dominikbrodowski.net>
> Cc: Sebastian Reichel <sre@kernel.org>
> Cc: "David S. Miller" <davem@davemloft.net>
> Cc: Eric Dumazet <edumazet@google.com>
> Cc: Jakub Kicinski <kuba@kernel.org>
> Cc: Paolo Abeni <pabeni@redhat.com>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
> Cc: Raed Salem <raeds@nvidia.com>
> Cc: Chen Zhongjin <chenzhongjin@huawei.com>
> Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
> Cc: Avihai Horon <avihaih@nvidia.com>
> Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>
> Cc: Alan Stern <stern@rowland.harvard.edu>
> Cc: Colin Ian King <colin.i.king@gmail.com>
> Cc: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Jakob Koschel <jakobkoschel@gmail.com>
> Cc: Antoine Tenart <atenart@kernel.org>
> Cc: Frederic Weisbecker <frederic@kernel.org>
> Cc: Wang Yufen <wangyufen@huawei.com>
> Cc: linux-block@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-media@vger.kernel.org
> Cc: linux-nvme@lists.infradead.org
> Cc: linux-pm@vger.kernel.org
> Cc: linux-rdma@vger.kernel.org
> Cc: linux-usb@vger.kernel.org
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> block/genhd.c | 4 ++--
> drivers/base/firmware_loader/sysfs.c | 6 +++---
> drivers/base/firmware_loader/sysfs.h | 2 +-
> drivers/firmware/dmi-id.c | 2 +-
> drivers/gnss/core.c | 6 +++---
> drivers/infiniband/core/device.c | 2 +-
> drivers/isdn/mISDN/core.c | 4 ++--
> drivers/media/dvb-core/dvbdev.c | 4 ++--
> drivers/nvme/host/core.c | 4 ++--
> drivers/pcmcia/cs.c | 4 ++--
> drivers/power/supply/power_supply.h | 2 +-
> drivers/power/supply/power_supply_sysfs.c | 8 ++++----
> drivers/usb/gadget/udc/core.c | 4 ++--
> include/linux/device/class.h | 2 +-
> include/linux/mISDNif.h | 2 +-
> net/atm/atm_sysfs.c | 4 ++--
> net/core/net-sysfs.c | 4 ++--
> net/rfkill/core.c | 2 +-
> 18 files changed, 33 insertions(+), 33 deletions(-)
>
> diff --git a/block/genhd.c b/block/genhd.c
> index 0f9769db2de8..3f1124713442 100644
> --- a/block/genhd.c
> +++ b/block/genhd.c
> @@ -1181,9 +1181,9 @@ static void disk_release(struct device *dev)
> iput(disk->part0->bd_inode); /* frees the disk */
> }
>
> -static int block_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int block_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gendisk *disk = dev_to_disk(dev);
> + const struct gendisk *disk = dev_to_disk(dev);
>
> return add_uevent_var(env, "DISKSEQ=%llu", disk->diskseq);
> }
> diff --git a/drivers/base/firmware_loader/sysfs.c b/drivers/base/firmware_loader/sysfs.c
> index 5b66b3d1fa16..56911d75b90a 100644
> --- a/drivers/base/firmware_loader/sysfs.c
> +++ b/drivers/base/firmware_loader/sysfs.c
> @@ -64,7 +64,7 @@ static struct attribute *firmware_class_attrs[] = {
> };
> ATTRIBUTE_GROUPS(firmware_class);
>
> -static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> +static int do_firmware_uevent(const struct fw_sysfs *fw_sysfs, struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "FIRMWARE=%s", fw_sysfs->fw_priv->fw_name))
> return -ENOMEM;
> @@ -76,9 +76,9 @@ static int do_firmware_uevent(struct fw_sysfs *fw_sysfs, struct kobj_uevent_env
> return 0;
> }
>
> -static int firmware_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int firmware_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> + const struct fw_sysfs *fw_sysfs = to_fw_sysfs(dev);
> int err = 0;
>
> mutex_lock(&fw_lock);
> diff --git a/drivers/base/firmware_loader/sysfs.h b/drivers/base/firmware_loader/sysfs.h
> index df1d5add698f..fd0b4ad9bdbb 100644
> --- a/drivers/base/firmware_loader/sysfs.h
> +++ b/drivers/base/firmware_loader/sysfs.h
> @@ -81,7 +81,7 @@ struct fw_sysfs {
> void *fw_upload_priv;
> };
>
> -static inline struct fw_sysfs *to_fw_sysfs(struct device *dev)
> +static inline struct fw_sysfs *to_fw_sysfs(const struct device *dev)
> {
> return container_of(dev, struct fw_sysfs, dev);
> }
> diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c
> index 940ddf916202..5f3a3e913d28 100644
> --- a/drivers/firmware/dmi-id.c
> +++ b/drivers/firmware/dmi-id.c
> @@ -155,7 +155,7 @@ static const struct attribute_group* sys_dmi_attribute_groups[] = {
> NULL
> };
>
> -static int dmi_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dmi_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> ssize_t len;
>
> diff --git a/drivers/gnss/core.c b/drivers/gnss/core.c
> index 1e82b7967570..77a4b280c552 100644
> --- a/drivers/gnss/core.c
> +++ b/drivers/gnss/core.c
> @@ -337,7 +337,7 @@ static const char * const gnss_type_names[GNSS_TYPE_COUNT] = {
> [GNSS_TYPE_MTK] = "MTK",
> };
>
> -static const char *gnss_type_name(struct gnss_device *gdev)
> +static const char *gnss_type_name(const struct gnss_device *gdev)
> {
> const char *name = NULL;
>
> @@ -365,9 +365,9 @@ static struct attribute *gnss_attrs[] = {
> };
> ATTRIBUTE_GROUPS(gnss);
>
> -static int gnss_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int gnss_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct gnss_device *gdev = to_gnss_device(dev);
> + const struct gnss_device *gdev = to_gnss_device(dev);
> int ret;
>
> ret = add_uevent_var(env, "GNSS_TYPE=%s", gnss_type_name(gdev));
> diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
> index fa65c5d3d395..4186dbf9377f 100644
> --- a/drivers/infiniband/core/device.c
> +++ b/drivers/infiniband/core/device.c
> @@ -511,7 +511,7 @@ static void ib_device_release(struct device *device)
> kfree_rcu(dev, rcu_head);
> }
>
> -static int ib_device_uevent(struct device *device,
> +static int ib_device_uevent(const struct device *device,
> struct kobj_uevent_env *env)
> {
> if (add_uevent_var(env, "NAME=%s", dev_name(device)))
> diff --git a/drivers/isdn/mISDN/core.c b/drivers/isdn/mISDN/core.c
> index 90ee56d07a6e..9120be590325 100644
> --- a/drivers/isdn/mISDN/core.c
> +++ b/drivers/isdn/mISDN/core.c
> @@ -139,9 +139,9 @@ static struct attribute *mISDN_attrs[] = {
> };
> ATTRIBUTE_GROUPS(mISDN);
>
> -static int mISDN_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int mISDN_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct mISDNdevice *mdev = dev_to_mISDN(dev);
> + const struct mISDNdevice *mdev = dev_to_mISDN(dev);
>
> if (!mdev)
> return 0;
> diff --git a/drivers/media/dvb-core/dvbdev.c b/drivers/media/dvb-core/dvbdev.c
> index 675d877a67b2..6ef18bab9648 100644
> --- a/drivers/media/dvb-core/dvbdev.c
> +++ b/drivers/media/dvb-core/dvbdev.c
> @@ -1008,9 +1008,9 @@ void dvb_module_release(struct i2c_client *client)
> EXPORT_SYMBOL_GPL(dvb_module_release);
> #endif
>
> -static int dvb_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int dvb_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct dvb_device *dvbdev = dev_get_drvdata(dev);
> + const struct dvb_device *dvbdev = dev_get_drvdata(dev);
>
> add_uevent_var(env, "DVB_ADAPTER_NUM=%d", dvbdev->adapter->num);
> add_uevent_var(env, "DVB_DEVICE_TYPE=%s", dnames[dvbdev->type]);
> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> index da55ce45ac70..b4778b970dd4 100644
> --- a/drivers/nvme/host/core.c
> +++ b/drivers/nvme/host/core.c
> @@ -4580,9 +4580,9 @@ void nvme_remove_namespaces(struct nvme_ctrl *ctrl)
> }
> EXPORT_SYMBOL_GPL(nvme_remove_namespaces);
>
> -static int nvme_class_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int nvme_class_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct nvme_ctrl *ctrl =
> + const struct nvme_ctrl *ctrl =
> container_of(dev, struct nvme_ctrl, ctrl_device);
> struct nvmf_ctrl_options *opts = ctrl->opts;
> int ret;
> diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c
> index f70197154a36..e3224e49c43f 100644
> --- a/drivers/pcmcia/cs.c
> +++ b/drivers/pcmcia/cs.c
> @@ -810,10 +810,10 @@ int pcmcia_reset_card(struct pcmcia_socket *skt)
> EXPORT_SYMBOL(pcmcia_reset_card);
>
>
> -static int pcmcia_socket_uevent(struct device *dev,
> +static int pcmcia_socket_uevent(const struct device *dev,
> struct kobj_uevent_env *env)
> {
> - struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
> + const struct pcmcia_socket *s = container_of(dev, struct pcmcia_socket, dev);
>
> if (add_uevent_var(env, "SOCKET_NO=%u", s->sock))
> return -ENOMEM;
> diff --git a/drivers/power/supply/power_supply.h b/drivers/power/supply/power_supply.h
> index c310d4f36c10..645eee4d6b6a 100644
> --- a/drivers/power/supply/power_supply.h
> +++ b/drivers/power/supply/power_supply.h
> @@ -16,7 +16,7 @@ struct power_supply;
> #ifdef CONFIG_SYSFS
>
> extern void power_supply_init_attrs(struct device_type *dev_type);
> -extern int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env);
> +extern int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env);
>
> #else
>
> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
> index 5369abaceb5c..6ca7d3985a40 100644
> --- a/drivers/power/supply/power_supply_sysfs.c
> +++ b/drivers/power/supply/power_supply_sysfs.c
> @@ -427,7 +427,7 @@ void power_supply_init_attrs(struct device_type *dev_type)
> }
> }
>
> -static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> +static int add_prop_uevent(const struct device *dev, struct kobj_uevent_env *env,
> enum power_supply_property prop, char *prop_buf)
> {
> int ret = 0;
> @@ -438,7 +438,7 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr = &power_supply_attrs[prop];
> dev_attr = &pwr_attr->dev_attr;
>
> - ret = power_supply_show_property(dev, dev_attr, prop_buf);
> + ret = power_supply_show_property((struct device *)dev, dev_attr, prop_buf);
> if (ret == -ENODEV || ret == -ENODATA) {
> /*
> * When a battery is absent, we expect -ENODEV. Don't abort;
> @@ -458,9 +458,9 @@ static int add_prop_uevent(struct device *dev, struct kobj_uevent_env *env,
> pwr_attr->prop_name, prop_buf);
> }
>
> -int power_supply_uevent(struct device *dev, struct kobj_uevent_env *env)
> +int power_supply_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct power_supply *psy = dev_get_drvdata(dev);
> + const struct power_supply *psy = dev_get_drvdata(dev);
> int ret = 0, j;
> char *prop_buf;
>
> diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c
> index c63c0c2cf649..b5994a0604f6 100644
> --- a/drivers/usb/gadget/udc/core.c
> +++ b/drivers/usb/gadget/udc/core.c
> @@ -1723,9 +1723,9 @@ static const struct attribute_group *usb_udc_attr_groups[] = {
> NULL,
> };
>
> -static int usb_udc_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int usb_udc_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> - struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> + const struct usb_udc *udc = container_of(dev, struct usb_udc, dev);
> int ret;
>
> ret = add_uevent_var(env, "USB_UDC_NAME=%s", udc->gadget->name);
> diff --git a/include/linux/device/class.h b/include/linux/device/class.h
> index 20103e0b03c3..94b1107258e5 100644
> --- a/include/linux/device/class.h
> +++ b/include/linux/device/class.h
> @@ -59,7 +59,7 @@ struct class {
> const struct attribute_group **dev_groups;
> struct kobject *dev_kobj;
>
> - int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
> + int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env);
> char *(*devnode)(struct device *dev, umode_t *mode);
>
> void (*class_release)(struct class *class);
> diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> index 7dd1f01ec4f9..7aab4a769736 100644
> --- a/include/linux/mISDNif.h
> +++ b/include/linux/mISDNif.h
> @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> void *);
> extern void mISDN_unregister_clock(struct mISDNclock *);
>
> -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> {
> if (dev)
> return dev_get_drvdata(dev);
> diff --git a/net/atm/atm_sysfs.c b/net/atm/atm_sysfs.c
> index 0fdbdfd19474..466353b3dde4 100644
> --- a/net/atm/atm_sysfs.c
> +++ b/net/atm/atm_sysfs.c
> @@ -108,9 +108,9 @@ static struct device_attribute *atm_attrs[] = {
> };
>
>
> -static int atm_uevent(struct device *cdev, struct kobj_uevent_env *env)
> +static int atm_uevent(const struct device *cdev, struct kobj_uevent_env *env)
> {
> - struct atm_dev *adev;
> + const struct atm_dev *adev;
>
> if (!cdev)
> return -ENODEV;
> diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
> index 9cfc80b8ed25..03a61d1dffbd 100644
> --- a/net/core/net-sysfs.c
> +++ b/net/core/net-sysfs.c
> @@ -1873,9 +1873,9 @@ const struct kobj_ns_type_operations net_ns_type_operations = {
> };
> EXPORT_SYMBOL_GPL(net_ns_type_operations);
>
> -static int netdev_uevent(struct device *d, struct kobj_uevent_env *env)
> +static int netdev_uevent(const struct device *d, struct kobj_uevent_env *env)
> {
> - struct net_device *dev = to_net_dev(d);
> + const struct net_device *dev = to_net_dev(d);
> int retval;
>
> /* pass interface to uevent. */
> diff --git a/net/rfkill/core.c b/net/rfkill/core.c
> index dac4fdc7488a..b390ff245d5e 100644
> --- a/net/rfkill/core.c
> +++ b/net/rfkill/core.c
> @@ -832,7 +832,7 @@ static void rfkill_release(struct device *dev)
> kfree(rfkill);
> }
>
> -static int rfkill_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
> +static int rfkill_dev_uevent(const struct device *dev, struct kobj_uevent_env *env)
> {
> struct rfkill *rfkill = to_rfkill(dev);
> unsigned long flags;
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-23 12:25 [PATCH 1/5] driver core: make struct class.dev_uevent() take a const * Greg Kroah-Hartman
` (3 preceding siblings ...)
2022-11-25 11:54 ` Mauro Carvalho Chehab
@ 2022-11-25 23:51 ` Bart Van Assche
2022-11-27 13:45 ` Greg Kroah-Hartman
4 siblings, 1 reply; 11+ messages in thread
From: Bart Van Assche @ 2022-11-25 23:51 UTC (permalink / raw)
To: Greg Kroah-Hartman, linux-kernel
Cc: Jens Axboe, Luis Chamberlain, Russ Weight, Rafael J. Wysocki,
Jean Delvare, Johan Hovold, Jason Gunthorpe, Leon Romanovsky,
Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
Sebastian Reichel, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Johannes Berg, Wolfram Sang, Raed Salem,
Chen Zhongjin, Tetsuo Handa, Avihai Horon,
Matthew Wilcox (Oracle), Alan Stern, Colin Ian King,
Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
On 11/23/22 04:25, Greg Kroah-Hartman wrote:
> diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> index 7dd1f01ec4f9..7aab4a769736 100644
> --- a/include/linux/mISDNif.h
> +++ b/include/linux/mISDNif.h
> @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> void *);
> extern void mISDN_unregister_clock(struct mISDNclock *);
>
> -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> {
> if (dev)
> return dev_get_drvdata(dev);
Why does the dev_to_mISDN() function drop constness? I haven't found an
explanation for this in the cover letter.
Thanks,
Bart.
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-25 23:51 ` Bart Van Assche
@ 2022-11-27 13:45 ` Greg Kroah-Hartman
2022-11-28 2:38 ` Bart Van Assche
0 siblings, 1 reply; 11+ messages in thread
From: Greg Kroah-Hartman @ 2022-11-27 13:45 UTC (permalink / raw)
To: Bart Van Assche
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
Sebastian Reichel, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Johannes Berg, Wolfram Sang, Raed Salem,
Chen Zhongjin, Tetsuo Handa, Avihai Horon,
Matthew Wilcox (Oracle), Alan Stern, Colin Ian King,
Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
On Fri, Nov 25, 2022 at 03:51:11PM -0800, Bart Van Assche wrote:
> On 11/23/22 04:25, Greg Kroah-Hartman wrote:
> > diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> > index 7dd1f01ec4f9..7aab4a769736 100644
> > --- a/include/linux/mISDNif.h
> > +++ b/include/linux/mISDNif.h
> > @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> > void *);
> > extern void mISDN_unregister_clock(struct mISDNclock *);
> > -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> > +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> > {
> > if (dev)
> > return dev_get_drvdata(dev);
>
> Why does the dev_to_mISDN() function drop constness? I haven't found an
> explanation for this in the cover letter.
I agree, this is going to be fixed up, see the thread starting here:
https://lore.kernel.org/r/Y34+V2bCDdqujBDk@kroah.com
I'll work on making a const / non const version for these so that we
don't loose the marking.
Oh wait, no, this function is fine, it's not modifying the device
structure at all, and only returning the pointer in the private data
stored in the device. There is no loss of const-ness here.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-27 13:45 ` Greg Kroah-Hartman
@ 2022-11-28 2:38 ` Bart Van Assche
2022-11-28 17:25 ` Greg Kroah-Hartman
0 siblings, 1 reply; 11+ messages in thread
From: Bart Van Assche @ 2022-11-28 2:38 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
Sebastian Reichel, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Johannes Berg, Wolfram Sang, Raed Salem,
Chen Zhongjin, Tetsuo Handa, Avihai Horon,
Matthew Wilcox (Oracle), Alan Stern, Colin Ian King,
Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
On 11/27/22 05:45, Greg Kroah-Hartman wrote:
> On Fri, Nov 25, 2022 at 03:51:11PM -0800, Bart Van Assche wrote:
>> On 11/23/22 04:25, Greg Kroah-Hartman wrote:
>>> diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
>>> index 7dd1f01ec4f9..7aab4a769736 100644
>>> --- a/include/linux/mISDNif.h
>>> +++ b/include/linux/mISDNif.h
>>> @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
>>> void *);
>>> extern void mISDN_unregister_clock(struct mISDNclock *);
>>> -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
>>> +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
>>> {
>>> if (dev)
>>> return dev_get_drvdata(dev);
>>
>> Why does the dev_to_mISDN() function drop constness? I haven't found an
>> explanation for this in the cover letter.
>
> I agree, this is going to be fixed up, see the thread starting here:
> https://lore.kernel.org/r/Y34+V2bCDdqujBDk@kroah.com
>
> I'll work on making a const / non const version for these so that we
> don't loose the marking.
>
> Oh wait, no, this function is fine, it's not modifying the device
> structure at all, and only returning the pointer in the private data
> stored in the device. There is no loss of const-ness here.
Hi Greg,
This is what I found in include/linux/mISDNif.h:
struct mISDNdevice {
struct mISDNchannel D;
u_int id;
u_int Dprotocols;
u_int Bprotocols;
u_int nrbchan;
u_char channelmap[MISDN_CHMAP_SIZE];
struct list_head bchannels;
struct mISDNchannel *teimgr;
struct device dev;
};
As one can see 'dev' is a member of struct mISDNdevice. I still think
that dev_to_mISDN() drops constness. Did I perhaps overlook something?
Bart.
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH 1/5] driver core: make struct class.dev_uevent() take a const *
2022-11-28 2:38 ` Bart Van Assche
@ 2022-11-28 17:25 ` Greg Kroah-Hartman
0 siblings, 0 replies; 11+ messages in thread
From: Greg Kroah-Hartman @ 2022-11-28 17:25 UTC (permalink / raw)
To: Bart Van Assche
Cc: linux-kernel, Jens Axboe, Luis Chamberlain, Russ Weight,
Rafael J. Wysocki, Jean Delvare, Johan Hovold, Jason Gunthorpe,
Leon Romanovsky, Karsten Keil, Mauro Carvalho Chehab, Keith Busch,
Christoph Hellwig, Sagi Grimberg, Dominik Brodowski,
Sebastian Reichel, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Johannes Berg, Wolfram Sang, Raed Salem,
Chen Zhongjin, Tetsuo Handa, Avihai Horon,
Matthew Wilcox (Oracle), Alan Stern, Colin Ian King,
Geert Uytterhoeven, Jakob Koschel, Antoine Tenart,
Frederic Weisbecker, Wang Yufen, linux-block, linux-media,
linux-nvme, linux-pm, linux-rdma, linux-usb, linux-wireless,
netdev
On Sun, Nov 27, 2022 at 06:38:39PM -0800, Bart Van Assche wrote:
> On 11/27/22 05:45, Greg Kroah-Hartman wrote:
> > On Fri, Nov 25, 2022 at 03:51:11PM -0800, Bart Van Assche wrote:
> > > On 11/23/22 04:25, Greg Kroah-Hartman wrote:
> > > > diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h
> > > > index 7dd1f01ec4f9..7aab4a769736 100644
> > > > --- a/include/linux/mISDNif.h
> > > > +++ b/include/linux/mISDNif.h
> > > > @@ -586,7 +586,7 @@ extern struct mISDNclock *mISDN_register_clock(char *, int, clockctl_func_t *,
> > > > void *);
> > > > extern void mISDN_unregister_clock(struct mISDNclock *);
> > > > -static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
> > > > +static inline struct mISDNdevice *dev_to_mISDN(const struct device *dev)
> > > > {
> > > > if (dev)
> > > > return dev_get_drvdata(dev);
> > >
> > > Why does the dev_to_mISDN() function drop constness? I haven't found an
> > > explanation for this in the cover letter.
> >
> > I agree, this is going to be fixed up, see the thread starting here:
> > https://lore.kernel.org/r/Y34+V2bCDdqujBDk@kroah.com
> >
> > I'll work on making a const / non const version for these so that we
> > don't loose the marking.
> >
> > Oh wait, no, this function is fine, it's not modifying the device
> > structure at all, and only returning the pointer in the private data
> > stored in the device. There is no loss of const-ness here.
>
> Hi Greg,
>
> This is what I found in include/linux/mISDNif.h:
>
> struct mISDNdevice {
> struct mISDNchannel D;
> u_int id;
> u_int Dprotocols;
> u_int Bprotocols;
> u_int nrbchan;
> u_char channelmap[MISDN_CHMAP_SIZE];
> struct list_head bchannels;
> struct mISDNchannel *teimgr;
> struct device dev;
> };
>
> As one can see 'dev' is a member of struct mISDNdevice. I still think that
> dev_to_mISDN() drops constness. Did I perhaps overlook something?
I think you are missing that dev_to_mISDN() is doing something different
than most dev_to_FOO() functions do (i.e. there is no container_of()
call here at all):
static inline struct mISDNdevice *dev_to_mISDN(struct device *dev)
{
if (dev)
return dev_get_drvdata(dev);
else
return NULL;
}
See, no pointer mess or anything else here, all that happens is the
driver data pointer in struct device is returned.
If this was a "normal" dev_to_FOO() function, then yes, the const-ness
of the pointer would be called into question as the thread I linked to
discusses.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 11+ messages in thread