.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
---|
1 | 2 | /* |
---|
2 | 3 | * NetLabel Unlabeled Support |
---|
3 | 4 | * |
---|
.. | .. |
---|
6 | 7 | * mappings for network protocols such as CIPSO and RIPSO. |
---|
7 | 8 | * |
---|
8 | 9 | * Author: Paul Moore <paul@paul-moore.com> |
---|
9 | | - * |
---|
10 | 10 | */ |
---|
11 | 11 | |
---|
12 | 12 | /* |
---|
13 | 13 | * (c) Copyright Hewlett-Packard Development Company, L.P., 2006 - 2008 |
---|
14 | | - * |
---|
15 | | - * This program is free software; you can redistribute it and/or modify |
---|
16 | | - * it under the terms of the GNU General Public License as published by |
---|
17 | | - * the Free Software Foundation; either version 2 of the License, or |
---|
18 | | - * (at your option) any later version. |
---|
19 | | - * |
---|
20 | | - * This program is distributed in the hope that it will be useful, |
---|
21 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
22 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
---|
23 | | - * the GNU General Public License for more details. |
---|
24 | | - * |
---|
25 | | - * You should have received a copy of the GNU General Public License |
---|
26 | | - * along with this program; if not, see <http://www.gnu.org/licenses/>. |
---|
27 | | - * |
---|
28 | 14 | */ |
---|
29 | 15 | |
---|
30 | 16 | #include <linux/types.h> |
---|
.. | .. |
---|
221 | 207 | |
---|
222 | 208 | bkt = netlbl_unlhsh_hash(ifindex); |
---|
223 | 209 | bkt_list = &netlbl_unlhsh_rcu_deref(netlbl_unlhsh)->tbl[bkt]; |
---|
224 | | - list_for_each_entry_rcu(iter, bkt_list, list) |
---|
| 210 | + list_for_each_entry_rcu(iter, bkt_list, list, |
---|
| 211 | + lockdep_is_held(&netlbl_unlhsh_lock)) |
---|
225 | 212 | if (iter->valid && iter->ifindex == ifindex) |
---|
226 | 213 | return iter; |
---|
227 | 214 | |
---|
.. | .. |
---|
1321 | 1308 | * NetLabel Generic NETLINK Command Definitions |
---|
1322 | 1309 | */ |
---|
1323 | 1310 | |
---|
1324 | | -static const struct genl_ops netlbl_unlabel_genl_ops[] = { |
---|
| 1311 | +static const struct genl_small_ops netlbl_unlabel_genl_ops[] = { |
---|
1325 | 1312 | { |
---|
1326 | 1313 | .cmd = NLBL_UNLABEL_C_STATICADD, |
---|
| 1314 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1327 | 1315 | .flags = GENL_ADMIN_PERM, |
---|
1328 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1329 | 1316 | .doit = netlbl_unlabel_staticadd, |
---|
1330 | 1317 | .dumpit = NULL, |
---|
1331 | 1318 | }, |
---|
1332 | 1319 | { |
---|
1333 | 1320 | .cmd = NLBL_UNLABEL_C_STATICREMOVE, |
---|
| 1321 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1334 | 1322 | .flags = GENL_ADMIN_PERM, |
---|
1335 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1336 | 1323 | .doit = netlbl_unlabel_staticremove, |
---|
1337 | 1324 | .dumpit = NULL, |
---|
1338 | 1325 | }, |
---|
1339 | 1326 | { |
---|
1340 | 1327 | .cmd = NLBL_UNLABEL_C_STATICLIST, |
---|
| 1328 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1341 | 1329 | .flags = 0, |
---|
1342 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1343 | 1330 | .doit = NULL, |
---|
1344 | 1331 | .dumpit = netlbl_unlabel_staticlist, |
---|
1345 | 1332 | }, |
---|
1346 | 1333 | { |
---|
1347 | 1334 | .cmd = NLBL_UNLABEL_C_STATICADDDEF, |
---|
| 1335 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1348 | 1336 | .flags = GENL_ADMIN_PERM, |
---|
1349 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1350 | 1337 | .doit = netlbl_unlabel_staticadddef, |
---|
1351 | 1338 | .dumpit = NULL, |
---|
1352 | 1339 | }, |
---|
1353 | 1340 | { |
---|
1354 | 1341 | .cmd = NLBL_UNLABEL_C_STATICREMOVEDEF, |
---|
| 1342 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1355 | 1343 | .flags = GENL_ADMIN_PERM, |
---|
1356 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1357 | 1344 | .doit = netlbl_unlabel_staticremovedef, |
---|
1358 | 1345 | .dumpit = NULL, |
---|
1359 | 1346 | }, |
---|
1360 | 1347 | { |
---|
1361 | 1348 | .cmd = NLBL_UNLABEL_C_STATICLISTDEF, |
---|
| 1349 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1362 | 1350 | .flags = 0, |
---|
1363 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1364 | 1351 | .doit = NULL, |
---|
1365 | 1352 | .dumpit = netlbl_unlabel_staticlistdef, |
---|
1366 | 1353 | }, |
---|
1367 | 1354 | { |
---|
1368 | 1355 | .cmd = NLBL_UNLABEL_C_ACCEPT, |
---|
| 1356 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1369 | 1357 | .flags = GENL_ADMIN_PERM, |
---|
1370 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1371 | 1358 | .doit = netlbl_unlabel_accept, |
---|
1372 | 1359 | .dumpit = NULL, |
---|
1373 | 1360 | }, |
---|
1374 | 1361 | { |
---|
1375 | 1362 | .cmd = NLBL_UNLABEL_C_LIST, |
---|
| 1363 | + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, |
---|
1376 | 1364 | .flags = 0, |
---|
1377 | | - .policy = netlbl_unlabel_genl_policy, |
---|
1378 | 1365 | .doit = netlbl_unlabel_list, |
---|
1379 | 1366 | .dumpit = NULL, |
---|
1380 | 1367 | }, |
---|
.. | .. |
---|
1385 | 1372 | .name = NETLBL_NLTYPE_UNLABELED_NAME, |
---|
1386 | 1373 | .version = NETLBL_PROTO_VERSION, |
---|
1387 | 1374 | .maxattr = NLBL_UNLABEL_A_MAX, |
---|
| 1375 | + .policy = netlbl_unlabel_genl_policy, |
---|
1388 | 1376 | .module = THIS_MODULE, |
---|
1389 | | - .ops = netlbl_unlabel_genl_ops, |
---|
1390 | | - .n_ops = ARRAY_SIZE(netlbl_unlabel_genl_ops), |
---|
| 1377 | + .small_ops = netlbl_unlabel_genl_ops, |
---|
| 1378 | + .n_small_ops = ARRAY_SIZE(netlbl_unlabel_genl_ops), |
---|
1391 | 1379 | }; |
---|
1392 | 1380 | |
---|
1393 | 1381 | /* |
---|