Because `Entries` is already filtered in `all_given_entries`, `Matches` is an empty list and thus no locks are released here. The following crashes because `concurreny_limit_reached` continues to return `true` when it shouldn't:

```erlang
locks_never_release() ->
    catch exit(whereis(riak_core_bg_manager), kill),
    catch exit(whereis(riak_core_table_manager), kill),
    timer:sleep(100),
    {ok, S1} = riak_core_table_manager:start_link([{background_mgr_table, [protected, named_table, bag]}]),
    {ok, S2} = riak_core_bg_manager:start_link(),
    unlink(S1),
    unlink(S2),
    riak_core_bg_manager:set_concurrency_limit(a, 1),
    spawn(fun() ->
                  ok = riak_core_bg_manager:get_lock(a)
          end),
    timer:sleep(2000),
    false = riak_core_bg_manager:concurrency_limit_reached(a),
    exit(whereis(riak_core_bg_manager), kill),
    exit(whereis(riak_core_table_manager), kill).
```