On Wed, Mar 27, 2019 at 05:29:57PM +0000, Catalin Marinas wrote: > On Wed, Mar 27, 2019 at 09:44:32AM +0100, Michal Hocko wrote: > > As long as there is an implicit __GFP_NOFAIL then kmemleak is simply > > broken no matter what other gfp flags you play with. Has anybody looked > > at some sort of preallocation where gfpflags_allow_blocking context > > allocate objects into a pool that non-sleeping allocations can eat from? > > Quick attempt below and it needs some more testing (pretty random pick > of the EMERGENCY_POOL_SIZE value). Also, with __GFP_NOFAIL removed, are > the other flags safe or we should trim them further? Why not use mempool? > #define gfp_kmemleak_mask(gfp) (((gfp) & (GFP_KERNEL | GFP_ATOMIC)) | \ > __GFP_NORETRY | __GFP_NOMEMALLOC | \ > - __GFP_NOWARN | __GFP_NOFAIL) > + __GFP_NOWARN) Why GFP_NORETRY? And if I have specified one of the other retry policies in my gfp flags, you should presumably clear that off before setting GFP_NORETRY.