@@ -2018,8 +2018,8 @@ int pm_genpd_init(struct generic_pm_domain *genpd,
2018
2018
2019
2019
mutex_lock (& gpd_list_lock );
2020
2020
list_add (& genpd -> gpd_list_node , & gpd_list );
2021
- genpd_debug_add (genpd );
2022
2021
mutex_unlock (& gpd_list_lock );
2022
+ genpd_debug_add (genpd );
2023
2023
2024
2024
return 0 ;
2025
2025
}
@@ -2206,12 +2206,19 @@ static int genpd_add_provider(struct device_node *np, genpd_xlate_t xlate,
2206
2206
2207
2207
static bool genpd_present (const struct generic_pm_domain * genpd )
2208
2208
{
2209
+ bool ret = false;
2209
2210
const struct generic_pm_domain * gpd ;
2210
2211
2211
- list_for_each_entry (gpd , & gpd_list , gpd_list_node )
2212
- if (gpd == genpd )
2213
- return true;
2214
- return false;
2212
+ mutex_lock (& gpd_list_lock );
2213
+ list_for_each_entry (gpd , & gpd_list , gpd_list_node ) {
2214
+ if (gpd == genpd ) {
2215
+ ret = true;
2216
+ break ;
2217
+ }
2218
+ }
2219
+ mutex_unlock (& gpd_list_lock );
2220
+
2221
+ return ret ;
2215
2222
}
2216
2223
2217
2224
/**
@@ -2222,15 +2229,13 @@ static bool genpd_present(const struct generic_pm_domain *genpd)
2222
2229
int of_genpd_add_provider_simple (struct device_node * np ,
2223
2230
struct generic_pm_domain * genpd )
2224
2231
{
2225
- int ret = - EINVAL ;
2232
+ int ret ;
2226
2233
2227
2234
if (!np || !genpd )
2228
2235
return - EINVAL ;
2229
2236
2230
- mutex_lock (& gpd_list_lock );
2231
-
2232
2237
if (!genpd_present (genpd ))
2233
- goto unlock ;
2238
+ return - EINVAL ;
2234
2239
2235
2240
genpd -> dev .of_node = np ;
2236
2241
@@ -2241,7 +2246,7 @@ int of_genpd_add_provider_simple(struct device_node *np,
2241
2246
if (ret != - EPROBE_DEFER )
2242
2247
dev_err (& genpd -> dev , "Failed to add OPP table: %d\n" ,
2243
2248
ret );
2244
- goto unlock ;
2249
+ return ret ;
2245
2250
}
2246
2251
2247
2252
/*
@@ -2259,16 +2264,13 @@ int of_genpd_add_provider_simple(struct device_node *np,
2259
2264
dev_pm_opp_of_remove_table (& genpd -> dev );
2260
2265
}
2261
2266
2262
- goto unlock ;
2267
+ return ret ;
2263
2268
}
2264
2269
2265
2270
genpd -> provider = & np -> fwnode ;
2266
2271
genpd -> has_provider = true;
2267
2272
2268
- unlock :
2269
- mutex_unlock (& gpd_list_lock );
2270
-
2271
- return ret ;
2273
+ return 0 ;
2272
2274
}
2273
2275
EXPORT_SYMBOL_GPL (of_genpd_add_provider_simple );
2274
2276
@@ -2287,8 +2289,6 @@ int of_genpd_add_provider_onecell(struct device_node *np,
2287
2289
if (!np || !data )
2288
2290
return - EINVAL ;
2289
2291
2290
- mutex_lock (& gpd_list_lock );
2291
-
2292
2292
if (!data -> xlate )
2293
2293
data -> xlate = genpd_xlate_onecell ;
2294
2294
@@ -2328,8 +2328,6 @@ int of_genpd_add_provider_onecell(struct device_node *np,
2328
2328
if (ret < 0 )
2329
2329
goto error ;
2330
2330
2331
- mutex_unlock (& gpd_list_lock );
2332
-
2333
2331
return 0 ;
2334
2332
2335
2333
error :
@@ -2348,8 +2346,6 @@ int of_genpd_add_provider_onecell(struct device_node *np,
2348
2346
}
2349
2347
}
2350
2348
2351
- mutex_unlock (& gpd_list_lock );
2352
-
2353
2349
return ret ;
2354
2350
}
2355
2351
EXPORT_SYMBOL_GPL (of_genpd_add_provider_onecell );
0 commit comments