Deleted Added
full compact
mac_vfs.c (104338) mac_vfs.c (104514)
1/*-
2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001 Ilmar S. Habibulin
4 * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
5 * All rights reserved.
6 *
7 * This software was developed by Robert Watson and Ilmar Habibulin for the
8 * TrustedBSD Project.

--- 22 unchanged lines hidden (view full) ---

31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
1/*-
2 * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson
3 * Copyright (c) 2001 Ilmar S. Habibulin
4 * Copyright (c) 2001, 2002 Networks Associates Technology, Inc.
5 * All rights reserved.
6 *
7 * This software was developed by Robert Watson and Ilmar Habibulin for the
8 * TrustedBSD Project.

--- 22 unchanged lines hidden (view full) ---

31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * $FreeBSD: head/sys/security/mac/mac_vfs.c 104338 2002-10-02 02:42:38Z rwatson $
39 * $FreeBSD: head/sys/security/mac/mac_vfs.c 104514 2002-10-05 15:10:00Z rwatson $
40 */
41/*
42 * Developed by the TrustedBSD Project.
43 *
44 * Framework for extensible kernel access control. Kernel and userland
45 * interface to the framework, policy registration and composition.
46 */
47

--- 341 unchanged lines hidden (view full) ---

389 case MAC_INIT:
390 mpc->mpc_ops->mpo_init =
391 mpe->mpe_function;
392 break;
393 case MAC_SYSCALL:
394 mpc->mpc_ops->mpo_syscall =
395 mpe->mpe_function;
396 break;
40 */
41/*
42 * Developed by the TrustedBSD Project.
43 *
44 * Framework for extensible kernel access control. Kernel and userland
45 * interface to the framework, policy registration and composition.
46 */
47

--- 341 unchanged lines hidden (view full) ---

