By code inspection, it is possible to see that this problem can also happen in RHEL7-rt.
Created attachment 1527249 [details]
padata: Make padata_do_serial() use get_cpu_light()
We hit the following BUG in RHEL8:
BUG: scheduling while atomic: kworker/1:1/24117/0x00000002
Preemption disabled at:
CPU: 1 PID: 24117 Comm: kworker/1:1 Not tainted 4.18.0-56.rt9.107.el8.x86_64 #1
Hardware name: HPE ProLiant DL380 Gen10/ProLiant DL380 Gen10, BIOS U30 11/14/2017
Workqueue: pencrypt padata_parallel_worker
and the cause is a spin_lock() taken inside a get_cpu() section.
Convert the get/put_cpu to get/put_cpu_light to fix the BUG while reducing the
As we also have this code on RHEL7, we also need this patch. This patch
differs from RHEL8 one because there is only one get_cpu() usage.
Signed-off-by: Daniel Bristot de Oliveira <firstname.lastname@example.org>
[Tiefu Li on 15 May 2019]
I have done two different ways to verify the bug.
Here is the first approach:
Step 1.cd /mnt/tests/kernel/distribution/ltp/generic/ltp-full-20190115/testcases/kernel/crypto
Step 2. Run the test :./pcrypt_aead01
The second approach is:
Step 1.cd /mnt/tests/kernel/distribution/ltp/generic/
Step 2. FILTERTESTS="cve-2017-18075" make run
Both of the testing was conducted on 3.10.0-999.rt56.956.el7.x86_64 and kernel-rt-3.10.0-1010.rt56.968.el7.x86_64 respectively.
I haven't seen any issue therefore I mark the bug as verified.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.