Comment 21 for bug 1851553

Revision history for this message
Mauricio Faria de Oliveira (mfo) wrote :

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