389 case MAC_INIT:
390 mpc->mpc_ops->mpo_init =
391 mpe->mpe_function;
392 break;
393 case MAC_SYSCALL:
394 mpc->mpc_ops->mpo_syscall =
395 mpe->mpe_function;
396 break;
397 case MAC_INIT_BPFDESC:
398 mpc->mpc_ops->mpo_init_bpfdesc =
397 case MAC_INIT_BPFDESC_LABEL:
398 mpc->mpc_ops->mpo_init_bpfdesc_label =
399 mpe->mpe_function;
400 break;
399 mpe->mpe_function;
400 break;
401 case MAC_INIT_CRED:
402 mpc->mpc_ops->mpo_init_cred =
401 case MAC_INIT_CRED_LABEL:
402 mpc->mpc_ops->mpo_init_cred_label =
403 mpe->mpe_function;
404 break;
403 mpe->mpe_function;
404 break;
405 case MAC_INIT_DEVFSDIRENT:
406 mpc->mpc_ops->mpo_init_devfsdirent =
405 case MAC_INIT_DEVFSDIRENT_LABEL:
406 mpc->mpc_ops->mpo_init_devfsdirent_label =
407 mpe->mpe_function;
408 break;
407 mpe->mpe_function;
408 break;
409 case MAC_INIT_IFNET:
410 mpc->mpc_ops->mpo_init_ifnet =
409 case MAC_INIT_IFNET_LABEL:
410 mpc->mpc_ops->mpo_init_ifnet_label =
411 mpe->mpe_function;
412 break;
411 mpe->mpe_function;
412 break;
413 case MAC_INIT_IPQ:
414 mpc->mpc_ops->mpo_init_ipq =
413 case MAC_INIT_IPQ_LABEL:
414 mpc->mpc_ops->mpo_init_ipq_label =
415 mpe->mpe_function;
416 break;
415 mpe->mpe_function;
416 break;
417 case MAC_INIT_MBUF:
418 mpc->mpc_ops->mpo_init_mbuf =
417 case MAC_INIT_MBUF_LABEL:
418 mpc->mpc_ops->mpo_init_mbuf_label =
419 mpe->mpe_function;
420 break;
419 mpe->mpe_function;
420 break;
421 case MAC_INIT_MOUNT:
422 mpc->mpc_ops->mpo_init_mount =
421 case MAC_INIT_MOUNT_LABEL:
422 mpc->mpc_ops->mpo_init_mount_label =
423 mpe->mpe_function;
424 break;
423 mpe->mpe_function;
424 break;
425 case MAC_INIT_PIPE:
426 mpc->mpc_ops->mpo_init_pipe =
425 case MAC_INIT_MOUNT_FS_LABEL:
426 mpc->mpc_ops->mpo_init_mount_fs_label =
427 mpe->mpe_function;
428 break;
427 mpe->mpe_function;
428 break;
429 case MAC_INIT_SOCKET:
430 mpc->mpc_ops->mpo_init_socket =
429 case MAC_INIT_PIPE_LABEL:
430 mpc->mpc_ops->mpo_init_pipe_label =
431 mpe->mpe_function;
432 break;
431 mpe->mpe_function;
432 break;
433 case MAC_INIT_TEMP:
434 mpc->mpc_ops->mpo_init_temp =
433 case MAC_INIT_SOCKET_LABEL:
434 mpc->mpc_ops->mpo_init_socket_label =
435 mpe->mpe_function;
436 break;
435 mpe->mpe_function;
436 break;
437 case MAC_INIT_VNODE:
438 mpc->mpc_ops->mpo_init_vnode =
437 case MAC_INIT_SOCKET_PEER_LABEL:
438 mpc->mpc_ops->mpo_init_socket_peer_label =
439 mpe->mpe_function;
440 break;
439 mpe->mpe_function;
440 break;
441 case MAC_DESTROY_BPFDESC:
442 mpc->mpc_ops->mpo_destroy_bpfdesc =
441 case MAC_INIT_TEMP_LABEL:
442 mpc->mpc_ops->mpo_init_temp_label =
443 mpe->mpe_function;
444 break;
443 mpe->mpe_function;
444 break;
445 case MAC_DESTROY_CRED:
446 mpc->mpc_ops->mpo_destroy_cred =
445 case MAC_INIT_VNODE_LABEL:
446 mpc->mpc_ops->mpo_init_vnode_label =
447 mpe->mpe_function;
448 break;
447 mpe->mpe_function;
448 break;
449 case MAC_DESTROY_DEVFSDIRENT:
450 mpc->mpc_ops->mpo_destroy_devfsdirent =
449 case MAC_DESTROY_BPFDESC_LABEL:
450 mpc->mpc_ops->mpo_destroy_bpfdesc_label =
451 mpe->mpe_function;
452 break;
451 mpe->mpe_function;
452 break;
453 case MAC_DESTROY_IFNET:
454 mpc->mpc_ops->mpo_destroy_ifnet =
453 case MAC_DESTROY_CRED_LABEL:
454 mpc->mpc_ops->mpo_destroy_cred_label =
455 mpe->mpe_function;
456 break;
455 mpe->mpe_function;
456 break;
457 case MAC_DESTROY_IPQ:
458 mpc->mpc_ops->mpo_destroy_ipq =
457 case MAC_DESTROY_DEVFSDIRENT_LABEL:
458 mpc->mpc_ops->mpo_destroy_devfsdirent_label =
459 mpe->mpe_function;
460 break;
459 mpe->mpe_function;
460 break;
461 case MAC_DESTROY_MBUF:
462 mpc->mpc_ops->mpo_destroy_mbuf =
461 case MAC_DESTROY_IFNET_LABEL:
462 mpc->mpc_ops->mpo_destroy_ifnet_label =
463 mpe->mpe_function;
464 break;
463 mpe->mpe_function;
464 break;
465 case MAC_DESTROY_MOUNT:
466 mpc->mpc_ops->mpo_destroy_mount =
465 case MAC_DESTROY_IPQ_LABEL:
466 mpc->mpc_ops->mpo_destroy_ipq_label =
467 mpe->mpe_function;
468 break;
467 mpe->mpe_function;
468 break;
469 case MAC_DESTROY_PIPE:
470 mpc->mpc_ops->mpo_destroy_pipe =
469 case MAC_DESTROY_MBUF_LABEL:
470 mpc->mpc_ops->mpo_destroy_mbuf_label =
471 mpe->mpe_function;
472 break;
471 mpe->mpe_function;
472 break;
473 case MAC_DESTROY_SOCKET:
474 mpc->mpc_ops->mpo_destroy_socket =
473 case MAC_DESTROY_MOUNT_LABEL:
474 mpc->mpc_ops->mpo_destroy_mount_label =
475 mpe->mpe_function;
476 break;
475 mpe->mpe_function;
476 break;
477 case MAC_DESTROY_TEMP:
478 mpc->mpc_ops->mpo_destroy_temp =
477 case MAC_DESTROY_MOUNT_FS_LABEL:
478 mpc->mpc_ops->mpo_destroy_mount_fs_label =
479 mpe->mpe_function;
480 break;
479 mpe->mpe_function;
480 break;
481 case MAC_DESTROY_VNODE:
482 mpc->mpc_ops->mpo_destroy_vnode =
481 case MAC_DESTROY_PIPE_LABEL:
482 mpc->mpc_ops->mpo_destroy_pipe_label =
483 mpe->mpe_function;
484 break;
483 mpe->mpe_function;
484 break;
485 case MAC_DESTROY_SOCKET_LABEL:
486 mpc->mpc_ops->mpo_destroy_socket_label =
487 mpe->mpe_function;
488 break;
489 case MAC_DESTROY_SOCKET_PEER_LABEL:
490 mpc->mpc_ops->mpo_destroy_socket_peer_label =
491 mpe->mpe_function;
492 break;
493 case MAC_DESTROY_TEMP_LABEL:
494 mpc->mpc_ops->mpo_destroy_temp_label =
495 mpe->mpe_function;
496 break;
497 case MAC_DESTROY_VNODE_LABEL:
498 mpc->mpc_ops->mpo_destroy_vnode_label =
499 mpe->mpe_function;
500 break;
485 case MAC_EXTERNALIZE:
486 mpc->mpc_ops->mpo_externalize =
487 mpe->mpe_function;
488 break;
489 case MAC_INTERNALIZE:
490 mpc->mpc_ops->mpo_internalize =
491 mpe->mpe_function;
492 break;

