Verification done with eoan-proposed. bind() fails with ETIMEDOUT and stress-ng finishes successfully. --
$ multipass launch --cpus 4 --mem 4G --disk 4G --name lp1851553-e eoan $ multipass shell lp1851553-e
$ echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs)-proposed universe" | sudo tee /etc/apt/sources.list.d/proposed.list $ sudo apt update $ sudo apt install -y stress-ng $ sudo rm /etc/apt/sources.list.d/proposed.list
$ sudo apt install -y gcc make libelf-dev linux-headers-$(uname -r)
$ wget https://bugs.launchpad.net/ubuntu/+source/stress-ng/+bug/1851553/+attachment/5308837/+files/kmod.c
$ cat <<"EOF" | sed 's/^TAB/\t/' >Makefile obj-m := kmod.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: TAB$(MAKE) -C $(KDIR) M=$(PWD) modules clean: TAB$(MAKE) -C $(KDIR) M=$(PWD) clean EOF
$ make
$ lsb_release -cs eoan
$ dpkg -s stress-ng | grep ^Version Version: 0.10.07-1ubuntu2
$ uname -rv 5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019
$ stress-ng --af-alg 2 -t 20
$ sudo modprobe -r md4 $ sudo insmod kmod.ko
$ strace -e bind -o stress-ng_strace_bind.proposed_kmod -f -- stress-ng --af-alg 2 -t 120 stress-ng: info: [1407] dispatching hogs: 2 af-alg stress-ng: info: [1407] successful run completed in 120.00s (2 mins, 0.00 secs)
$ sudo rmmod kmod
$ grep -e ETIMEDOUT -e 'exited with' stress-ng_strace_bind.proposed_kmod 1409 <... bind resumed> ) = -1 ETIMEDOUT (Connection timed out) 1409 +++ exited with 0 +++ 1408 +++ exited with 0 +++ 1407 +++ exited with 0 +++
$ dmesg ... [ 365.484879] kmod: loading out-of-tree module taints kernel. [ 365.484937] kmod: module verification failed: signature and/or required key missing - tainting kernel [ 365.485334] hello [ 370.473296] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '1409', (original) return value '10' [ 370.482348] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', (original) return value '10' [ 370.484286] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '1409', (modified) return value '-62' (FIRST PID) return address 'ffffffffb66c709a' -- ensure crypto_larval_lookup() calls crypto_larval_add(). [ 370.490041] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', sleep for 10 seconds (OTHER PID) -- wait FIRST PID/crypto_larval_add()/down_write(&crypto_rwsem) [ 370.507659] down_write(&crypto_alg_sem) in FIRST PID, FIRST CALL. sleep 15 seconds -- wait OTHER PID/__crypto_register_alg() [ 380.583129] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', slept for 10 seconds (OTHER PID) [ 380.618773] crypto_alg_tested("md4-generic"), sleep 70 seconds. pid = 1413 -- expire the 60-second timeout of FIRST_PID/crypto_larval_add()/crypto_larval_wait() [ 385.703145] down_write(&crypto_alg_sem) in FIRST PID, FIRST CALL. slept 15 seconds [ 452.007129] crypto_alg_tested("md4-generic"), slept 70 seconds [ 509.268392] bye
Verification done with eoan-proposed.
bind() fails with ETIMEDOUT and stress-ng finishes successfully.
--
$ multipass launch --cpus 4 --mem 4G --disk 4G --name lp1851553-e eoan
$ multipass shell lp1851553-e
$ echo "deb http:// archive. ubuntu. com/ubuntu $(lsb_release -cs)-proposed universe" | sudo tee /etc/apt/ sources. list.d/ proposed. list sources. list.d/ proposed. list
$ sudo apt update
$ sudo apt install -y stress-ng
$ sudo rm /etc/apt/
$ sudo apt install -y gcc make libelf-dev linux-headers- $(uname -r)
$ wget https:/ /bugs.launchpad .net/ubuntu/ +source/ stress- ng/+bug/ 1851553/ +attachment/ 5308837/ +files/ kmod.c
$ cat <<"EOF" | sed 's/^TAB/\t/' >Makefile $(shell uname -r)/build
obj-m := kmod.o
KDIR := /lib/modules/
PWD := $(shell pwd)
default:
TAB$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
TAB$(MAKE) -C $(KDIR) M=$(PWD) clean
EOF
$ make
$ lsb_release -cs
eoan
$ dpkg -s stress-ng | grep ^Version
Version: 0.10.07-1ubuntu2
$ uname -rv
5.3.0-24-generic #26-Ubuntu SMP Thu Nov 14 01:33:18 UTC 2019
$ stress-ng --af-alg 2 -t 20
$ sudo modprobe -r md4
$ sudo insmod kmod.ko
$ strace -e bind -o stress- ng_strace_ bind.proposed_ kmod -f -- stress-ng --af-alg 2 -t 120
stress-ng: info: [1407] dispatching hogs: 2 af-alg
stress-ng: info: [1407] successful run completed in 120.00s (2 mins, 0.00 secs)
$ sudo rmmod kmod
$ grep -e ETIMEDOUT -e 'exited with' stress- ng_strace_ bind.proposed_ kmod
1409 <... bind resumed> ) = -1 ETIMEDOUT (Connection timed out)
1409 +++ exited with 0 +++
1408 +++ exited with 0 +++
1407 +++ exited with 0 +++
$ dmesg kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '1409', (original) return value '10' kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', (original) return value '10' kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '1409', (modified) return value '-62' (FIRST PID) return address 'ffffffffb66c709a' -- ensure crypto_ larval_ lookup( ) calls crypto_ larval_ add(). kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', sleep for 10 seconds (OTHER PID) -- wait FIRST PID/crypto_ larval_ add()/down_ write(& crypto_ rwsem) &crypto_ alg_sem) in FIRST PID, FIRST CALL. sleep 15 seconds -- wait OTHER PID/__crypto_ register_ alg() kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '1408', slept for 10 seconds (OTHER PID) alg_tested( "md4-generic" ), sleep 70 seconds. pid = 1413 -- expire the 60-second timeout of FIRST_PID/ crypto_ larval_ add()/crypto_ larval_ wait() &crypto_ alg_sem) in FIRST PID, FIRST CALL. slept 15 seconds alg_tested( "md4-generic" ), slept 70 seconds
...
[ 365.484879] kmod: loading out-of-tree module taints kernel.
[ 365.484937] kmod: module verification failed: signature and/or required key missing - tainting kernel
[ 365.485334] hello
[ 370.473296] security_
[ 370.482348] security_
[ 370.484286] security_
[ 370.490041] security_
[ 370.507659] down_write(
[ 380.583129] security_
[ 380.618773] crypto_
[ 385.703145] down_write(
[ 452.007129] crypto_
[ 509.268392] bye