Balbir Singh wrote: > Pavel Emelianov wrote: >>> +static inline bool res_counter_check_under_limit(struct res_counter *cnt) >>> +{ >>> + bool ret; >>> + unsigned long flags; >>> + >>> + spin_lock_irqsave(&cnt->lock, flags); >>> + ret = res_counter_limit_check_locked(cnt); >> We don't have to take the lock for such a check. >> > > This check without the lock could be racy and return incorrect > results -- leading to OOM. Maybe. Nevertheless, if we do not trust the return value of try_to_free_pages() then the code should probably look like while (1) { if (res_counter_charge() == 0) break; did_progress = try_to_free_pages(); if (res_counter_charge() == 0) break; if (!did_progress) out_of_memory(); } But in any case we must know for sure was at least one page freed or not... Thanks, Pavel _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers