> We emit a debug warning but dont crash, so all should be fine and > the culprits can then be fixed, right?

... rewind ... :-)

Ok so, no, the culprit cannot be all fixed in a satifactory way.

The main reason is that I believe it's not "right" to have every callerof slab around know whether GFP_KERNEL is good to go or it should getinto GFP_NOWAIT. This depends on many factors (among others us movingthings around more), and is not actually a good solution for thing thatcan be called both at boot and later, such as get_vm_area().

I really think we are looking for trouble (and a lot of hidden bugs) bytrying to "fix" all callers, in addition to making some code likevmalloc() more failure prone because it's unconditionally changed fromGFP_KERNEL to GFP_NOWAIT.

It seems a lot more reasonably to me to have sl*b naturally degrade toNOWAIT when it's too early to enable interrupts.

In addition, my proposal of having bits to mask off gfp will also beuseful in fixing similar issues with suspend/resume vs. GFP_NOIO whichshould really become implicit when devices start becoming suspended.