simple_lmk: Don't block in simple_lmk_mm_freed() on mm_free_lock

When the mm_free_lock write lock is held, it means that reclaim is
either starting or ending, in which case there's nothing that needs to
be done in simple_lmk_mm_freed(). We can use a trylock here instead to
avoid blocking.

Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
fourteen
Sultan Alsawaf 4 years ago committed by Jenna
parent 9bf77d7a45
commit eaa09aa65b
  1. 7
      drivers/android/simple_lmk.c

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0 // SPDX-License-Identifier: GPL-2.0
/* /*
* Copyright (C) 2019-2020 Sultan Alsawaf <sultan@kerneltoast.com>. * Copyright (C) 2019-2021 Sultan Alsawaf <sultan@kerneltoast.com>.
*/ */
#define pr_fmt(fmt) "simple_lmk: " fmt #define pr_fmt(fmt) "simple_lmk: " fmt
@ -267,7 +267,10 @@ void simple_lmk_mm_freed(struct mm_struct *mm)
{ {
int i; int i;
read_lock(&mm_free_lock); /* Nothing to do when reclaim is starting or ending */
if (!read_trylock(&mm_free_lock))
return;
for (i = 0; i < nr_victims; i++) { for (i = 0; i < nr_victims; i++) {
if (victims[i].mm == mm) { if (victims[i].mm == mm) {
victims[i].mm = NULL; victims[i].mm = NULL;

Loading…
Cancel
Save