Lines Matching +full:event +full:- +full:touch +full:- +full:alt

1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
82 #include <crypto/rijndael/rijndael-api-fst.h>
239 /* Context information for dump-debuggers, saved by the dump_savectx() macro. */
300 error = mac_system_check_reboot(td->td_ucred, uap->opt); in sys_reboot()
305 if (uap->opt & RB_REROOT) in sys_reboot()
308 kern_reboot(uap->opt); in sys_reboot()
341 * Called by events that want to shut down.. e.g <CTL><ALT><DEL> on a PC
421 dumping--; in doadump()
553 * Mark the filesystem containing currently-running executable in kern_reroot()
556 vp = curproc->p_textvp; in kern_reroot()
560 mp = vp->v_mount; in kern_reroot()
581 * Remove the filesystem containing currently-running executable in kern_reroot()
585 * Also preserve /dev - forcibly unmounting it could cause driver in kern_reroot()
650 case -1: /* No console, just die */ in shutdown_halt()
670 if (panic_reboot_wait_time != -1) { in shutdown_panic()
671 printf("Automatic reboot in %d seconds - " in shutdown_panic()
675 loop > 0; --loop) { in shutdown_panic()
678 if (cncheckc() != -1) in shutdown_panic()
684 } else { /* zero time specified - reboot NOW */ in shutdown_panic()
687 printf("--> Press a key on the console to reboot,\n"); in shutdown_panic()
688 printf("--> or switch off the system now.\n"); in shutdown_panic()
705 * - it disables interrupts avoiding CPU0 preemption in shutdown_reset()
707 * - it avoids deadlocks against smp_rendezvous() or, more in shutdown_reset()
708 * generally, threads busy-waiting, with this spinlock held, in shutdown_reset()
801 if (error != 0 || req->newptr == NULL) in kassert_sysctl_kassert()
824 * re-enter panic/kdb. in kassert_panic()
963 kdb_enter(KDB_WHY_PANIC, "re-panic"); in vpanic()
966 td->td_flags |= TDF_INPANIC; in vpanic()
982 * soft-updates inconsistencies.
1023 kproc_shutdown_wait, p->p_comm); in kproc_shutdown()
1043 kproc_shutdown_wait, td->td_name); in kthread_shutdown()
1070 sbuf_cat(&sb, di->di_devname); in dumpdevname_sysctl_handler()
1097 arc4rand(kdc->kdc_iv, sizeof(kdc->kdc_iv), 0); in kerneldumpcrypto_create()
1099 kdc->kdc_encryption = encryption; in kerneldumpcrypto_create()
1100 switch (kdc->kdc_encryption) { in kerneldumpcrypto_create()
1102 if (rijndael_makeKey(&kdc->kdc_ki, DIR_ENCRYPT, 256, key) <= 0) in kerneldumpcrypto_create()
1106 chacha_keysetup(&kdc->kdc_chacha, key, 256); in kerneldumpcrypto_create()
1112 kdc->kdc_dumpkeysize = dumpkeysize; in kerneldumpcrypto_create()
1113 kdk = kdc->kdc_dumpkey; in kerneldumpcrypto_create()
1114 kdk->kdk_encryption = kdc->kdc_encryption; in kerneldumpcrypto_create()
1115 memcpy(kdk->kdk_iv, kdc->kdc_iv, sizeof(kdk->kdk_iv)); in kerneldumpcrypto_create()
1116 kdk->kdk_encryptedkeysize = htod32(encryptedkeysize); in kerneldumpcrypto_create()
1117 memcpy(kdk->kdk_encryptedkey, encryptedkey, encryptedkeysize); in kerneldumpcrypto_create()
1143 SHA256_Update(&ctx, kdc->kdc_iv, sizeof(kdc->kdc_iv)); in kerneldumpcrypto_init()
1145 bcopy(hash, kdc->kdc_iv, sizeof(kdc->kdc_iv)); in kerneldumpcrypto_init()
1147 switch (kdc->kdc_encryption) { in kerneldumpcrypto_init()
1149 if (rijndael_cipherInit(&kdc->kdc_ci, MODE_CBC, in kerneldumpcrypto_init()
1150 kdc->kdc_iv) <= 0) { in kerneldumpcrypto_init()
1156 chacha_ivsetup(&kdc->kdc_chacha, kdc->kdc_iv, NULL); in kerneldumpcrypto_init()
1163 kdk = kdc->kdc_dumpkey; in kerneldumpcrypto_init()
1164 memcpy(kdk->kdk_iv, kdc->kdc_iv, sizeof(kdk->kdk_iv)); in kerneldumpcrypto_init()
1176 return (kdc->kdc_dumpkeysize); in kerneldumpcrypto_dumpkeysize()
1198 kdcomp->kdc_format = compression; in kerneldumpcomp_create()
1199 kdcomp->kdc_stream = compressor_init(kerneldumpcomp_write_cb, in kerneldumpcomp_create()
1200 format, di->maxiosize, kerneldump_gzlevel, di); in kerneldumpcomp_create()
1201 if (kdcomp->kdc_stream == NULL) { in kerneldumpcomp_create()
1205 kdcomp->kdc_buf = malloc(di->maxiosize, M_DUMPER, M_WAITOK | M_NODUMP); in kerneldumpcomp_create()
1214 kdcomp = di->kdcomp; in kerneldumpcomp_destroy()
1217 compressor_fini(kdcomp->kdc_stream); in kerneldumpcomp_destroy()
1218 zfree(kdcomp->kdc_buf, M_DUMPER); in kerneldumpcomp_destroy()
1232 zfree(di->blockbuf, M_DUMPER); in dumper_destroy()
1235 zfree(di->kdcrypto, M_EKCD); in dumper_destroy()
1257 newdi->blockbuf = NULL; in dumper_create()
1258 newdi->kdcrypto = NULL; in dumper_create()
1259 newdi->kdcomp = NULL; in dumper_create()
1260 strcpy(newdi->di_devname, devname); in dumper_create()
1262 if (kda->kda_encryption != KERNELDUMP_ENC_NONE) { in dumper_create()
1264 newdi->kdcrypto = kerneldumpcrypto_create(newdi->blocksize, in dumper_create()
1265 kda->kda_encryption, kda->kda_key, in dumper_create()
1266 kda->kda_encryptedkeysize, kda->kda_encryptedkey); in dumper_create()
1267 if (newdi->kdcrypto == NULL) { in dumper_create()
1276 if (kda->kda_compression != KERNELDUMP_COMP_NONE) { in dumper_create()
1284 if (kda->kda_encryption == KERNELDUMP_ENC_AES_256_CBC) { in dumper_create()
1289 newdi->kdcomp = kerneldumpcomp_create(newdi, in dumper_create()
1290 kda->kda_compression); in dumper_create()
1291 if (newdi->kdcomp == NULL) { in dumper_create()
1296 newdi->blockbuf = malloc(newdi->blocksize, M_DUMPER, M_WAITOK | M_ZERO); in dumper_create()
1317 index = kda->kda_index; in dumper_insert()
1338 index--; in dumper_insert()
1365 if (kda->kda_index == KDA_REMOVE_ALL) in dumper_config_match()
1368 if (strcmp(di->di_devname, devname) != 0) in dumper_config_match()
1374 if (kda->kda_index == KDA_REMOVE_DEV) in dumper_config_match()
1377 if (di->kdcomp != NULL) { in dumper_config_match()
1378 if (di->kdcomp->kdc_format != kda->kda_compression) in dumper_config_match()
1380 } else if (kda->kda_compression != KERNELDUMP_COMP_NONE) in dumper_config_match()
1383 if (di->kdcrypto != NULL) { in dumper_config_match()
1384 if (di->kdcrypto->kdc_encryption != kda->kda_encryption) in dumper_config_match()
1393 if (kda->kda_encryption != KERNELDUMP_ENC_NONE) in dumper_config_match()
1431 if (!found && kda->kda_index == KDA_REMOVE) in dumper_remove()
1440 if (di->mediasize > 0 && length != 0 && (offset < di->mediaoffset || in dump_check_bounds()
1441 offset - di->mediaoffset + length > di->mediasize)) { in dump_check_bounds()
1442 if (di->kdcomp != NULL && offset >= di->mediaoffset) { in dump_check_bounds()
1450 (intmax_t)offset, (intmax_t)di->mediaoffset, in dump_check_bounds()
1451 (uintmax_t)length, (intmax_t)di->mediasize); in dump_check_bounds()
1454 if (length % di->blocksize != 0) { in dump_check_bounds()
1459 if (offset % di->blocksize != 0) { in dump_check_bounds()
1473 switch (kdc->kdc_encryption) { in dump_encrypt()
1475 if (rijndael_blockEncrypt(&kdc->kdc_ci, &kdc->kdc_ki, buf, in dump_encrypt()
1479 if (rijndael_cipherInit(&kdc->kdc_ci, MODE_CBC, in dump_encrypt()
1480 buf + size - 16 /* IV size for AES-256-CBC */) <= 0) { in dump_encrypt()
1485 chacha_encrypt_bytes(&kdc->kdc_chacha, buf, buf, size); in dump_encrypt()
1504 kdc = di->kdcrypto; in dump_encrypted_write()
1519 length -= nbytes; in dump_encrypted_write()
1535 if (length % di->blocksize != 0) { in kerneldumpcomp_write_cb()
1542 rlength = rounddown(length, di->blocksize); in kerneldumpcomp_write_cb()
1548 resid = length - rlength; in kerneldumpcomp_write_cb()
1549 memmove(di->blockbuf, (uint8_t *)base + rlength, resid); in kerneldumpcomp_write_cb()
1550 bzero((uint8_t *)di->blockbuf + resid, di->blocksize - resid); in kerneldumpcomp_write_cb()
1551 di->kdcomp->kdc_resid = resid; in kerneldumpcomp_write_cb()
1575 if (hdrsz > di->blocksize) in dump_write_headers()
1579 kdc = di->kdcrypto; in dump_write_headers()
1589 if (di->dumper_hdr != NULL) in dump_write_headers()
1590 return (di->dumper_hdr(di, kdh)); in dump_write_headers()
1592 if (hdrsz == di->blocksize) in dump_write_headers()
1595 buf = di->blockbuf; in dump_write_headers()
1596 memset(buf, 0, di->blocksize); in dump_write_headers()
1600 extent = dtoh64(kdh->dumpextent); in dump_write_headers()
1603 error = dump_write(di, kdc->kdc_dumpkey, in dump_write_headers()
1604 di->mediaoffset + di->mediasize - di->blocksize - extent - in dump_write_headers()
1612 di->mediaoffset + di->mediasize - 2 * di->blocksize - extent - in dump_write_headers()
1613 keysize, di->blocksize); in dump_write_headers()
1615 error = dump_write(di, buf, di->mediaoffset + di->mediasize - in dump_write_headers()
1616 di->blocksize, di->blocksize); in dump_write_headers()
1621 * Don't touch the first SIZEOF_METADATA bytes on the dump device. This is to
1633 * +-----------+------+-----+----------------------------+------+
1635 * +-----------+------+-----+----------------------------+------+
1636 * 1 blk opt <------- dump extent --------> 1 blk
1659 kdc = di->kdcrypto; in dump_start()
1664 key = keysize > 0 ? kdc->kdc_dumpkey : NULL; in dump_start()
1671 if (di->dumper_start != NULL) { in dump_start()
1672 error = di->dumper_start(di, key, keysize); in dump_start()
1674 dumpextent = dtoh64(kdh->dumpextent); in dump_start()
1675 span = SIZEOF_METADATA + dumpextent + 2 * di->blocksize + in dump_start()
1677 if (di->mediasize < span) { in dump_start()
1678 if (di->kdcomp == NULL) in dump_start()
1689 dumpextent = di->mediasize - span + dumpextent; in dump_start()
1690 kdh->dumpextent = htod64(dumpextent); in dump_start()
1696 di->dumpoff = di->mediaoffset + di->mediasize - di->blocksize - in dump_start()
1699 di->origdumpoff = di->dumpoff; in dump_start()
1709 if (di->kdcrypto != NULL) in _dump_append()
1710 error = dump_encrypted_write(di, virtual, di->dumpoff, length); in _dump_append()
1713 error = dump_write(di, virtual, di->dumpoff, length); in _dump_append()
1715 di->dumpoff += length; in _dump_append()
1729 if (di->kdcomp != NULL) { in dump_append()
1731 if (length > di->maxiosize) in dump_append()
1733 buf = di->kdcomp->kdc_buf; in dump_append()
1735 return (compressor_write(di->kdcomp->kdc_stream, buf, length)); in dump_append()
1751 return (di->dumper(di->priv, virtual, offset, length)); in dump_write()
1765 if (di->kdcomp != NULL) { in dump_finish()
1766 error = compressor_flush(di->kdcomp->kdc_stream); in dump_finish()
1768 /* We have residual data in di->blockbuf. */ in dump_finish()
1769 error = _dump_append(di, di->blockbuf, di->blocksize); in dump_finish()
1772 di->dumpoff -= di->blocksize - di->kdcomp->kdc_resid; in dump_finish()
1773 di->kdcomp->kdc_resid = 0; in dump_finish()
1782 kdh->dumplength = htod64(di->dumpoff - di->origdumpoff); in dump_finish()
1783 kdh->parity = 0; in dump_finish()
1784 kdh->parity = kerneldump_parity(kdh); in dump_finish()
1786 compressor_reset(di->kdcomp->kdc_stream); in dump_finish()
1804 strlcpy(kdh->magic, magic, sizeof(kdh->magic)); in dump_init_header()
1805 strlcpy(kdh->architecture, MACHINE_ARCH, sizeof(kdh->architecture)); in dump_init_header()
1806 kdh->version = htod32(KERNELDUMPVERSION); in dump_init_header()
1807 kdh->architectureversion = htod32(archver); in dump_init_header()
1808 kdh->dumplength = htod64(dumplen); in dump_init_header()
1809 kdh->dumpextent = kdh->dumplength; in dump_init_header()
1810 kdh->dumptime = htod64(time_second); in dump_init_header()
1812 kdh->dumpkeysize = htod32(kerneldumpcrypto_dumpkeysize(di->kdcrypto)); in dump_init_header()
1814 kdh->dumpkeysize = 0; in dump_init_header()
1816 kdh->blocksize = htod32(di->blocksize); in dump_init_header()
1817 strlcpy(kdh->hostname, prison0.pr_hostname, sizeof(kdh->hostname)); in dump_init_header()
1818 dstsize = sizeof(kdh->versionstring); in dump_init_header()
1819 if (strlcpy(kdh->versionstring, version, dstsize) >= dstsize) in dump_init_header()
1820 kdh->versionstring[dstsize - 2] = '\n'; in dump_init_header()
1822 strlcpy(kdh->panicstring, panicstr, sizeof(kdh->panicstring)); in dump_init_header()
1823 if (di->kdcomp != NULL) in dump_init_header()
1824 kdh->compression = di->kdcomp->kdc_format; in dump_init_header()
1825 kdh->parity = kerneldump_parity(kdh); in dump_init_header()