diff --git a/drivers/staging/android/ashmem.c b/drivers/staging/android/ashmem.c index 16c411cbe5b5ff1a9c8d1aac8ad504b6ee04d530..4f13907543e3de208b6f84bb476b4aab0f046c88 100644 --- a/drivers/staging/android/ashmem.c +++ b/drivers/staging/android/ashmem.c @@ -365,7 +365,9 @@ static int ashmem_shrink(struct shrinker *s, struct shrink_control *sc) if (!sc->nr_to_scan) return lru_count; - mutex_lock(&ashmem_mutex); + if (!mutex_trylock(&ashmem_mutex)) + return -1; + list_for_each_entry_safe(range, next, &ashmem_lru_list, lru) { struct inode *inode = range->asma->file->f_dentry->d_inode; loff_t start = range->pgstart * PAGE_SIZE;