Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v3.5.7 doesn't build with the latest Ubuntu Xenial LTS kernel #283

Closed
toreanderson opened this issue Apr 20, 2019 · 3 comments

Comments

Projects
None yet
2 participants
@toreanderson
Copy link
Contributor

commented Apr 20, 2019

It seems that Ubuntu have backported some kernel change that breaks compilation of the stateful kernel module in their latest 4.4.0-145-generic kernel package. It builds fine with 4.4.0-143-generic (there is no 4.4.0-144-generic in the repo, fwiw).

It would be very nice with a 3.5.8 release to address this (perhaps with c4629dd included as well).

$ podman run -it --rm ubuntu:xenial
root@c9fe18071b25:/# exec > /dev/null
root@c9fe18071b25:/# apt-get update
root@c9fe18071b25:/# apt-get -y install gcc git linux-headers-4.4.0-{143,145}-generic make 
debconf: delaying package configuration, since apt-utils is not installed
root@c9fe18071b25:/# git clone https://github.com/NICMx/Jool 
Cloning into 'Jool'...
remote: Enumerating objects: 294, done.
remote: Counting objects: 100% (294/294), done.
remote: Compressing objects: 100% (223/223), done.
remote: Total 24341 (delta 121), reused 178 (delta 70), pack-reused 24047
Receiving objects: 100% (24341/24341), 10.84 MiB | 2.20 MiB/s, done.
Resolving deltas: 100% (16274/16274), done.
Checking connectivity... done.
root@c9fe18071b25:/# cd Jool/
root@c9fe18071b25:/Jool# git checkout v3.5.7
Note: checking out 'v3.5.7'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

HEAD is now at 31146e3... Protocolary updates for release 3.5.7
root@c9fe18071b25:/Jool# make -C /lib/modules/4.4.0-143-generic/build SUBDIRS=$PWD/mod/stateful modules
root@c9fe18071b25:/Jool# git clean -fxd
root@c9fe18071b25:/Jool# make -C /lib/modules/4.4.0-145-generic/build SUBDIRS=$PWD/mod/stateful modules
/Jool/mod/stateful/fragment_db.c: In function 'inet6_hash_frag':
/Jool/mod/stateful/fragment_db.c:96:14: error: 'INETFRAGS_HASHSZ' undeclared (first use in this function)
  return c & (INETFRAGS_HASHSZ - 1);
              ^
/Jool/mod/stateful/fragment_db.c:96:14: note: each undeclared identifier is reported only once for each function it appears in
/Jool/mod/stateful/fragment_db.c:97:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[1]: *** [/Jool/mod/stateful/fragment_db.o] Error 1
make: *** [_module_/Jool/mod/stateful] Error 2
@toreanderson

This comment has been minimized.

Copy link
Contributor Author

commented Apr 20, 2019

It seems that de79193 is the missing piece.

After doing git cherry-pick -n de791931d94e972c36bb3c102a9cadab5230c285 on top of the v3.5.7 tag, it builds fine against 4.4.0-145-generic. I haven't tested that it actually works yet, though.

@ydahhrk

This comment has been minimized.

Copy link
Member

commented Apr 20, 2019

Guess that macro was meant to be private.

Workaround: Replace INETFRAGS_HASHSZ with 1024.

Edit: Oh, yeah. Or you can cherrypick that commit. Or you can just make inet6_hash_frag() return 0 or whatever. Truth is, that code is unreachable in kernels 3.13+ so it doesn't matter.

I'll patch it on Monday.

ydahhrk added a commit that referenced this issue Apr 22, 2019

Remove usage of the INETFRAGS_HASHSZ macro
So apparently, Ubuntu (or rather, Debian?) is now pulling off the RHEL
crap of claiming to be using one kernel, while actually using API from
another.

In all fairness though, INETFRAGS_HASHSZ was probably always meant
to be private. (It's hard to tell really.)

As a side effect, Jool 3.5 now compiles (and runs fine) in kernels 4.17
and 4.18.

Fixes #283.

@ydahhrk ydahhrk added this to the 3.5.8 milestone Apr 26, 2019

@ydahhrk

This comment has been minimized.

Copy link
Member

commented Apr 26, 2019

v3.5.8 released; closing bug.

@ydahhrk ydahhrk closed this Apr 26, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.