On Sat, Feb 6, 2021 at 12:50 PM Sasha Levin <sashal@xxxxxxxxxx> wrote: > > SUBLEVEL only has 8 bits of space, which means that we'll overflow it > once it reaches 256. > > Few of the stable branches will imminently overflow SUBLEVEL while > there's no risk of overflowing VERSION. > > Thus, give SUBLEVEL 8 more bits which will be stolen from VERSION, this > should create a better balance between the different version numbers we > use. > > We can't however use the original KERNEL_VERSION and LINUX_VERSION_CODE > as userspace has created ABI dependency on their structure, and we risk > breaking this userspace by modifying the layout of the version integers. > > Cc: stable@xxxxxxxxxx > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > Reviewed-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > --- > Makefile | 8 +++++++- > drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 ++-- > drivers/usb/core/hcd.c | 4 ++-- > drivers/usb/gadget/udc/aspeed-vhub/hub.c | 4 ++-- > include/linux/usb/composite.h | 4 ++-- > kernel/sys.c | 2 +- > tools/perf/tests/bpf-script-example.c | 2 +- > tools/perf/tests/bpf-script-test-kbuild.c | 2 +- > tools/perf/tests/bpf-script-test-prologue.c | 2 +- > 9 files changed, 19 insertions(+), 13 deletions(-) > > diff --git a/Makefile b/Makefile > index 157be50c691e5..2177c548e4c24 100644 > --- a/Makefile > +++ b/Makefile > @@ -1266,7 +1266,13 @@ define filechk_version.h > expr $(VERSION) \* 65536 + 0$(PATCHLEVEL) \* 256 + $(SUBLEVEL)); \ > fi; \ > echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + \ > - ((c) > 255 ? 255 : (c)))' > + ((c) > 255 ? 255 : (c)))'; \ > + echo \#define LINUX_VERSION_CODE2 $(shell \ > + expr $(VERSION) \* 16777216 + 0$(PATCHLEVEL) \* 65536 + 0$(SUBLEVEL)); \ Is this needed? No one in this patch uses LINUX_VERSION_CODE2. The in-kernel code can use LINUX_VERSION_MAJOR/PATCHLEVEL/SUBLEVEL directly. Userspace does not need LINUX_VERSION_CODE2 either. Your comment in 2/3 states that userspace only decodes MAJOR and PATCHLEVEL fields, so LINUX_VERSION_CODE will still do well. > index ab4b98b3165db..a56bf381335e9 100644 > --- a/tools/perf/tests/bpf-script-example.c > +++ b/tools/perf/tests/bpf-script-example.c > @@ -5,7 +5,7 @@ > */ > #ifndef LINUX_VERSION_CODE > # error Need LINUX_VERSION_CODE > -# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' > +# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x4020000" into llvm section of ~/.perfconfig' Is this change needed? > #endif > #define BPF_ANY 0 > #define BPF_MAP_TYPE_ARRAY 2 > diff --git a/tools/perf/tests/bpf-script-test-kbuild.c b/tools/perf/tests/bpf-script-test-kbuild.c > index 219673aa278fb..21663295d5b5a 100644 > --- a/tools/perf/tests/bpf-script-test-kbuild.c > +++ b/tools/perf/tests/bpf-script-test-kbuild.c > @@ -5,7 +5,7 @@ > */ > #ifndef LINUX_VERSION_CODE > # error Need LINUX_VERSION_CODE > -# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' > +# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x4020000" into llvm section of ~/.perfconfig' > #endif > #define SEC(NAME) __attribute__((section(NAME), used)) > > diff --git a/tools/perf/tests/bpf-script-test-prologue.c b/tools/perf/tests/bpf-script-test-prologue.c > index bd83d364cf30d..8db19e70813cc 100644 > --- a/tools/perf/tests/bpf-script-test-prologue.c > +++ b/tools/perf/tests/bpf-script-test-prologue.c > @@ -5,7 +5,7 @@ > */ > #ifndef LINUX_VERSION_CODE > # error Need LINUX_VERSION_CODE > -# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x40200" into llvm section of ~/.perfconfig' > +# error Example: for 4.2 kernel, put 'clang-opt="-DLINUX_VERSION_CODE=0x4020000" into llvm section of ~/.perfconfig' > #endif > #define SEC(NAME) __attribute__((section(NAME), used)) > > -- > 2.27.0 > -- Best Regards Masahiro Yamada