Hello Vasily,
On 12/23/21 08:21, Vasily Averin wrote:
I would prefer to release memory ASAP if it's possible. What do you think about this change? --- a/mm/util.c +++ b/mm/util.c @@ -614,9 +614,12 @@ EXPORT_SYMBOL(kvmalloc_node); */ void kvfree(const void *addr) {
if (is_vmalloc_addr(addr))vfree(addr);else
if (is_vmalloc_addr(addr)) {if (in_atomic())vfree_atomic();elsevfree(addr); } EXPORT_SYMBOL(kvfree);} else kfree(addr);
Unfortunately this cannot work:
/*
- Are we running in atomic context? WARNING: this macro cannot
 - always detect atomic context; in particular, it cannot know about
 - held spinlocks in non-preemptible kernels. Thus it should not be
 - used in the general case to determine whether sleeping is possible.
 - Do not use in_atomic() in driver code.
 */ #define in_atomic() (preempt_count() != 0)
--
Manfred