|
@@ -1014,7 +1014,8 @@ ttm_dma_pool_shrink_scan(struct shrinker *shrink, struct shrink_control *sc)
|
|
|
if (list_empty(&_manager->pools))
|
|
|
return SHRINK_STOP;
|
|
|
|
|
|
- mutex_lock(&_manager->lock);
|
|
|
+ if (!mutex_trylock(&_manager->lock))
|
|
|
+ return SHRINK_STOP;
|
|
|
if (!_manager->npools)
|
|
|
goto out;
|
|
|
pool_offset = ++start_pool % _manager->npools;
|
|
@@ -1047,7 +1048,8 @@ ttm_dma_pool_shrink_count(struct shrinker *shrink, struct shrink_control *sc)
|
|
|
struct device_pools *p;
|
|
|
unsigned long count = 0;
|
|
|
|
|
|
- mutex_lock(&_manager->lock);
|
|
|
+ if (!mutex_trylock(&_manager->lock))
|
|
|
+ return 0;
|
|
|
list_for_each_entry(p, &_manager->pools, pools)
|
|
|
count += p->pool->npages_free;
|
|
|
mutex_unlock(&_manager->lock);
|