22
22
#include <linux/irq_sim.h>
23
23
#include <linux/kernel.h>
24
24
#include <linux/list.h>
25
+ #include <linux/lockdep.h>
25
26
#include <linux/minmax.h>
26
27
#include <linux/mod_devicetable.h>
27
28
#include <linux/module.h>
@@ -697,8 +698,10 @@ static struct gpio_sim_device *gpio_sim_hog_get_device(struct gpio_sim_hog *hog)
697
698
return gpio_sim_line_get_device (line );
698
699
}
699
700
700
- static bool gpio_sim_device_is_live_unlocked (struct gpio_sim_device * dev )
701
+ static bool gpio_sim_device_is_live (struct gpio_sim_device * dev )
701
702
{
703
+ lockdep_assert_held (& dev -> lock );
704
+
702
705
return !!dev -> pdev ;
703
706
}
704
707
@@ -737,7 +740,7 @@ gpio_sim_device_config_live_show(struct config_item *item, char *page)
737
740
bool live ;
738
741
739
742
scoped_guard (mutex , & dev -> lock )
740
- live = gpio_sim_device_is_live_unlocked (dev );
743
+ live = gpio_sim_device_is_live (dev );
741
744
742
745
return sprintf (page , "%c\n" , live ? '1' : '0' );
743
746
}
@@ -926,14 +929,16 @@ static bool gpio_sim_bank_labels_non_unique(struct gpio_sim_device *dev)
926
929
return false;
927
930
}
928
931
929
- static int gpio_sim_device_activate_unlocked (struct gpio_sim_device * dev )
932
+ static int gpio_sim_device_activate (struct gpio_sim_device * dev )
930
933
{
931
934
struct platform_device_info pdevinfo ;
932
935
struct fwnode_handle * swnode ;
933
936
struct platform_device * pdev ;
934
937
struct gpio_sim_bank * bank ;
935
938
int ret ;
936
939
940
+ lockdep_assert_held (& dev -> lock );
941
+
937
942
if (list_empty (& dev -> bank_list ))
938
943
return - ENODATA ;
939
944
@@ -998,10 +1003,12 @@ static int gpio_sim_device_activate_unlocked(struct gpio_sim_device *dev)
998
1003
return 0 ;
999
1004
}
1000
1005
1001
- static void gpio_sim_device_deactivate_unlocked (struct gpio_sim_device * dev )
1006
+ static void gpio_sim_device_deactivate (struct gpio_sim_device * dev )
1002
1007
{
1003
1008
struct fwnode_handle * swnode ;
1004
1009
1010
+ lockdep_assert_held (& dev -> lock );
1011
+
1005
1012
swnode = dev_fwnode (& dev -> pdev -> dev );
1006
1013
platform_device_unregister (dev -> pdev );
1007
1014
gpio_sim_remove_hogs (dev );
@@ -1023,12 +1030,12 @@ gpio_sim_device_config_live_store(struct config_item *item,
1023
1030
1024
1031
guard (mutex )(& dev -> lock );
1025
1032
1026
- if (live == gpio_sim_device_is_live_unlocked (dev ))
1033
+ if (live == gpio_sim_device_is_live (dev ))
1027
1034
ret = - EPERM ;
1028
1035
else if (live )
1029
- ret = gpio_sim_device_activate_unlocked (dev );
1036
+ ret = gpio_sim_device_activate (dev );
1030
1037
else
1031
- gpio_sim_device_deactivate_unlocked (dev );
1038
+ gpio_sim_device_deactivate (dev );
1032
1039
1033
1040
return ret ?: count ;
1034
1041
}
@@ -1069,7 +1076,7 @@ static ssize_t gpio_sim_bank_config_chip_name_show(struct config_item *item,
1069
1076
1070
1077
guard (mutex )(& dev -> lock );
1071
1078
1072
- if (gpio_sim_device_is_live_unlocked (dev ))
1079
+ if (gpio_sim_device_is_live (dev ))
1073
1080
return device_for_each_child (& dev -> pdev -> dev , & ctx ,
1074
1081
gpio_sim_emit_chip_name );
1075
1082
@@ -1098,7 +1105,7 @@ static ssize_t gpio_sim_bank_config_label_store(struct config_item *item,
1098
1105
1099
1106
guard (mutex )(& dev -> lock );
1100
1107
1101
- if (gpio_sim_device_is_live_unlocked (dev ))
1108
+ if (gpio_sim_device_is_live (dev ))
1102
1109
return - EBUSY ;
1103
1110
1104
1111
trimmed = gpio_sim_strdup_trimmed (page , count );
@@ -1142,7 +1149,7 @@ gpio_sim_bank_config_num_lines_store(struct config_item *item,
1142
1149
1143
1150
guard (mutex )(& dev -> lock );
1144
1151
1145
- if (gpio_sim_device_is_live_unlocked (dev ))
1152
+ if (gpio_sim_device_is_live (dev ))
1146
1153
return - EBUSY ;
1147
1154
1148
1155
bank -> num_lines = num_lines ;
@@ -1179,7 +1186,7 @@ static ssize_t gpio_sim_line_config_name_store(struct config_item *item,
1179
1186
1180
1187
guard (mutex )(& dev -> lock );
1181
1188
1182
- if (gpio_sim_device_is_live_unlocked (dev ))
1189
+ if (gpio_sim_device_is_live (dev ))
1183
1190
return - EBUSY ;
1184
1191
1185
1192
trimmed = gpio_sim_strdup_trimmed (page , count );
@@ -1219,7 +1226,7 @@ static ssize_t gpio_sim_hog_config_name_store(struct config_item *item,
1219
1226
1220
1227
guard (mutex )(& dev -> lock );
1221
1228
1222
- if (gpio_sim_device_is_live_unlocked (dev ))
1229
+ if (gpio_sim_device_is_live (dev ))
1223
1230
return - EBUSY ;
1224
1231
1225
1232
trimmed = gpio_sim_strdup_trimmed (page , count );
@@ -1274,7 +1281,7 @@ gpio_sim_hog_config_direction_store(struct config_item *item,
1274
1281
1275
1282
guard (mutex )(& dev -> lock );
1276
1283
1277
- if (gpio_sim_device_is_live_unlocked (dev ))
1284
+ if (gpio_sim_device_is_live (dev ))
1278
1285
return - EBUSY ;
1279
1286
1280
1287
if (sysfs_streq (page , "input" ))
@@ -1392,7 +1399,7 @@ gpio_sim_bank_config_make_line_group(struct config_group *group,
1392
1399
1393
1400
guard (mutex )(& dev -> lock );
1394
1401
1395
- if (gpio_sim_device_is_live_unlocked (dev ))
1402
+ if (gpio_sim_device_is_live (dev ))
1396
1403
return ERR_PTR (- EBUSY );
1397
1404
1398
1405
line = kzalloc (sizeof (* line ), GFP_KERNEL );
@@ -1445,7 +1452,7 @@ gpio_sim_device_config_make_bank_group(struct config_group *group,
1445
1452
1446
1453
guard (mutex )(& dev -> lock );
1447
1454
1448
- if (gpio_sim_device_is_live_unlocked (dev ))
1455
+ if (gpio_sim_device_is_live (dev ))
1449
1456
return ERR_PTR (- EBUSY );
1450
1457
1451
1458
bank = kzalloc (sizeof (* bank ), GFP_KERNEL );
@@ -1467,8 +1474,8 @@ static void gpio_sim_device_config_group_release(struct config_item *item)
1467
1474
struct gpio_sim_device * dev = to_gpio_sim_device (item );
1468
1475
1469
1476
scoped_guard (mutex , & dev -> lock ) {
1470
- if (gpio_sim_device_is_live_unlocked (dev ))
1471
- gpio_sim_device_deactivate_unlocked (dev );
1477
+ if (gpio_sim_device_is_live (dev ))
1478
+ gpio_sim_device_deactivate (dev );
1472
1479
}
1473
1480
1474
1481
mutex_destroy (& dev -> lock );
0 commit comments