--- 792 unchanged lines hidden (view full) ---

1285
1286int
1287mac_init_mbuf(struct mbuf *m, int how)
1288{
1289 KASSERT(m->m_flags & M_PKTHDR, ("mac_init_mbuf on non-header mbuf"));
1290
1291 /* "how" is one of M_(TRY|DONT)WAIT */
1292 mac_init_label(&m->m_pkthdr.label);
501 case MAC_EXTERNALIZE:
502 mpc->mpc_ops->mpo_externalize =
503 mpe->mpe_function;
504 break;
505 case MAC_INTERNALIZE:
506 mpc->mpc_ops->mpo_internalize =
507 mpe->mpe_function;
508 break;

--- 792 unchanged lines hidden (view full) ---

1301
1302int
1303mac_init_mbuf(struct mbuf *m, int how)
1304{
1305 KASSERT(m->m_flags & M_PKTHDR, ("mac_init_mbuf on non-header mbuf"));
1306
1307 /* "how" is one of M_(TRY|DONT)WAIT */
1308 mac_init_label(&m->m_pkthdr.label);
1293 MAC_PERFORM(init_mbuf, m, how, &m->m_pkthdr.label);
1309 MAC_PERFORM(init_mbuf_label, &m->m_pkthdr.label, how);
1294#ifdef MAC_DEBUG
1295 atomic_add_int(&nmacmbufs, 1);
1296#endif
1297 return (0);
1298}
1299
1300void
1301mac_destroy_mbuf(struct mbuf *m)
1302{
1303
1310#ifdef MAC_DEBUG
1311 atomic_add_int(&nmacmbufs, 1);
1312#endif
1313 return (0);
1314}
1315
1316void
1317mac_destroy_mbuf(struct mbuf *m)
1318{
1319
1304 MAC_PERFORM(destroy_mbuf, m, &m->m_pkthdr.label);
1320 MAC_PERFORM(destroy_mbuf_label, &m->m_pkthdr.label);
1305 mac_destroy_label(&m->m_pkthdr.label);
1306#ifdef MAC_DEBUG
1307 atomic_subtract_int(&nmacmbufs, 1);
1308#endif
1309}
1310
1311void
1312mac_init_cred(struct ucred *cr)
1313{
1314
1315 mac_init_label(&cr->cr_label);
1321 mac_destroy_label(&m->m_pkthdr.label);
1322#ifdef MAC_DEBUG
1323 atomic_subtract_int(&nmacmbufs, 1);
1324#endif
1325}
1326
1327void
1328mac_init_cred(struct ucred *cr)
1329{
1330
1331 mac_init_label(&cr->cr_label);
1316 MAC_PERFORM(init_cred, cr, &cr->cr_label);
1332 MAC_PERFORM(init_cred_label, &cr->cr_label);
1317#ifdef MAC_DEBUG
1318 atomic_add_int(&nmaccreds, 1);
1319#endif
1320}
1321
1322void
1323mac_destroy_cred(struct ucred *cr)
1324{
1325
1333#ifdef MAC_DEBUG
1334 atomic_add_int(&nmaccreds, 1);
1335#endif
1336}
1337
1338void
1339mac_destroy_cred(struct ucred *cr)
1340{
1341
1326 MAC_PERFORM(destroy_cred, cr, &cr->cr_label);
1342 MAC_PERFORM(destroy_cred_label, &cr->cr_label);
1327 mac_destroy_label(&cr->cr_label);
1328#ifdef MAC_DEBUG
1329 atomic_subtract_int(&nmaccreds, 1);
1330#endif
1331}
1332
1333void
1334mac_init_ifnet(struct ifnet *ifp)
1335{
1336
1337 mac_init_label(&ifp->if_label);
1343 mac_destroy_label(&cr->cr_label);
1344#ifdef MAC_DEBUG
1345 atomic_subtract_int(&nmaccreds, 1);
1346#endif
1347}
1348
1349void
1350mac_init_ifnet(struct ifnet *ifp)
1351{
1352
1353 mac_init_label(&ifp->if_label);
1338 MAC_PERFORM(init_ifnet, ifp, &ifp->if_label);
1354 MAC_PERFORM(init_ifnet_label, &ifp->if_label);
1339#ifdef MAC_DEBUG
1340 atomic_add_int(&nmacifnets, 1);
1341#endif
1342}
1343
1344void
1345mac_destroy_ifnet(struct ifnet *ifp)
1346{
1347
1355#ifdef MAC_DEBUG
1356 atomic_add_int(&nmacifnets, 1);
1357#endif
1358}
1359
1360void
1361mac_destroy_ifnet(struct ifnet *ifp)
1362{
1363
1348 MAC_PERFORM(destroy_ifnet, ifp, &ifp->if_label);
1364 MAC_PERFORM(destroy_ifnet_label, &ifp->if_label);
1349 mac_destroy_label(&ifp->if_label);
1350#ifdef MAC_DEBUG
1351 atomic_subtract_int(&nmacifnets, 1);
1352#endif
1353}
1354
1355void
1356mac_init_ipq(struct ipq *ipq)
1357{
1358
1359 mac_init_label(&ipq->ipq_label);
1365 mac_destroy_label(&ifp->if_label);
1366#ifdef MAC_DEBUG
1367 atomic_subtract_int(&nmacifnets, 1);
1368#endif
1369}
1370
1371void
1372mac_init_ipq(struct ipq *ipq)
1373{
1374
1375 mac_init_label(&ipq->ipq_label);
1360 MAC_PERFORM(init_ipq, ipq, &ipq->ipq_label);
1376 MAC_PERFORM(init_ipq_label, &ipq->ipq_label);
1361#ifdef MAC_DEBUG
1362 atomic_add_int(&nmacipqs, 1);
1363#endif
1364}
1365
1366void
1367mac_destroy_ipq(struct ipq *ipq)
1368{
1369
1377#ifdef MAC_DEBUG
1378 atomic_add_int(&nmacipqs, 1);
1379#endif
1380}
1381
1382void
1383mac_destroy_ipq(struct ipq *ipq)
1384{
1385
1370 MAC_PERFORM(destroy_ipq, ipq, &ipq->ipq_label);
1386 MAC_PERFORM(destroy_ipq_label, &ipq->ipq_label);
1371 mac_destroy_label(&ipq->ipq_label);
1372#ifdef MAC_DEBUG
1373 atomic_subtract_int(&nmacipqs, 1);
1374#endif
1375}
1376
1377void
1378mac_init_socket(struct socket *socket)
1379{
1380
1381 mac_init_label(&socket->so_label);
1382 mac_init_label(&socket->so_peerlabel);
1387 mac_destroy_label(&ipq->ipq_label);
1388#ifdef MAC_DEBUG
1389 atomic_subtract_int(&nmacipqs, 1);
1390#endif
1391}
1392
1393void
1394mac_init_socket(struct socket *socket)
1395{
1396
1397 mac_init_label(&socket->so_label);
1398 mac_init_label(&socket->so_peerlabel);
1383 MAC_PERFORM(init_socket, socket, &socket->so_label,
1384 &socket->so_peerlabel);
1399 MAC_PERFORM(init_socket_label, &socket->so_label);
1400 MAC_PERFORM(init_socket_peer_label, &socket->so_peerlabel);
1385#ifdef MAC_DEBUG
1386 atomic_add_int(&nmacsockets, 1);
1387#endif
1388}
1389
1390void
1391mac_destroy_socket(struct socket *socket)
1392{
1393
1401#ifdef MAC_DEBUG
1402 atomic_add_int(&nmacsockets, 1);
1403#endif
1404}
1405
1406void
1407mac_destroy_socket(struct socket *socket)
1408{
1409
1394 MAC_PERFORM(destroy_socket, socket, &socket->so_label,
1395 &socket->so_peerlabel);
1410 MAC_PERFORM(destroy_socket_label, &socket->so_label);
1411 MAC_PERFORM(destroy_socket_peer_label, &socket->so_peerlabel);
1396 mac_destroy_label(&socket->so_label);
1397 mac_destroy_label(&socket->so_peerlabel);
1398#ifdef MAC_DEBUG
1399 atomic_subtract_int(&nmacsockets, 1);
1400#endif
1401}
1402
1403void
1404mac_init_pipe(struct pipe *pipe)
1405{
1406 struct label *label;
1407
1408 label = malloc(sizeof(struct label), M_MACPIPELABEL, M_ZERO|M_WAITOK);
1409 mac_init_label(label);
1410 pipe->pipe_label = label;
1411 pipe->pipe_peer->pipe_label = label;
1412 mac_destroy_label(&socket->so_label);
1413 mac_destroy_label(&socket->so_peerlabel);
1414#ifdef MAC_DEBUG
1415 atomic_subtract_int(&nmacsockets, 1);
1416#endif
1417}
1418
1419void
1420mac_init_pipe(struct pipe *pipe)
1421{
1422 struct label *label;
1423
1424 label = malloc(sizeof(struct label), M_MACPIPELABEL, M_ZERO|M_WAITOK);
1425 mac_init_label(label);
1426 pipe->pipe_label = label;
1427 pipe->pipe_peer->pipe_label = label;
1412 MAC_PERFORM(init_pipe, pipe, pipe->pipe_label);
1428 MAC_PERFORM(init_pipe_label, pipe->pipe_label);
1413#ifdef MAC_DEBUG
1414 atomic_add_int(&nmacpipes, 1);
1415#endif
1416}
1417
1418void
1419mac_destroy_pipe(struct pipe *pipe)
1420{
1421
1429#ifdef MAC_DEBUG
1430 atomic_add_int(&nmacpipes, 1);
1431#endif
1432}
1433
1434void
1435mac_destroy_pipe(struct pipe *pipe)
1436{
1437
1422 MAC_PERFORM(destroy_pipe, pipe, pipe->pipe_label);
1438 MAC_PERFORM(destroy_pipe_label, pipe->pipe_label);
1423 mac_destroy_label(pipe->pipe_label);
1424 free(pipe->pipe_label, M_MACPIPELABEL);
1425#ifdef MAC_DEBUG
1426 atomic_subtract_int(&nmacpipes, 1);
1427#endif
1428}
1429
1430void
1431mac_init_bpfdesc(struct bpf_d *bpf_d)
1432{
1433
1434 mac_init_label(&bpf_d->bd_label);
1439 mac_destroy_label(pipe->pipe_label);
1440 free(pipe->pipe_label, M_MACPIPELABEL);
1441#ifdef MAC_DEBUG
1442 atomic_subtract_int(&nmacpipes, 1);
1443#endif
1444}
1445
1446void
1447mac_init_bpfdesc(struct bpf_d *bpf_d)
1448{
1449
1450 mac_init_label(&bpf_d->bd_label);
1435 MAC_PERFORM(init_bpfdesc, bpf_d, &bpf_d->bd_label);
1451 MAC_PERFORM(init_bpfdesc_label, &bpf_d->bd_label);
1436#ifdef MAC_DEBUG
1437 atomic_add_int(&nmacbpfdescs, 1);
1438#endif
1439}
1440
1441void
1442mac_destroy_bpfdesc(struct bpf_d *bpf_d)
1443{
1444
1452#ifdef MAC_DEBUG
1453 atomic_add_int(&nmacbpfdescs, 1);
1454#endif
1455}
1456
1457void
1458mac_destroy_bpfdesc(struct bpf_d *bpf_d)
1459{
1460
1445 MAC_PERFORM(destroy_bpfdesc, bpf_d, &bpf_d->bd_label);
1461 MAC_PERFORM(destroy_bpfdesc_label, &bpf_d->bd_label);
1446 mac_destroy_label(&bpf_d->bd_label);
1447#ifdef MAC_DEBUG
1448 atomic_subtract_int(&nmacbpfdescs, 1);
1449#endif
1450}
1451
1452void
1453mac_init_mount(struct mount *mp)
1454{
1455
1456 mac_init_label(&mp->mnt_mntlabel);
1457 mac_init_label(&mp->mnt_fslabel);
1462 mac_destroy_label(&bpf_d->bd_label);
1463#ifdef MAC_DEBUG
1464 atomic_subtract_int(&nmacbpfdescs, 1);
1465#endif
1466}
1467
1468void
1469mac_init_mount(struct mount *mp)
1470{
1471
1472 mac_init_label(&mp->mnt_mntlabel);
1473 mac_init_label(&mp->mnt_fslabel);
1458 MAC_PERFORM(init_mount, mp, &mp->mnt_mntlabel, &mp->mnt_fslabel);
1474 MAC_PERFORM(init_mount_label, &mp->mnt_mntlabel);
1475 MAC_PERFORM(init_mount_fs_label, &mp->mnt_fslabel);
1459#ifdef MAC_DEBUG
1460 atomic_add_int(&nmacmounts, 1);
1461#endif
1462}
1463
1464void
1465mac_destroy_mount(struct mount *mp)
1466{
1467
1476#ifdef MAC_DEBUG
1477 atomic_add_int(&nmacmounts, 1);
1478#endif
1479}
1480
1481void
1482mac_destroy_mount(struct mount *mp)
1483{
1484
1468 MAC_PERFORM(destroy_mount, mp, &mp->mnt_mntlabel, &mp->mnt_fslabel);
1485 MAC_PERFORM(destroy_mount_label, &mp->mnt_mntlabel);
1486 MAC_PERFORM(destroy_mount_fs_label, &mp->mnt_fslabel);
1469 mac_destroy_label(&mp->mnt_fslabel);
1470 mac_destroy_label(&mp->mnt_mntlabel);
1471#ifdef MAC_DEBUG
1472 atomic_subtract_int(&nmacmounts, 1);
1473#endif
1474}
1475
1476static void
1477mac_init_temp(struct label *label)
1478{
1479
1480 mac_init_label(label);
1487 mac_destroy_label(&mp->mnt_fslabel);
1488 mac_destroy_label(&mp->mnt_mntlabel);
1489#ifdef MAC_DEBUG
1490 atomic_subtract_int(&nmacmounts, 1);
1491#endif
1492}
1493
1494static void
1495mac_init_temp(struct label *label)
1496{
1497
1498 mac_init_label(label);
1481 MAC_PERFORM(init_temp, label);
1499 MAC_PERFORM(init_temp_label, label);
1482#ifdef MAC_DEBUG
1483 atomic_add_int(&nmactemp, 1);
1484#endif
1485}
1486
1487static void
1488mac_destroy_temp(struct label *label)
1489{
1490
1500#ifdef MAC_DEBUG
1501 atomic_add_int(&nmactemp, 1);
1502#endif
1503}
1504
1505static void
1506mac_destroy_temp(struct label *label)
1507{
1508
1491 MAC_PERFORM(destroy_temp, label);
1509 MAC_PERFORM(destroy_temp_label, label);
1492 mac_destroy_label(label);
1493#ifdef MAC_DEBUG
1494 atomic_subtract_int(&nmactemp, 1);
1495#endif
1496}
1497
1498void
1499mac_init_vnode(struct vnode *vp)
1500{
1501
1502 mac_init_label(&vp->v_label);
1510 mac_destroy_label(label);
1511#ifdef MAC_DEBUG
1512 atomic_subtract_int(&nmactemp, 1);
1513#endif
1514}
1515
1516void
1517mac_init_vnode(struct vnode *vp)
1518{
1519
1520 mac_init_label(&vp->v_label);
1503 MAC_PERFORM(init_vnode, vp, &vp->v_label);
1521 MAC_PERFORM(init_vnode_label, &vp->v_label);
1504#ifdef MAC_DEBUG
1505 atomic_add_int(&nmacvnodes, 1);
1506#endif
1507}
1508
1509void
1510mac_destroy_vnode(struct vnode *vp)
1511{
1512
1522#ifdef MAC_DEBUG
1523 atomic_add_int(&nmacvnodes, 1);
1524#endif
1525}
1526
1527void
1528mac_destroy_vnode(struct vnode *vp)
1529{
1530
1513 MAC_PERFORM(destroy_vnode, vp, &vp->v_label);
1531 MAC_PERFORM(destroy_vnode_label, &vp->v_label);
1514 mac_destroy_label(&vp->v_label);
1515#ifdef MAC_DEBUG
1516 atomic_subtract_int(&nmacvnodes, 1);
1517#endif
1518}
1519
1520void
1521mac_init_devfsdirent(struct devfs_dirent *de)
1522{
1523
1524 mac_init_label(&de->de_label);
1532 mac_destroy_label(&vp->v_label);
1533#ifdef MAC_DEBUG
1534 atomic_subtract_int(&nmacvnodes, 1);
1535#endif
1536}
1537
1538void
1539mac_init_devfsdirent(struct devfs_dirent *de)
1540{
1541
1542 mac_init_label(&de->de_label);
1525 MAC_PERFORM(init_devfsdirent, de, &de->de_label);
1543 MAC_PERFORM(init_devfsdirent_label, &de->de_label);
1526#ifdef MAC_DEBUG
1527 atomic_add_int(&nmacdevfsdirents, 1);
1528#endif
1529}
1530
1531void
1532mac_destroy_devfsdirent(struct devfs_dirent *de)
1533{
1534
1544#ifdef MAC_DEBUG
1545 atomic_add_int(&nmacdevfsdirents, 1);
1546#endif
1547}
1548
1549void
1550mac_destroy_devfsdirent(struct devfs_dirent *de)
1551{
1552
1535 MAC_PERFORM(destroy_devfsdirent, de, &de->de_label);
1553 MAC_PERFORM(destroy_devfsdirent_label, &de->de_label);
1536 mac_destroy_label(&de->de_label);
1537#ifdef MAC_DEBUG
1538 atomic_subtract_int(&nmacdevfsdirents, 1);
1539#endif
1540}
1541
1542static int
1543mac_externalize(struct label *label, struct mac *mac)

--- 1834 unchanged lines hidden ---
1554 mac_destroy_label(&de->de_label);
1555#ifdef MAC_DEBUG
1556 atomic_subtract_int(&nmacdevfsdirents, 1);
1557#endif
1558}
1559
1560static int
1561mac_externalize(struct label *label, struct mac *mac)

--- 1834 unchanged lines hidden ---