Verification done with disco-proposed. bind() fails with ETIMEDOUT and stress-ng finishes successfully. --
$ multipass launch --cpus 4 --mem 4G --disk 4G --name lp1851553-d disco $ multipass shell lp1851553-d
$ 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 disco
$ dpkg -s stress-ng | grep ^Version Version: 0.09.57-0ubuntu4
$ uname -rv 5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 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: [17194] dispatching hogs: 2 af-alg stress-ng: info: [17194] 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 17196 <... bind resumed> ) = -1 ETIMEDOUT (Connection timed out) 17196 +++ exited with 0 +++ 17195 +++ exited with 0 +++ 17194 +++ exited with 0 +++
$ dmesg ... [ 289.539191] kmod: loading out-of-tree module taints kernel. [ 289.539292] kmod: module verification failed: signature and/or required key missing - tainting kernel [ 289.539999] hello [ 298.985346] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '17196', (original) return value '10' [ 298.991378] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '17196', (modified) return value '-62' (FIRST PID) return address 'ffffffffbb0c2a8f' -- ensure crypto_larval_lookup() calls crypto_larval_add(). [ 298.994316] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '17195', (original) return value '10' [ 298.998540] down_write(&crypto_alg_sem) in FIRST PID, FIRST CALL. sleep 15 seconds -- wait OTHER PID/__crypto_register_alg() [ 299.000284] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '17195', sleep for 10 seconds (OTHER PID) -- wait FIRST PID/crypto_larval_add()/down_write(&crypto_rwsem) [ 309.219770] security_kernel_module_request() module 'crypto-md4', comm 'stress-ng-af-al', pid '17195', slept for 10 seconds (OTHER PID) [ 309.239352] crypto_alg_tested("md4-generic"), sleep 70 seconds. pid = 17202 -- expire the 60-second timeout of FIRST_PID/crypto_larval_add()/crypto_larval_wait() [ 314.083747] down_write(&crypto_alg_sem) in FIRST PID, FIRST CALL. slept 15 seconds [ 380.387767] crypto_alg_tested("md4-generic"), slept 70 seconds
Verification done with disco-proposed.
bind() fails with ETIMEDOUT and stress-ng finishes successfully.
--
$ multipass launch --cpus 4 --mem 4G --disk 4G --name lp1851553-d disco
$ multipass shell lp1851553-d
$ 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
disco
$ dpkg -s stress-ng | grep ^Version
Version: 0.09.57-0ubuntu4
$ uname -rv
5.0.0-36-generic #39-Ubuntu SMP Tue Nov 12 09:46:06 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: [17194] dispatching hogs: 2 af-alg
stress-ng: info: [17194] 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
17196 <... bind resumed> ) = -1 ETIMEDOUT (Connection timed out)
17196 +++ exited with 0 +++
17195 +++ exited with 0 +++
17194 +++ exited with 0 +++
$ dmesg kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '17196', (original) return value '10' kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '17196', (modified) return value '-62' (FIRST PID) return address 'ffffffffbb0c2a8f' -- ensure crypto_ larval_ lookup( ) calls crypto_ larval_ add(). kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '17195', (original) return value '10' &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 '17195', sleep for 10 seconds (OTHER PID) -- wait FIRST PID/crypto_ larval_ add()/down_ write(& crypto_ rwsem) kernel_ module_ request( ) module 'crypto-md4', comm 'stress-ng-af-al', pid '17195', slept for 10 seconds (OTHER PID) alg_tested( "md4-generic" ), sleep 70 seconds. pid = 17202 -- 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
...
[ 289.539191] kmod: loading out-of-tree module taints kernel.
[ 289.539292] kmod: module verification failed: signature and/or required key missing - tainting kernel
[ 289.539999] hello
[ 298.985346] security_
[ 298.991378] security_
[ 298.994316] security_
[ 298.998540] down_write(
[ 299.000284] security_
[ 309.219770] security_
[ 309.239352] crypto_
[ 314.083747] down_write(
[ 380.387767] crypto_