Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

driver core: make struct class.devnode() take a const *

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
Link: https://lore.kernel.org/r/20221123122523.1332370-2-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

+29 -29
+2 -2
arch/x86/kernel/cpu/resctrl/pseudo_lock.c
··· 1560 1560 .mmap = pseudo_lock_dev_mmap, 1561 1561 }; 1562 1562 1563 - static char *pseudo_lock_devnode(struct device *dev, umode_t *mode) 1563 + static char *pseudo_lock_devnode(const struct device *dev, umode_t *mode) 1564 1564 { 1565 - struct rdtgroup *rdtgrp; 1565 + const struct rdtgroup *rdtgrp; 1566 1566 1567 1567 rdtgrp = dev_get_drvdata(dev); 1568 1568 if (mode)
+1 -1
arch/x86/kernel/cpuid.c
··· 139 139 return 0; 140 140 } 141 141 142 - static char *cpuid_devnode(struct device *dev, umode_t *mode) 142 + static char *cpuid_devnode(const struct device *dev, umode_t *mode) 143 143 { 144 144 return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt)); 145 145 }
+1 -1
arch/x86/kernel/msr.c
··· 250 250 return 0; 251 251 } 252 252 253 - static char *msr_devnode(struct device *dev, umode_t *mode) 253 + static char *msr_devnode(const struct device *dev, umode_t *mode) 254 254 { 255 255 return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt)); 256 256 }
+1 -1
block/bsg.c
··· 232 232 } 233 233 EXPORT_SYMBOL_GPL(bsg_register_queue); 234 234 235 - static char *bsg_devnode(struct device *dev, umode_t *mode) 235 + static char *bsg_devnode(const struct device *dev, umode_t *mode) 236 236 { 237 237 return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev)); 238 238 }
+1 -1
drivers/block/aoe/aoechr.c
··· 273 273 .llseek = noop_llseek, 274 274 }; 275 275 276 - static char *aoe_devnode(struct device *dev, umode_t *mode) 276 + static char *aoe_devnode(const struct device *dev, umode_t *mode) 277 277 { 278 278 return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev)); 279 279 }
+1 -1
drivers/char/mem.c
··· 746 746 .llseek = noop_llseek, 747 747 }; 748 748 749 - static char *mem_devnode(struct device *dev, umode_t *mode) 749 + static char *mem_devnode(const struct device *dev, umode_t *mode) 750 750 { 751 751 if (mode && devlist[MINOR(dev->devt)].mode) 752 752 *mode = devlist[MINOR(dev->devt)].mode;
+2 -2
drivers/char/misc.c
··· 254 254 } 255 255 EXPORT_SYMBOL(misc_deregister); 256 256 257 - static char *misc_devnode(struct device *dev, umode_t *mode) 257 + static char *misc_devnode(const struct device *dev, umode_t *mode) 258 258 { 259 - struct miscdevice *c = dev_get_drvdata(dev); 259 + const struct miscdevice *c = dev_get_drvdata(dev); 260 260 261 261 if (mode && c->mode) 262 262 *mode = c->mode;
+1 -1
drivers/dma-buf/dma-heap.c
··· 299 299 return err_ret; 300 300 } 301 301 302 - static char *dma_heap_devnode(struct device *dev, umode_t *mode) 302 + static char *dma_heap_devnode(const struct device *dev, umode_t *mode) 303 303 { 304 304 return kasprintf(GFP_KERNEL, "dma_heap/%s", dev_name(dev)); 305 305 }
+1 -1
drivers/gpu/drm/drm_sysfs.c
··· 90 90 static void drm_sysfs_acpi_unregister(void) { } 91 91 #endif 92 92 93 - static char *drm_devnode(struct device *dev, umode_t *mode) 93 + static char *drm_devnode(const struct device *dev, umode_t *mode) 94 94 { 95 95 return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev)); 96 96 }
+1 -1
drivers/infiniband/core/user_mad.c
··· 1224 1224 }; 1225 1225 ATTRIBUTE_GROUPS(umad_class_dev); 1226 1226 1227 - static char *umad_devnode(struct device *dev, umode_t *mode) 1227 + static char *umad_devnode(const struct device *dev, umode_t *mode) 1228 1228 { 1229 1229 return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev)); 1230 1230 }
+1 -1
drivers/infiniband/core/uverbs_main.c
··· 1237 1237 put_device(&uverbs_dev->dev); 1238 1238 } 1239 1239 1240 - static char *uverbs_devnode(struct device *dev, umode_t *mode) 1240 + static char *uverbs_devnode(const struct device *dev, umode_t *mode) 1241 1241 { 1242 1242 if (mode) 1243 1243 *mode = 0666;
+2 -2
drivers/infiniband/hw/hfi1/device.c
··· 72 72 return hfi1_class_name; 73 73 } 74 74 75 - static char *hfi1_devnode(struct device *dev, umode_t *mode) 75 + static char *hfi1_devnode(const struct device *dev, umode_t *mode) 76 76 { 77 77 if (mode) 78 78 *mode = 0600; ··· 85 85 return hfi1_class_name_user; 86 86 } 87 87 88 - static char *hfi1_user_devnode(struct device *dev, umode_t *mode) 88 + static char *hfi1_user_devnode(const struct device *dev, umode_t *mode) 89 89 { 90 90 if (mode) 91 91 *mode = 0666;
+1 -1
drivers/input/input.c
··· 1913 1913 #endif 1914 1914 }; 1915 1915 1916 - static char *input_devnode(struct device *dev, umode_t *mode) 1916 + static char *input_devnode(const struct device *dev, umode_t *mode) 1917 1917 { 1918 1918 return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev)); 1919 1919 }
+2 -2
drivers/media/dvb-core/dvbdev.c
··· 1018 1018 return 0; 1019 1019 } 1020 1020 1021 - static char *dvb_devnode(struct device *dev, umode_t *mode) 1021 + static char *dvb_devnode(const struct device *dev, umode_t *mode) 1022 1022 { 1023 - struct dvb_device *dvbdev = dev_get_drvdata(dev); 1023 + const struct dvb_device *dvbdev = dev_get_drvdata(dev); 1024 1024 1025 1025 return kasprintf(GFP_KERNEL, "dvb/adapter%d/%s%d", 1026 1026 dvbdev->adapter->num, dnames[dvbdev->type], dvbdev->id);
+2 -2
drivers/media/pci/ddbridge/ddbridge-core.c
··· 2716 2716 .release = ddb_release, 2717 2717 }; 2718 2718 2719 - static char *ddb_devnode(struct device *device, umode_t *mode) 2719 + static char *ddb_devnode(const struct device *device, umode_t *mode) 2720 2720 { 2721 - struct ddb *dev = dev_get_drvdata(device); 2721 + const struct ddb *dev = dev_get_drvdata(device); 2722 2722 2723 2723 return kasprintf(GFP_KERNEL, "ddbridge/card%d", dev->nr); 2724 2724 }
+1 -1
drivers/media/rc/rc-main.c
··· 1017 1017 } 1018 1018 1019 1019 /* class for /sys/class/rc */ 1020 - static char *rc_devnode(struct device *dev, umode_t *mode) 1020 + static char *rc_devnode(const struct device *dev, umode_t *mode) 1021 1021 { 1022 1022 return kasprintf(GFP_KERNEL, "rc/%s", dev_name(dev)); 1023 1023 }
+1 -1
drivers/misc/genwqe/card_base.c
··· 1349 1349 * Default mode should be rw for everybody. Do not change default 1350 1350 * device name. 1351 1351 */ 1352 - static char *genwqe_devnode(struct device *dev, umode_t *mode) 1352 + static char *genwqe_devnode(const struct device *dev, umode_t *mode) 1353 1353 { 1354 1354 if (mode) 1355 1355 *mode = 0666;
+1 -1
drivers/tty/tty_io.c
··· 3494 3494 *fops = tty_fops; 3495 3495 } 3496 3496 3497 - static char *tty_devnode(struct device *dev, umode_t *mode) 3497 + static char *tty_devnode(const struct device *dev, umode_t *mode) 3498 3498 { 3499 3499 if (!mode) 3500 3500 return NULL;
+1 -1
drivers/usb/core/file.c
··· 62 62 struct class *class; 63 63 } *usb_class; 64 64 65 - static char *usb_devnode(struct device *dev, umode_t *mode) 65 + static char *usb_devnode(const struct device *dev, umode_t *mode) 66 66 { 67 67 struct usb_class_driver *drv; 68 68
+1 -1
drivers/vdpa/vdpa_user/vduse_dev.c
··· 1656 1656 .llseek = noop_llseek, 1657 1657 }; 1658 1658 1659 - static char *vduse_devnode(struct device *dev, umode_t *mode) 1659 + static char *vduse_devnode(const struct device *dev, umode_t *mode) 1660 1660 { 1661 1661 return kasprintf(GFP_KERNEL, "vduse/%s", dev_name(dev)); 1662 1662 }
+1 -1
drivers/vfio/vfio_main.c
··· 1812 1812 /* 1813 1813 * Module/class support 1814 1814 */ 1815 - static char *vfio_devnode(struct device *dev, umode_t *mode) 1815 + static char *vfio_devnode(const struct device *dev, umode_t *mode) 1816 1816 { 1817 1817 return kasprintf(GFP_KERNEL, "vfio/%s", dev_name(dev)); 1818 1818 }
+1 -1
fs/pstore/pmsg.c
··· 46 46 #undef pr_fmt 47 47 #define pr_fmt(fmt) PMSG_NAME ": " fmt 48 48 49 - static char *pmsg_devnode(struct device *dev, umode_t *mode) 49 + static char *pmsg_devnode(const struct device *dev, umode_t *mode) 50 50 { 51 51 if (mode) 52 52 *mode = 0220;
+1 -1
include/linux/device/class.h
··· 60 60 struct kobject *dev_kobj; 61 61 62 62 int (*dev_uevent)(const struct device *dev, struct kobj_uevent_env *env); 63 - char *(*devnode)(struct device *dev, umode_t *mode); 63 + char *(*devnode)(const struct device *dev, umode_t *mode); 64 64 65 65 void (*class_release)(struct class *class); 66 66 void (*dev_release)(struct device *dev);
+1 -1
sound/sound_core.c
··· 30 30 MODULE_AUTHOR("Alan Cox"); 31 31 MODULE_LICENSE("GPL"); 32 32 33 - static char *sound_devnode(struct device *dev, umode_t *mode) 33 + static char *sound_devnode(const struct device *dev, umode_t *mode) 34 34 { 35 35 if (MAJOR(dev->devt) == SOUND_MAJOR) 36 36 return NULL;