[PATCH batadv v3] batman-adv: drop batman-adv specific version for in-tree module
Sven Eckelmann <[email protected]>
| Newsgroups | org.open-mesh.lists.batman |
|---|---|
| Message-ID | <20260517-no-upstream-version-bumps-v3-1-ca677593ea9b@narfation.org> |
Bumping the version number on the first pull request after each merge window was deemed inappropriate for an in-tree component. The version number carries little meaningful information in the context of the Linux kernel release model, where stable and distribution might all carry slightly different patches (without any change to the batman-adv version). Instead, expose a UTS_RELEASE-based string to consumers of the netlink and ethtool interfaces. But keep it in a separate file to avoid whole batman-adv recompilations when generated/utsrelease.h is recreated. The out-of-tree batman-adv package is unaffected by this change. Link: https://lore.kernel.org/r/20210203163302.13e8a2a7@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com Link: https://lore.kernel.org/r/YnfjtpuAaH+Zkf9S@unreal Link: https://lore.kernel.org/r/Y9faTA0rNSXg%2FsLD@nanopsycho Signed-off-by: Sven Eckelmann <[email protected]> --- Changes in v3: - move version logic to separate file to avoid rebuild with each kernel commit - document why MODULE_VERSION is still used - drop RFC prefix - Link to v2: https://patch.msgid.link/20260516-no-upstream-version-bumps-v2-1-c8a6bf1e3e23@narfation.org Changes in v2: - commit message: UTS_RELASE not UTC_RELEASE - drop the MODULE_VERSION part because batctl was not actually ready to work without it (seems I never prepaqred the changes when we were talking about it many years) - Link to v1: https://patch.msgid.link/20260515-no-upstream-version-bumps-v1-1-6aa349f8e949@narfation.org --- Makefile | 2 +- net/batman-adv/Makefile | 1 + net/batman-adv/main.c | 4 ++-- net/batman-adv/main.h | 4 ---- net/batman-adv/mesh-interface.c | 3 ++- net/batman-adv/netlink.c | 3 ++- net/batman-adv/version.c | 27 +++++++++++++++++++++++++++ net/batman-adv/version.h | 8 ++++++++ 8 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index ae3fd885..38b1b97d 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,7 @@ NOSTDINC_FLAGS += \ $(CFLAGS) ifneq ($(REVISION),) -NOSTDINC_FLAGS += -DBATADV_SOURCE_VERSION=\"$(REVISION)\" +export CFLAGS_version.o := -DBATADV_SOURCE_VERSION=\"$(REVISION)\" endif obj-y += net/batman-adv/ diff --git a/net/batman-adv/Makefile b/net/batman-adv/Makefile index d3c4d414..5d7456f1 100644 --- a/net/batman-adv/Makefile +++ b/net/batman-adv/Makefile @@ -30,5 +30,6 @@ batman-adv-$(CONFIG_BATMAN_ADV_TRACING) += trace.o batman-adv-y += tp_meter.o batman-adv-y += translation-table.o batman-adv-y += tvlv.o +batman-adv-y += version.o CFLAGS_trace.o := -I$(src) diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c index 2baf8e2c..a3993a83 100644 --- a/net/batman-adv/main.c +++ b/net/batman-adv/main.c @@ -57,6 +57,7 @@ #include "send.h" #include "tp_meter.h" #include "translation-table.h" +#include "version.h" /* List manipulations on hardif_list have to be rtnl_lock()'ed, * list traversals just rcu-locked @@ -118,7 +119,7 @@ static int __init batadv_init(void) batadv_netlink_register(); pr_info("B.A.T.M.A.N. advanced %s (compatibility version %i) loaded\n", - BATADV_SOURCE_VERSION, BATADV_COMPAT_VERSION); + batadv_version, BATADV_COMPAT_VERSION); return 0; @@ -696,6 +697,5 @@ MODULE_LICENSE("GPL"); MODULE_AUTHOR(BATADV_DRIVER_AUTHOR); MODULE_DESCRIPTION(BATADV_DRIVER_DESC); -MODULE_VERSION(BATADV_SOURCE_VERSION); MODULE_ALIAS_RTNL_LINK("batadv"); MODULE_ALIAS_GENL_FAMILY(BATADV_NL_NAME); diff --git a/net/batman-adv/main.h b/net/batman-adv/main.h index 465d26d8..f68fc8b7 100644 --- a/net/batman-adv/main.h +++ b/net/batman-adv/main.h @@ -12,10 +12,6 @@ #define BATADV_DRIVER_DESC "B.A.T.M.A.N. advanced" #define BATADV_DRIVER_DEVICE "batman-adv" -#ifndef BATADV_SOURCE_VERSION -#define BATADV_SOURCE_VERSION "2026.2" -#endif - /* B.A.T.M.A.N. parameters */ #define BATADV_TQ_MAX_VALUE 255 diff --git a/net/batman-adv/mesh-interface.c b/net/batman-adv/mesh-interface.c index 50c26037..ad906780 100644 --- a/net/batman-adv/mesh-interface.c +++ b/net/batman-adv/mesh-interface.c @@ -49,6 +49,7 @@ #include "multicast.h" #include "send.h" #include "translation-table.h" +#include "version.h" /** * batadv_skb_head_push() - Increase header size and move (push) head pointer @@ -891,7 +892,7 @@ static void batadv_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) { strscpy(info->driver, "B.A.T.M.A.N. advanced", sizeof(info->driver)); - strscpy(info->version, BATADV_SOURCE_VERSION, sizeof(info->version)); + strscpy(info->version, batadv_version, sizeof(info->version)); strscpy(info->fw_version, "N/A", sizeof(info->fw_version)); strscpy(info->bus_info, "batman", sizeof(info->bus_info)); } diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c index e52f44e7..b20c340d 100644 --- a/net/batman-adv/netlink.c +++ b/net/batman-adv/netlink.c @@ -47,6 +47,7 @@ #include "originator.h" #include "tp_meter.h" #include "translation-table.h" +#include "version.h" struct genl_family batadv_netlink_family; @@ -233,7 +234,7 @@ static int batadv_netlink_mesh_fill(struct sk_buff *msg, if (!hdr) return -ENOBUFS; - if (nla_put_string(msg, BATADV_ATTR_VERSION, BATADV_SOURCE_VERSION) || + if (nla_put_string(msg, BATADV_ATTR_VERSION, batadv_version) || nla_put_string(msg, BATADV_ATTR_ALGO_NAME, bat_priv->algo_ops->name) || nla_put_u32(msg, BATADV_ATTR_MESH_IFINDEX, mesh_iface->ifindex) || diff --git a/net/batman-adv/version.c b/net/batman-adv/version.c new file mode 100644 index 00000000..33a0962b --- /dev/null +++ b/net/batman-adv/version.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include "version.h" + +#include <generated/utsrelease.h> +#include <linux/module.h> + +#ifdef CONFIG_BATMAN_ADV_IN_TREE // UGLY_HACK_NEW +#define BATADV_SOURCE_VERSION "linux-" UTS_RELEASE +#else // UGLY_HACK_OLD + +/* prefer version provided by Makefile */ +#ifndef BATADV_SOURCE_VERSION +#define BATADV_SOURCE_VERSION "2026.2" +#endif + +#endif // UGLY_HACK_STOP + +const char *batadv_version = BATADV_SOURCE_VERSION; + +/* WARNING userspace tools like batctl were relying on + * /sys/module/batman_adv/version to check if the module was loaded. If it + * isn't present, they usually error out before finishing setup of the batadv + * interface. It should be kept until it is unlikely that there are active + * installations of these "broken" versions of these tools with recent kernels. + */ +MODULE_VERSION(BATADV_SOURCE_VERSION); diff --git a/net/batman-adv/version.h b/net/batman-adv/version.h new file mode 100644 index 00000000..d8af91f3 --- /dev/null +++ b/net/batman-adv/version.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#ifndef _NET_BATMAN_ADV_VERSION_H_ +#define _NET_BATMAN_ADV_VERSION_H_ + +extern const char *batadv_version; + +#endif /* _NET_BATMAN_ADV_VERSION_H_ */ --- base-commit: 7700c90cbd12d04b8aabb62fe031ce6b31d6a4d9 change-id: 20260515-no-upstream-version-bumps-ea213a18051a Best regards, -- Sven Eckelmann <[email protected]>