Thread (9 messages) 9 messages, 3 authors, 2016-12-19

[bug report v4.8] fs/locks.c: kernel oops during posix lock stress test

From: Ming Lei <hidden>
Date: 2016-11-29 01:14:19
Also in: linux-fsdevel, lkml

Hi Jeff,

On Mon, Nov 28, 2016 at 9:40 PM, Jeff Layton [off-list ref] wrote:
On Mon, 2016-11-28 at 11:10 +0800, Ming Lei wrote:
quoted
Hi Guys,

When I run stress-ng via the following steps on one ARM64 dual
socket system(Cavium Thunder), the kernel oops[1] can often be
triggered after running the stress test for several hours(sometimes
it may take longer):

- git clone git://kernel.ubuntu.com/cking/stress-ng.git
- apply the attachment patch which just makes the posix file
lock stress test more aggressive
- run the test via '~/git/stress-ng$./stress-ng --lockf 128 --aggressive'


From the oops log, looks one garbage file_lock node is got
from the linked list of 'ctx->flc_posix' when the issue happens.

BTW, the issue isn't observed on single socket Cavium Thunder yet,
and the same issue can be seen on Ubuntu Xenial(v4.4 based kernel)
too.

Thanks,
Ming
Some questions just for clarification:

- I assume this is being run on a local fs of some sort? ext4 or xfs or
something?
Yes, I just tested it on local ext4, and not test it on other filesystems yet.
- have you seen this on any other arch, besides ARM?
I run the same tests on x86 before, and not see the issue.
The file locking code does do some lockless checking to see whether the
i_flctx is even present and whether the list is empty in
locks_remove_posix. It's possible we have some barrier problems there,
but I don't quite see how that would cause us to have a corrupt lock on
the flc_posix list.
Yeah, I looked at the function of posix_lock_inode(), seems both add and
remove are protected by the lock.

Thanks,
Ming
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help