@@ -586,9 +586,8 @@ static void io_zcrx_return_niov_freelist(struct net_iov *niov)
586586{
587587 struct io_zcrx_area * area = io_zcrx_iov_to_area (niov );
588588
589- spin_lock_bh (& area -> freelist_lock );
589+ guard ( spinlock_bh ) (& area -> freelist_lock );
590590 area -> freelist [area -> free_count ++ ] = net_iov_idx (niov );
591- spin_unlock_bh (& area -> freelist_lock );
592591}
593592
594593static void io_zcrx_return_niov (struct net_iov * niov )
@@ -1053,7 +1052,8 @@ static void io_zcrx_refill_slow(struct page_pool *pp, struct io_zcrx_ifq *ifq)
10531052{
10541053 struct io_zcrx_area * area = ifq -> area ;
10551054
1056- spin_lock_bh (& area -> freelist_lock );
1055+ guard (spinlock_bh )(& area -> freelist_lock );
1056+
10571057 while (area -> free_count && pp -> alloc .count < PP_ALLOC_CACHE_REFILL ) {
10581058 struct net_iov * niov = __io_zcrx_get_free_niov (area );
10591059 netmem_ref netmem = net_iov_to_netmem (niov );
@@ -1062,7 +1062,6 @@ static void io_zcrx_refill_slow(struct page_pool *pp, struct io_zcrx_ifq *ifq)
10621062 io_zcrx_sync_for_device (pp , niov );
10631063 net_mp_netmem_place_in_cache (pp , netmem );
10641064 }
1065- spin_unlock_bh (& area -> freelist_lock );
10661065}
10671066
10681067static netmem_ref io_pp_zc_alloc_netmems (struct page_pool * pp , gfp_t gfp )
@@ -1285,10 +1284,10 @@ static struct net_iov *io_alloc_fallback_niov(struct io_zcrx_ifq *ifq)
12851284 if (area -> mem .is_dmabuf )
12861285 return NULL ;
12871286
1288- spin_lock_bh ( & area -> freelist_lock );
1289- if (area -> free_count )
1290- niov = __io_zcrx_get_free_niov (area );
1291- spin_unlock_bh ( & area -> freelist_lock );
1287+ scoped_guard ( spinlock_bh , & area -> freelist_lock ) {
1288+ if (area -> free_count )
1289+ niov = __io_zcrx_get_free_niov (area );
1290+ }
12921291
12931292 if (niov )
12941293 page_pool_fragment_netmem (net_iov_to_netmem (niov ), 1 );
0 commit comments