On 06.06.2019 17:40, Dmitry Vyukov wrote: > On Thu, Jun 6, 2019 at 3:43 PM Kirill Tkhai <ktkhai@xxxxxxxxxxxxx> wrote: >> >> On 06.06.2019 16:13, J. Bruce Fields wrote: >>> On Thu, Jun 06, 2019 at 10:47:43AM +0300, Kirill Tkhai wrote: >>>> This may be connected with that shrinker unregistering is forgotten on error path. >>> >>> I was wondering about that too. Seems like it would be hard to hit >>> reproduceably though: one of the later allocations would have to fail, >>> then later you'd have to create another namespace and this time have a >>> later module's init fail. >> >> Yes, it's had to bump into this in real life. >> >> AFAIU, syzbot triggers such the problem by using fault-injections >> on allocation places should_failslab()->should_fail(). It's possible >> to configure a specific slab, so the allocations will fail with >> requested probability. > > No fault injection was involved in triggering of this bug. > Fault injection is clearly visible in console log as "INJECTING > FAILURE at this stack track" splats and also for bugs with repros it > would be noted in the syzkaller repro as "fault_call": N. So somehow > this bug was triggered as is. > > But overall syzkaller can do better then the old probabilistic > injection. The probabilistic injection tend to both under-test what we > want to test and also crash some system services. syzkaller uses the > new "systematic fault injection" that allows to test specifically each > failure site separately in each syscall separately. Oho! Interesting. > All kernel testing systems should use it. Also in couple with KASAN, > KMEMLEAK, LOCKDEP. It's indispensable in finding kernel bugs.