Module "versions" do not make sense as the kernel is built all at once,
the "version" is the overall kernel version number, so modules can not
really be described as having a unique version given that they rely on
the infrastructure of the whole kernel.

For now, just make this an "empty" define, to keep existing code
building properly as the tree is slowly purged of the use of this over
time.

This macro will be removed entirely in the future when there are no
in-tree users.

Cc: Luis Chamberlain <[email protected]>
Cc: Petr Pavlu <[email protected]>
Cc: Daniel Gomez <[email protected]>
Cc: Sami Tolvanen <[email protected]>
Cc: Aaron Tomlin <[email protected]>
Cc: Shyam Saini <[email protected]>
Cc: Kees Cook <[email protected]>
Cc: Thorsten Blum <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 include/linux/module.h | 56 +++++++++---------------------------------
 kernel/params.c        | 30 ----------------------
 2 files changed, 11 insertions(+), 75 deletions(-)

diff --git a/include/linux/module.h b/include/linux/module.h
index 14f391b186c6..37cb369b4c3a 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -62,15 +62,6 @@ struct module_attribute {
        void (*free)(struct module *);
 };
 
-struct module_version_attribute {
-       struct module_attribute mattr;
-       const char *module_name;
-       const char *version;
-};
-
-extern ssize_t __modver_version_show(const struct module_attribute *,
-                                    struct module_kobject *, char *);
-
 extern const struct module_attribute module_uevent;
 
 /* These are either module local, or the kernel's dummy ones. */
@@ -256,43 +247,18 @@ struct module_kobject 
*lookup_or_create_module_kobject(const char *name);
 static typeof(name) __mod_device_table(type, name)                     \
   __attribute__ ((used, alias(__stringify(name))))
 
-/* Version of form [<epoch>:]<version>[-<extra-version>].
- * Or for CVS/RCS ID version, everything but the number is stripped.
- * <epoch>: A (small) unsigned integer which allows you to start versions
- * anew. If not mentioned, it's zero.  eg. "2:1.0" is after
- * "1:2.0".
-
- * <version>: The <version> may contain only alphanumerics and the
- * character `.'.  Ordered by numeric sort for numeric parts,
- * ascii sort for ascii parts (as per RPM or DEB algorithm).
-
- * <extraversion>: Like <version>, but inserted for local
- * customizations, eg "rh3" or "rusty1".
-
- * Using this automatically adds a checksum of the .c files and the
- * local headers in "srcversion".
+/*
+ * Module "versions" do not make sense as the kernel is built all at once, the
+ * "version" is the overall kernel version number, so modules can not really be
+ * described as having a unique version given that they rely on the
+ * infrastructure of the whole kernel.
+ *
+ * For now, just make this an "empty" define, to keep existing code building
+ * properly as the tree is slowly purged of the use of this over time.
+ *
+ * It will be removed in the future when there are no in-tree users.
  */
-
-#if defined(MODULE) || !defined(CONFIG_SYSFS)
-#define MODULE_VERSION(_version) MODULE_INFO(version, _version)
-#else
-#define MODULE_VERSION(_version)                                       \
-       MODULE_INFO(version, _version);                                 \
-       static const struct module_version_attribute __modver_attr      \
-               __used __section("__modver")                            \
-               __aligned(__alignof__(struct module_version_attribute)) \
-               = {                                                     \
-                       .mattr  = {                                     \
-                               .attr   = {                             \
-                                       .name   = "version",            \
-                                       .mode   = S_IRUGO,              \
-                               },                                      \
-                               .show   = __modver_version_show,        \
-                       },                                              \
-                       .module_name    = KBUILD_MODNAME,               \
-                       .version        = _version,                     \
-               }
-#endif
+#define MODULE_VERSION(_version)
 
 /* Optional firmware file (or files) needed by the module
  * format is simply firmware file name.  Multiple firmware
diff --git a/kernel/params.c b/kernel/params.c
index 7188a12dbe86..1b14b1ab5fcb 100644
--- a/kernel/params.c
+++ b/kernel/params.c
@@ -846,35 +846,6 @@ static void __init param_sysfs_builtin(void)
        }
 }
 
-ssize_t __modver_version_show(const struct module_attribute *mattr,
-                             struct module_kobject *mk, char *buf)
-{
-       const struct module_version_attribute *vattr =
-               container_of_const(mattr, struct module_version_attribute, 
mattr);
-
-       return scnprintf(buf, PAGE_SIZE, "%s\n", vattr->version);
-}
-
-extern const struct module_version_attribute __start___modver[];
-extern const struct module_version_attribute __stop___modver[];
-
-static void __init version_sysfs_builtin(void)
-{
-       const struct module_version_attribute *vattr;
-       struct module_kobject *mk;
-       int err;
-
-       for (vattr = __start___modver; vattr < __stop___modver; vattr++) {
-               mk = lookup_or_create_module_kobject(vattr->module_name);
-               if (mk) {
-                       err = sysfs_create_file(&mk->kobj, &vattr->mattr.attr);
-                       WARN_ON_ONCE(err);
-                       kobject_uevent(&mk->kobj, KOBJ_ADD);
-                       kobject_put(&mk->kobj);
-               }
-       }
-}
-
 /* module-related sysfs stuff */
 
 static ssize_t module_attr_show(struct kobject *kobj,
@@ -977,7 +948,6 @@ static int __init param_sysfs_builtin_init(void)
        if (!module_kset)
                return -ENOMEM;
 
-       version_sysfs_builtin();
        param_sysfs_builtin();
 
        return 0;
-- 
2.53.0


Reply via email to