]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
2 months agoMerge llvm-project main llvmorg-18-init-15692-g007ed0dccd6a
Dimitry Andric [Mon, 25 Dec 2023 17:35:41 +0000 (18:35 +0100)]
Merge llvm-project main llvmorg-18-init-15692-g007ed0dccd6a

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-15692-g007ed0dccd6a.

PR: 276104
MFC after: 1 month

2 months agoTentatively apply https://github.com/llvm/llvm-project/pull/76175
Dimitry Andric [Thu, 21 Dec 2023 22:30:02 +0000 (23:30 +0100)]
Tentatively apply https://github.com/llvm/llvm-project/pull/76175

This fixes libsa including compiler-rt builtins.

PR: 276104
MFC after: 1 month

2 months agoMerge llvm-project main llvmorg-18-init-15088-gd14ee76181fb
Dimitry Andric [Mon, 18 Dec 2023 20:30:12 +0000 (21:30 +0100)]
Merge llvm-project main llvmorg-18-init-15088-gd14ee76181fb

This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
openmp to llvm-project main llvmorg-18-init-15088-gd14ee76181fb.

PR: 276104
MFC after: 1 month

2 months agotcp: improve consistency
Michael Tuexen [Sat, 6 Apr 2024 08:02:06 +0000 (10:02 +0200)]
tcp: improve consistency

No functional change intended.

Reported by: Coverity Scan
CID: 1523781
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44645

2 months agotcp rack: fix memory corruption
Michael Tuexen [Sat, 6 Apr 2024 07:55:46 +0000 (09:55 +0200)]
tcp rack: fix memory corruption

When in rack_output() jumping to the label out, don't write errno into
the log buffer, since the pointer is not initialized.

Reported by: Coverity Scan
CID: 1523773
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44647

2 months agodevmatch: Convert command line flags to bools
Warner Losh [Fri, 5 Apr 2024 22:34:03 +0000 (16:34 -0600)]
devmatch: Convert command line flags to bools

These are bools, and should have been bools from the start. Make them
bools.

Sponsored by: Netflix

2 months agodevmatch: Make -a work for all devices
Warner Losh [Fri, 5 Apr 2024 22:31:55 +0000 (16:31 -0600)]
devmatch: Make -a work for all devices

devmatch -a should produce output for all attached devices, but doesn't.

Noticed by: cperciva
Sponsored by: Netflix

2 months agostand: Install gptboot.efi(8)
Warner Losh [Thu, 4 Apr 2024 15:42:06 +0000 (09:42 -0600)]
stand: Install gptboot.efi(8)

We need to include bsd.init.mk first when we have man pages in the boot
loader.

Sponsored by: Netflix

2 months agonvme: Add my copyright to logpage.c
Warner Losh [Wed, 3 Apr 2024 18:10:08 +0000 (12:10 -0600)]
nvme: Add my copyright to logpage.c

Reflect the command line refactoring I did, and other changes. git blame
says I'm to blame for ~1/4 of this file.

Sponsored by: Netflix

2 months agonvme: Add LPA bits
Warner Losh [Wed, 3 Apr 2024 17:26:17 +0000 (11:26 -0600)]
nvme: Add LPA bits

Add all the bits from the NVMe 2.0 base specification: CMD_EFFECTS to
indicate the commands and effects log page is supported, TELEMETRY to
indicate that the telemetry log pages and protocols are supported,
PERSISTENT_EVENTS to indicate the persistent event log is supported,
LOG_PAGES_PAGE to indicate that various log pages related to log page
and command support are supported: L0, L5, L12, and L13. and
DA4_TELEMETRY to indicate that the DA4 area is supported for telemetry
data.

Sponsored by: Netflix

2 months agoarm64: Add a CPU reset hook instead of expecting PSCI
Stephen J. Kiernan [Fri, 5 Apr 2024 21:37:15 +0000 (17:37 -0400)]
arm64: Add a CPU reset hook instead of expecting PSCI

Some SoCs do not include a PSCI for power management and defer it to
something else instead. Add a CPU reset hook to account for this, and
use it in the psci driver.

Reviewed by: andrew
Obtained from: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D44535

2 months agoarm64: Separate serror handler to EL1H and EL0 versions.
Stephen J. Kiernan [Wed, 3 Apr 2024 23:38:56 +0000 (19:38 -0400)]
arm64: Separate serror handler to EL1H and EL0 versions.

In order to ensure the registers are saved and restored properly for
the exception level, we need separate handlers serror at each of
EL1H and EL0.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D44630

2 months agowhich: Use size_t instead of ssize_t for pathlen
Collin Funk [Sun, 11 Feb 2024 04:26:38 +0000 (20:26 -0800)]
which: Use size_t instead of ssize_t for pathlen

The "pathlen" variable is the return value of strlen(3) and is then
passed as an argument to malloc(3) and memcpy(3). The size_t type
matches the prototype for these functions. The size_t type is unsigned
so it can fit larger $PATH values than ssize_t. However, in practice
ssize_t should be larger enough so this change is just for clarity.

Signed-off-by: Collin Funk <collin.funk1@gmail.com>
MFC after: 1 week
Pull Request: https://github.com/freebsd/freebsd-src/pull/1113

2 months agoarm64: add CPU part identifiers for Apple M1 and M2
Lexi Winter [Sat, 23 Mar 2024 16:18:24 +0000 (16:18 +0000)]
arm64: add CPU part identifiers for Apple M1 and M2

Part numbers are sourced from Linux (arch/arm64/include/asm/cputype.h).

MFC after: 2 weeks
Pull Request: https://github.com/freebsd/freebsd-src/pull/1144

2 months agoLinuxKPI: Remove the temporary variable fileid from the macro request_module
Zhenlei Huang [Fri, 5 Apr 2024 16:26:09 +0000 (00:26 +0800)]
LinuxKPI: Remove the temporary variable fileid from the macro request_module

The variable fileid stores the result from kern_kldload() but never gets
used. Since the third parameter `*fileid` of kern_kldload() can be NULL,
this unused variable can be safely removed.

No functional change intended.

Reviewed by: emaste, bz, #linuxkpi
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44583

2 months agouipc_socket: handle socket buffer locks in sopeeloff
Michael Tuexen [Fri, 5 Apr 2024 16:14:54 +0000 (18:14 +0200)]
uipc_socket: handle socket buffer locks in sopeeloff

PR: 278171
Reviewed by: markj
Fixes: a4fc41423f7d ("sockets: enable protocol specific socket buffers")
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D44640

2 months agotcp rack: fix sending
Michael Tuexen [Fri, 5 Apr 2024 15:47:03 +0000 (17:47 +0200)]
tcp rack: fix sending

In rack_output(), idle is used as a boolean variable. So don't use it
as an int and don't clear it afterwards.
This avoids setting idle to false, when it is not intended.

Reported by: olivier
Reviewed by: rrs, rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44610

2 months agoMerge commit eb8f379567e8 from llvm-project (by Florian Hahn):
Dimitry Andric [Fri, 5 Apr 2024 13:00:12 +0000 (15:00 +0200)]
Merge commit eb8f379567e8 from llvm-project (by Florian Hahn):

  [DSE] Remove malloc from EarliestEscapeInfo before removing. (#84157)

  Not removing the malloc from earliest escape info leaves stale entries
  in the cache.

  Fixes https://github.com/llvm/llvm-project/issues/84051.

  PR: https://github.com/llvm/llvm-project/pull/84157

This fixes a crash in clang (usually a bus error, but can also be
another memory error) when compiling the science/siconos port.

PR: 278174
Reported by: yuri
MFC after: 3 days

2 months agotarfs.5: Provide some guidance on zstd frame sizes
Mark Johnston [Fri, 5 Apr 2024 15:28:55 +0000 (11:28 -0400)]
tarfs.5: Provide some guidance on zstd frame sizes

Reviewed by: des, emaste
MFC after: 2 weeks
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44636

2 months agotcp bblog: cleanup
Michael Tuexen [Fri, 5 Apr 2024 15:36:40 +0000 (17:36 +0200)]
tcp bblog: cleanup

Remove redundant checks and improve error checking.

Reported by: Coverity Scan
CID: 1523780
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44616

2 months agotcp hpts: initialize variable
Michael Tuexen [Fri, 5 Apr 2024 15:30:31 +0000 (17:30 +0200)]
tcp hpts: initialize variable

Ensure that  tv.tv_sec is zero in all code paths.

Reported by: Coverity Scan
CID: 1527724
Reviewed by: rscheff
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44584

2 months agoacpidump: add Foundation copyright
Konstantin Belousov [Fri, 5 Apr 2024 14:57:19 +0000 (17:57 +0300)]
acpidump: add Foundation copyright

Sponsored by: The FreeBSD Foundation
MFC after: 1 week

2 months agoacpidump: dump AMD IVRS table describing IOMMU layout
Konstantin Belousov [Sun, 31 Mar 2024 23:30:37 +0000 (02:30 +0300)]
acpidump: dump AMD IVRS table describing IOMMU layout

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: add printfield() helper
Konstantin Belousov [Thu, 4 Apr 2024 04:49:21 +0000 (07:49 +0300)]
acpidump: add printfield() helper

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: bump WARNS to 6
Konstantin Belousov [Wed, 3 Apr 2024 03:00:25 +0000 (06:00 +0300)]
acpidump: bump WARNS to 6

and disable warnings about unused function args coming from the vendor
acpi headers.

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: the acpi_get_fadt_revision() argument is unused
Konstantin Belousov [Thu, 4 Apr 2024 15:42:36 +0000 (18:42 +0300)]
acpidump: the acpi_get_fadt_revision() argument is unused

everywhere except i386.

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agoacpidump: silent the warning about unaligned uuid
Konstantin Belousov [Wed, 3 Apr 2024 02:58:28 +0000 (05:58 +0300)]
acpidump: silent the warning about unaligned uuid

The field comes from the ACPI NFIT table and must be already properly
aligned by BIOS (at least so is written in the spec).

Reviewed by: markj
Sponsored by: Advanced Micro Devices (AMD)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44634

2 months agotarfs: Implement VOP_BMAP
Mark Johnston [Fri, 5 Apr 2024 15:14:36 +0000 (11:14 -0400)]
tarfs: Implement VOP_BMAP

This lets tarfs provide readahead/behind hints to the VFS, which helps
memory-mapped I/O performance, important when running faulting in
executables out of a tarfs mount as one might if tarfs is used to back
the root filesystem, for example.  The improvement is particularly
noticeable when the backing tarball is zstd-compressed.

The implementation simply returns the extent of the virtual block
containing the target offset, clamped by the maximum I/O size.  This is
perhaps simplistic; it effectively just chooses values that would
correspond to a single VOP_READ call in tarfs_read_file().

Reviewed by: des, kib
MFC after: 1 month
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44626

2 months agoVOP_BMAP.9: Typo
Mark Johnston [Fri, 5 Apr 2024 15:14:28 +0000 (11:14 -0400)]
VOP_BMAP.9: Typo

MFC after: 1 week
Sponsored by: Klara, Inc.

2 months agostop_all_proc(): skip traced or signal-stoped processes
Konstantin Belousov [Thu, 4 Apr 2024 19:24:32 +0000 (22:24 +0300)]
stop_all_proc(): skip traced or signal-stoped processes

Since thread_single(SINGLE_ALLPROC) ignores them since 9241ebc796c,
and there is not much we can do for the debugger-controlled process.

Noted by: olce
Reviewed by: markj, olce
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44638

2 months agoAdd OpenBSD 7.5 to bsd-family-tree
Juraj Lutter [Fri, 5 Apr 2024 06:27:12 +0000 (08:27 +0200)]
Add OpenBSD 7.5 to bsd-family-tree

Summary: Add OpenBSD 7.5 to bsd-family-tree

Subscribers: imp

Differential Revision: https://reviews.freebsd.org/D44643

2 months agoRevert "sound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)"
Christos Margiolis [Fri, 5 Apr 2024 10:32:32 +0000 (12:32 +0200)]
Revert "sound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)"

This reverts commit dc831e93bad63f9faea09f1806a7733a40bff316.

After several reports in the mailing lists, this commit breaks
pulseaudio. Revert until the issue is resolved.

2 months agoRevert "sound: Implement asynchronous device detach"
Christos Margiolis [Fri, 5 Apr 2024 10:27:47 +0000 (12:27 +0200)]
Revert "sound: Implement asynchronous device detach"

This reverts commit 9eff58c6d52b66eb8abe7f724dabcd804a566df4.

We are reverting dc831e93bad6 ("sound: Get rid of snd_clone and use
DEVFS_CDEVPRIV(9)"), so revert this commit as well since it depends
dc831e93bad6.

2 months agoBackport export of lzma_mt_block_size symbol.
Xin LI [Fri, 5 Apr 2024 06:39:33 +0000 (23:39 -0700)]
Backport export of lzma_mt_block_size symbol.

This restores binary compatibility against liblzma 5.6.0 library.

PR: 278127
MFC after: 3 days

2 months agoRevert "MFV: xz 5.6.0"
Xin LI [Fri, 5 Apr 2024 06:39:23 +0000 (23:39 -0700)]
Revert "MFV: xz 5.6.0"

This commit reverts 8db56defa766eacdbaf89a37f25b11a57fd9787a,
rolling back the vendor import of xz 5.6.0 and restoring the
package to version 5.4.5.

The revert was not directly due to the attack (CVE-2024-3094):
our import process have removed the test cases and build scripts
that would have enabled the attack. However, reverting would
help to reduce potential confusion and false positives from
security scanners that assess risk based solely on version
numbers.

Another commit will follow to restore binary compatibility with
the liblzma 5.6.0 library by making the previously private
symbol (lzma_mt_block_size) public.

PR: 278127
MFC after: 3 days

2 months agopowerpc/booke: Reserve KVA for minidump working area
Justin Hibbits [Thu, 4 Apr 2024 22:23:39 +0000 (18:23 -0400)]
powerpc/booke: Reserve KVA for minidump working area

This was already handled for the AIM64 pmaps, so add the same to
Book-E64 pmap.

2 months agotmpfs tests: Remove an xfail annotation
Mark Johnston [Thu, 4 Apr 2024 21:04:30 +0000 (17:04 -0400)]
tmpfs tests: Remove an xfail annotation

This test passes after commit 08f3d5b60cdf ("copy_file_range: Call
vn_rdwr() at least once").

PR: 274615
MFC after: 1 month

2 months agocopy_file_range: Call vn_rdwr() at least once
Mark Johnston [Thu, 4 Apr 2024 15:18:03 +0000 (11:18 -0400)]
copy_file_range: Call vn_rdwr() at least once

This ensures that we invoke VOP_READ on the input file even if it's
empty, which in turn helps ensure that filesystems update the atime of
the file.

PR: 274615
Reviewed by: olce, rmacklem, kib
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D43524

2 months agofusefs: correct a comment
Alan Somers [Thu, 4 Apr 2024 20:18:56 +0000 (14:18 -0600)]
fusefs: correct a comment

[skip ci]

MFC after: 1 week
Sponsored by: Axcient

2 months agotarfs.5: Document the importance of zstd framing
Mark Johnston [Thu, 4 Apr 2024 14:54:25 +0000 (10:54 -0400)]
tarfs.5: Document the importance of zstd framing

Reviewed by: des, kib
MFC after: 1 week
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44628

2 months agotarfs: Inherit mnt_iosize_max from the lower vnode
Mark Johnston [Thu, 4 Apr 2024 14:54:06 +0000 (10:54 -0400)]
tarfs: Inherit mnt_iosize_max from the lower vnode

There is no obvious reason to use a value smaller than that.

Reviewed by: des, kib
MFC after: 1 week
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44627

2 months agoln: Improve link(1) variant of ln(1).
Dag-Erling Smørgrav [Thu, 4 Apr 2024 14:14:50 +0000 (16:14 +0200)]
ln: Improve link(1) variant of ln(1).

* Give link(1) its own usage message.
* Use getprogname(3) instead of rolling our own.
* Verify that the target file does not already exist.
* Add tests specific to link(1).

MFC after: 3 days
Sponsored by: Klara, Inc.
Reviewed by: allanjude
Differential Revision: https://reviews.freebsd.org/D44635

2 months agotmpfs: Improve file time tests.
Dag-Erling Smørgrav [Thu, 4 Apr 2024 13:40:47 +0000 (15:40 +0200)]
tmpfs: Improve file time tests.

* The empty test case no longer fails because 89f1dcb3eb46 causes empty
  files to bypass the bug.
* The bug still exists, so add a test case which exercises it.
* While here, tighten up some of the checks.

A similar patch has been submitted upstream.

PR: 274615
X-MFC-With: 89f1dcb3eb46
Sponsored by: Juniper Networks, Inc.
Sponsored by: Klara, Inc.
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D44609

2 months agotcpdump: cope with incorrect packet lengths
Kristof Provost [Mon, 1 Apr 2024 09:42:14 +0000 (11:42 +0200)]
tcpdump: cope with incorrect packet lengths

It's possible for the capture buffer to be smaller than indicated by the
header length. However, pfsync_print() only took the header length into
account. As a result we could read outside of the buffer.

Check that we have at least the expected amount of data before we start
parsing.

PR: 278034
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D44580

2 months agoinclude: Ensure security/audit/audit.h gets staged properly.
Stephen J. Kiernan [Thu, 4 Apr 2024 00:22:29 +0000 (20:22 -0400)]
include: Ensure security/audit/audit.h gets staged properly.

There is a conflict between bsm/audit.h and security/audit/audit.h due
to the way that staging is being set up using .PATH to point to the
full directory and the leaf files being specified in the list. Due to
this, the bsm/audit.h was getting staged as both bsm/audit.h and
security/audit/audit.h since the sys/bsm directory is listed first in
the .PATH list.

Use sys/security in the .PATH instead of sys/security/audit and specify
the audit header files as audit/<name>.h. This ensures that we get the
correct audit.h stanged for security/audit/audit.h.

Reviewed by: sjg
Obtained from: Juniper Networks, Inc.

2 months agouserboot: allow for overriding the version file location
Stephen J. Kiernan [Wed, 3 Apr 2024 21:22:01 +0000 (17:22 -0400)]
userboot: allow for overriding the version file location

Use ?= when assigning VERSION_FILE

Reviewed by: imp
Obtained from: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D44624

2 months agotcp: address a warning
Michael Tuexen [Wed, 3 Apr 2024 22:14:59 +0000 (00:14 +0200)]
tcp: address a warning

t_state is an unsigned variable, so no need for testing that it is
non-negative.

Reported by: Coverity Scan
CID: 1390885
Reviewed by: glebius
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44619

2 months agokernel: Add options for MAC_DEBUG and MAC_VERIEXEC_DEBUG
Stephen J. Kiernan [Wed, 3 Apr 2024 20:05:25 +0000 (16:05 -0400)]
kernel: Add options for MAC_DEBUG and MAC_VERIEXEC_DEBUG

2 months agosdt: Use designated initializers for various definitions
Mark Johnston [Wed, 3 Apr 2024 18:41:29 +0000 (14:41 -0400)]
sdt: Use designated initializers for various definitions

No functional change intended.

MFC after: 1 week

2 months agoefitable(8): Complete libxo transition
Yan-Hao Wang [Wed, 3 Apr 2024 18:32:00 +0000 (02:32 +0800)]
efitable(8): Complete libxo transition

Reviewed by: des
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D41411

2 months agosavecore(8): Complete libxo transition
Yan-Hao Wang [Wed, 3 Apr 2024 18:28:30 +0000 (02:28 +0800)]
savecore(8): Complete libxo transition

Reviewed by: des
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D41392

2 months agoddb: Fix format string errors in db_pprint.c
Mark Johnston [Wed, 3 Apr 2024 18:12:45 +0000 (14:12 -0400)]
ddb: Fix format string errors in db_pprint.c

Reported by: bapt
Fixes: aada453dcbaa ("ddb: Properly pretty-print non-labeled enum values")

2 months agobhnd_erom.9: remove self-reference
Christopher Davidson [Wed, 3 Apr 2024 16:51:48 +0000 (13:51 -0300)]
bhnd_erom.9: remove self-reference

Change .Xr to .Fn, which quiets a mandoc warning.

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/1135

2 months agodevice_add_child.9: remove self-reference
Christopher Davidson [Wed, 3 Apr 2024 16:48:40 +0000 (13:48 -0300)]
device_add_child.9: remove self-reference

Change .Xr to .Nm, which quiets a mandoc warning

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/1135

2 months agocfumass.4: remove self-reference
Christopher Davidson [Wed, 3 Apr 2024 16:47:14 +0000 (13:47 -0300)]
cfumass.4: remove self-reference

Change .Xr to .Nm, which quiets a mandoc warning.

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/1135

2 months agomount_mfs.8: remove self-reference
Christopher Davidson [Wed, 3 Apr 2024 16:43:51 +0000 (13:43 -0300)]
mount_mfs.8: remove self-reference

Change .Xr instances to .Nm, which quiets several mandoc warnings.

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/1135

2 months agoopen.2: remove self-reference
Christopher Davidson [Wed, 3 Apr 2024 16:38:41 +0000 (13:38 -0300)]
open.2: remove self-reference

Change .Xr reference to .Fn, which quiets a mandoc warning.

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/1135

2 months agotcp: fix conversion of rttvar
Michael Tuexen [Wed, 3 Apr 2024 16:39:31 +0000 (18:39 +0200)]
tcp: fix conversion of rttvar

A wrong variable and wrong scaling factors were used.

Reported by: Coverity Scan
CID: 1508689
Reviewed by: rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44612

2 months agotcp: fix comment
Michael Tuexen [Wed, 3 Apr 2024 16:21:19 +0000 (18:21 +0200)]
tcp: fix comment

Make the comment consistent with the code.

Reviewed by: rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44611

2 months agoarm64: correctly handle a failed BTI check in pmap_enter_l2()
Alan Cox [Wed, 3 Apr 2024 05:21:08 +0000 (00:21 -0500)]
arm64: correctly handle a failed BTI check in pmap_enter_l2()

If pmap_enter_l2() does not create a mapping because the BTI check
fails, then we should release the reference on the page table page
acquired from pmap_alloc_l2().  Otherwise, the page table page will
never be reclaimed.

2 months agoddb: Don't throw away qualifier when pretty-printing unnamed pointers
Bojan Novković [Wed, 3 Apr 2024 15:55:13 +0000 (17:55 +0200)]
ddb: Don't throw away qualifier when pretty-printing unnamed pointers

Reported by: jrtc27
Fixes: c21bc6f ("ddb: Add CTF-based pretty printing")
Approved by: markj (mentor)

2 months agoddb: Properly pretty-print non-labeled enum values
Bojan Novković [Wed, 3 Apr 2024 15:47:00 +0000 (17:47 +0200)]
ddb: Properly pretty-print non-labeled enum values

The ddb pretty-printer currently does not print out enum values that
are not labeled (e.g. X | Y).
The enum printer was reworked to print non-labeled values.

Reported by: jrtc27
Fixes: c21bc6f ("ddb: Add CTF-based pretty printing")
Approved by: markj (mentor)

2 months agonextboot: Write nextboot.conf safely
Mark Johnston [Wed, 3 Apr 2024 15:29:25 +0000 (11:29 -0400)]
nextboot: Write nextboot.conf safely

As in the old nextboot.sh script:
- First write everything to a tempfile instead of /boot/nextboot.conf.
- fsync() the tempfile before renaming it to nextboot.conf.

Fixes: fd6d47375a78 ("rescue,nextboot: Install nextboot as a link to reboot, rm nextboot.sh")
Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D44572

2 months agotarfs: Fix 32-bit build.
Dag-Erling Smørgrav [Wed, 3 Apr 2024 14:24:05 +0000 (16:24 +0200)]
tarfs: Fix 32-bit build.

MFC after: 3 days
Sponsored by: Juniper Networks, Inc.
Sponsored by: Klara, Inc.
Reviewed by: bapt
Differential Revision: https://reviews.freebsd.org/D44613

2 months agotarfs: Ignore global extended headers.
Dag-Erling Smørgrav [Wed, 3 Apr 2024 09:55:06 +0000 (11:55 +0200)]
tarfs: Ignore global extended headers.

Previously, we would error out if we encountered a global extended
header, because we don't know what it means.  This doesn't really
matter though, and traditionally, tar implementations have either
ignored them or treated them as plain files, so just ignore them.
This allows tarfs to mount tar files created by `git archive`.

MFC after: 3 days
Sponsored by: Juniper Networks, Inc.
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D44600

2 months agotarfs: Support paths that spill into exthdrs.
Dag-Erling Smørgrav [Wed, 3 Apr 2024 09:55:01 +0000 (11:55 +0200)]
tarfs: Support paths that spill into exthdrs.

MFC after: 3 days
Sponsored by: Juniper Networks, Inc.
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D44599

2 months agoSYSCTL_ADD_CONST_STRING(9): HISTORY
David E. O'Brien [Wed, 3 Apr 2024 06:25:39 +0000 (23:25 -0700)]
SYSCTL_ADD_CONST_STRING(9): HISTORY

Add information of where one may use this API.

2 months agoAdd SYSCTL_ADD_CONST_STRING(9)
David E. O'Brien [Tue, 2 Apr 2024 21:21:35 +0000 (14:21 -0700)]
Add SYSCTL_ADD_CONST_STRING(9)

Catch up with 10a1e981d (2019-03-19) so that one can do
'man SYSCTL_ADD_CONST_STRING' and not get
"No manual entry for SYSCTL_ADD_CONST_STRING".

Reviewed by: sjg

2 months agoReinstate returning EOVERFLOW from stats_v1_blob_clone()
Lawrence Stewart [Tue, 2 Apr 2024 06:34:25 +0000 (17:34 +1100)]
Reinstate returning EOVERFLOW from stats_v1_blob_clone()

a0993376ec5f (from D43179) subtly changed stats_v1_blob_clone() to stop returning EOVERFLOW in the case where the user buffer is not large enough to receive the entire statsblob. This results in any consumers which are implemented to retry on receiving EOVERFLOW to instead give up after receiving an empty statsblob header.

Fix by latching any errors recorded prior to copyout.

Reviewed by: markj
Obtained from: Netflix, Inc.
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D44585
Fixes: a0993376ec5f ("stats: Check for errors from copyout()")

2 months agoOptionalObsoleteFiles: add missed cuda wrappers include files
Olivier Cochard [Tue, 2 Apr 2024 20:43:05 +0000 (22:43 +0200)]
OptionalObsoleteFiles: add missed cuda wrappers include files

Files introduced since clang 17.0.2.

Approved by: dim
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D44597

2 months agoacpidump(8) Fix typo in error message
SHENG-YI HONG [Tue, 2 Apr 2024 17:24:46 +0000 (01:24 +0800)]
acpidump(8) Fix typo in error message

acpidump(8) uses iasl(8) to parse acpi information.

MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D44596

2 months agosound: Move sndstat_prepare_pcm() to pcm/sndstat.c and remove sndstat_entry->handler
Christos Margiolis [Tue, 2 Apr 2024 16:56:39 +0000 (18:56 +0200)]
sound: Move sndstat_prepare_pcm() to pcm/sndstat.c and remove sndstat_entry->handler

Since all sndstat_entry->handler fields point to sndstat_prepare_pcm(),
we can just call the function directly, without assigning it to a
function pointer and calling it indirectly.

While here, move sndstat_prepare_pcm() to pcm/sndstat.c, as it is more
suitable there.

No functional change intended.

Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Reviewed by: dev_submerge.ch, markj
Differential Revision: https://reviews.freebsd.org/D44571

2 months agofreebsd-update: Fix typo in comment
a-biardi [Tue, 2 Apr 2024 12:28:52 +0000 (13:28 +0100)]
freebsd-update: Fix typo in comment

s/patchname expansion/pathname expansion/

Signed-off-by: a.biardi@tiscali.it
Pull-request: https://github.com/freebsd/freebsd-src/pull/1152

2 months agoLinuxKPI: add PCI_VENDOR_ID_ITTIM
Bjoern A. Zeeb [Tue, 2 Apr 2024 09:40:42 +0000 (09:40 +0000)]
LinuxKPI: add PCI_VENDOR_ID_ITTIM

Add PCI_VENDOR_ID_ITTIM as needed by mt76.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days

2 months agoFix the logic which determines if the destination Q variable can represent the source...
Lawrence Stewart [Tue, 2 Apr 2024 05:07:04 +0000 (16:07 +1100)]
Fix the logic which determines if the destination Q variable can represent the source Q variable's value with full accuracy.

The new logic is mostly self explanatory except for the value fit checks.

If b has fewer integer bits than a, 0 == (Q_GIABSVAL(a) & (~Q_TC(a, 0) << Q_NIBITS(b))) is checking that a's integer value does not have high-order bits set above what b is capable of storing.

If b has fewer fractional bits than a, 0 == (Q_GFABSVAL(a) & ~(~Q_TC(a, 0) << (Q_NFBITS(a) - Q_NFBITS(b))))) is checking that a's fractional value does not have low-order bits set below what b is capable of storing.

Obtained from: Netflix, Inc.
MFC afer: 1 week

2 months agofwget: Add needed firmware for Radeon 780M GPU
Philipp Ost [Tue, 2 Apr 2024 05:38:00 +0000 (07:38 +0200)]
fwget: Add needed firmware for Radeon 780M GPU

PR: 278115

2 months agoptrace tests: Fix a signed/unsigned integer comparison
Mark Johnston [Mon, 1 Apr 2024 23:10:36 +0000 (19:10 -0400)]
ptrace tests: Fix a signed/unsigned integer comparison

Reported by: Jenkins
Fixes: 43b4da44118e ("ptrace tests: Add a test using PROC_REAP_KILL to kill a traced debuggee")

2 months agotcp hpts: improve consistency
Michael Tuexen [Mon, 1 Apr 2024 19:51:59 +0000 (21:51 +0200)]
tcp hpts: improve consistency

The target_slot argument of max_slots_available() can be NULL.
Therefore, check for this in all places.
Right now, all callers provide non-NULL pointer.

Reported by: Coverity Scan
CID: 1527732
Reviewed by: rrs
MFC after: 3 days
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D44527

2 months agocp: Improved conformance when copying directories.
Dag-Erling Smørgrav [Mon, 1 Apr 2024 17:28:58 +0000 (19:28 +0200)]
cp: Improved conformance when copying directories.

* When copying a directory, if the destination exists and is not a
  directory, we would previously emit an error message and exit.  The
  correct behavior according to POSIX is to emit an error message and
  continue without descending further into the source directory.

* When copying a directory, if the destination does not exist and we
  fail to create it, we would previously emit an error message and
  exit.  The correct behavior according to POSIX is to emit an error
  message and continue.  Whether to descend further into the source
  directory is explicitly left unspecified; GNU cp does not, which
  seems to me to be the safer and less surprising option, so let's not
  either.

MFC after: 1 week
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D44577

2 months agocp: Correct the list of non-portable flags.
Dag-Erling Smørgrav [Mon, 1 Apr 2024 17:28:53 +0000 (19:28 +0200)]
cp: Correct the list of non-portable flags.

MFC after: 1 week
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D44576

2 months agowg: Use ENETUNREACH when transmitting to a non-existent peer
Mark Johnston [Mon, 1 Apr 2024 17:20:55 +0000 (13:20 -0400)]
wg: Use ENETUNREACH when transmitting to a non-existent peer

The old errno value used is specifically for Capsicum and shouldn't be
co-opted in this way.  It has special handling in the generic syscall
layer (see syscallret()).  OpenBSD returns ENETUNREACH in this case;
let's do the same thing.

Reviewed by: kevans, imp
MFC after: 2 weeks
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D44582

2 months agousr.bin: Make lorder conditional on MK_TOOLCHAIN.
Dag-Erling Smørgrav [Mon, 1 Apr 2024 13:18:35 +0000 (15:18 +0200)]
usr.bin: Make lorder conditional on MK_TOOLCHAIN.

MFC after: 1 week
Reviewed by: allanjude, markj
Differential Revision: https://reviews.freebsd.org/D44558

2 months agoif_bridge: use IF_MINMTU
Eugene Grosbein [Mon, 1 Apr 2024 03:31:51 +0000 (10:31 +0700)]
if_bridge: use IF_MINMTU

Replace incorrect constant 576 with IF_MINMTU to check for minumum MTU.
This unbreaks bridging tap interfaces with small mtu.

MFC after: 1 week

2 months agosnd_hdspe(4): Only buffer_copy() audio data once.
Florian Walpen [Sun, 31 Mar 2024 19:14:16 +0000 (20:14 +0100)]
snd_hdspe(4): Only buffer_copy() audio data once.

Instead of blindly copying two periods of audio data to and from DMA
buffers, keep track of the writing position and derive the actual
part of audio data that needs to be copied.
This approximately halves the number of samples copied in total.

Differential Revision: https://reviews.freebsd.org/D44084

2 months agomountd.c: Add warning messages for administrative controls
Rick Macklem [Sun, 31 Mar 2024 19:00:08 +0000 (12:00 -0700)]
mountd.c: Add warning messages for administrative controls

When "administrative controls" (which are exports of subdirectories
within a NFS server's local file system) are used, they export the
entire local server file system. (The subdirectory only applies to
the Mount protocol used for NFSv3 mounts.)

To minimize the risk that this causes confusion w.r.t. what is exported
to NFS client(s), this patch generates warning messages for these.
Only one message is generated for each server local file system.
The messages can be silenced via a new "-A" command line option.

The mountd.8 man page will be patched via a separate commit.

Reviewed by: emaste, markj
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D44502

2 months agobsd-family-tree: remove EoL whitespace
Maxim Konovalov [Sun, 31 Mar 2024 18:36:03 +0000 (18:36 +0000)]
bsd-family-tree: remove EoL whitespace

2 months agobsd-family-tree: add NetBSD 10.0
Maxim Konovalov [Sun, 31 Mar 2024 18:35:02 +0000 (18:35 +0000)]
bsd-family-tree: add NetBSD 10.0

2 months agokern linker: Don't invoke dtors without having invoked ctors
Mark Johnston [Sun, 31 Mar 2024 18:14:02 +0000 (14:14 -0400)]
kern linker: Don't invoke dtors without having invoked ctors

I have a kernel module which fails to load because of an unrecognized
relocation type.  link_elf_load_file() fails before the module's ctors
are invoked and it calls linker_file_unload(), which causes the module's
dtors to be executed, resulting in a kernel panic.

Add a flag to the linker file to ensure that dtors are not invoked if
unloading due to an error prior to ctors being invoked.

At the moment I only implemented this for link_elf_obj.c since
link_elf.c doesn't invoke dtors, but I refactored link_elf.c to make
them more similar.

Fixes: 9e575fadf491 ("link_elf_obj: Invoke fini callbacks")
Reviewed by: zlei, kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D44559

2 months agoptrace tests: Add a test using PROC_REAP_KILL to kill a traced debuggee
Mark Johnston [Sun, 31 Mar 2024 18:11:47 +0000 (14:11 -0400)]
ptrace tests: Add a test using PROC_REAP_KILL to kill a traced debuggee

This exercises the bug fix in commit 9241ebc796c1
("thread_single(9): decline external requests for traced or debugger-stopped procs").

Reviewed by: kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D44564

2 months agotar: make error reporting more robust and use correct errno
Ed Maste [Sun, 31 Mar 2024 14:37:38 +0000 (10:37 -0400)]
tar: make error reporting more robust and use correct errno

Apply upstream pull request 2101.

2 months agosound: Implement asynchronous device detach
Christos Margiolis [Sun, 31 Mar 2024 14:13:43 +0000 (22:13 +0800)]
sound: Implement asynchronous device detach

Hot-unplugging a sound device, such as a USB sound card, whilst being
consumed by an application, results in an infinite loop until either the
application closes the device's file descriptor, or the channel
automatically times out after hw.snd.timeout seconds. In the case of a
detach however, the timeout approach is still not ideal, since we want
all resources to be released immediatelly, without waiting for N seconds
until we can use the bus again.

The timeout mechanism works by calling chn_sleep() in chn_read() and
chn_write() (see pcm/channel.c) in order to send the thread to sleep,
using cv_timedwait_sig(). Since chn_sleep() sets the CHN_F_SLEEPING flag
while waiting for cv_timedwait_sig() to return, we can test this flag in
pcm_unregister() (called during detach) and wakeup the sleeping
thread(s) to immediately kill the channel(s) being consumed.

Sponsored by: The FreeBSD Foundation
MFC after: 2 months
PR: 194727, 278055, 202275, 220949, 272286
Reviewed by: dev_submerge.ch, markj
Differential Revision: https://reviews.freebsd.org/D43545

2 months agosound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)
Christos Margiolis [Sun, 31 Mar 2024 05:20:17 +0000 (13:20 +0800)]
sound: Get rid of snd_clone and use DEVFS_CDEVPRIV(9)

Currently the snd_clone framework creates device nodes on-demand for
every channel, through the dsp_clone() callback, and is responsible for
routing audio to the appropriate channel(s). This patch gets rid of the
whole snd_clone framework (including any related sysctls) and instead
uses DEVFS_CDEVPRIV(9) to handle device opening, channel allocation and
audio routing. This results in a significant reduction in code size as
well as complexity.

Behavior that is preserved:

- hw.snd.basename_clone.
- Exclusive access of an audio device (i.e VCHANs disabled).
- Multiple processes can read from/write to the device.
- A device can only be opened as many times as the maximum allowed
  channel number (see SND_MAXHWCHAN in pcm/sound.h).
- OSSv4 compatibility aliases are preserved.

Behavior changes:

Only one /dev/dspX device node is created (on attach) for each audio
device, as opposed to the current /dev/dspX.Y devices created by
snd_clone. According to the sound(4) man page, devices are not meant to
be opened through /dev/dspX.Y anyway, so it is best if we do not create
device nodes for them in the first place. As a result of this, modify
dsp_oss_audioinfo() to print /dev/dspX in the "ai->devnode", instead of
/dev/dspX.Y.

Sponsored by: The FreeBSD Foundation
MFC after: 2 months
Reviewed by: dev_submerge.ch, markj
Differential Revision: https://reviews.freebsd.org/D44411

2 months agozfs: merge openzfs/zfs@39be46f43
Martin Matuska [Sat, 30 Mar 2024 21:14:52 +0000 (22:14 +0100)]
zfs: merge openzfs/zfs@39be46f43

Notable upstream pull request merges:
 #15509 b1e46f869 Add ashift validation when adding devices to a pool
 #15927 45e23abed Update resume token at object receive
 #15941 bf8f72359 BRT: Skip duplicate BRT prefetches
 #15950 8cd8ccca5 BRT: Skip getting length in brt_entry_lookup()
 #15951 80cc51629 ZAP: Massively switch to _by_dnode() interfaces
 #15954 2c01cae8b BRT: Change brt_pending_tree sorting order
 #15955 4616b96a6 BRT: Relax brt_pending_apply() locking
 #15959 5c4a4f82c zio: update ZIO type x stage documentation
 #15962 493fcce9b Provide macros for setting and getting blkptr birth times
 #15963 90ff73235 freebsd: fix missing headers in distribution tarball
 #15967 f68bde723 BRT: Make BRT block sizes configurable
 #15976 c28f94f32 ZAP: Some cleanups/micro-optimizations
 #15995 cfb96c772 vdev_disk: clean up spa/bdev mode conversion
 #16006 c0aab8b8f zvols: prevent overflow of minor device numbers
 #16007 a89d209bb BRT: Fix holes cloning
 #16008 c9d8f6c59 Fix option string, adding -e and fixing order

Obtained from: OpenZFS
OpenZFS commit: 39be46f43f96fb7420386d03751b01f5cb376d6b

2 months agoarm64: enable superpage mappings by pmap_mapdev{,_attr}()
Alan Cox [Sat, 30 Mar 2024 20:35:32 +0000 (15:35 -0500)]
arm64: enable superpage mappings by pmap_mapdev{,_attr}()

In order for pmap_kenter{,_device}() to create superpage mappings,
either 64 KB or 2 MB, pmap_mapdev{,_attr}() must request appropriately
aligned virtual addresses.

Reviewed by: markj
Tested by: gallatin
Differential Revision: https://reviews.freebsd.org/D42737

2 months agoarm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]
Eliot Solomon [Sun, 24 Mar 2024 19:01:47 +0000 (14:01 -0500)]
arm64 pmap: Add ATTR_CONTIGUOUS support [Part 1]

The ATTR_CONTIGUOUS bit within an L3 page table entry designates that
L3 page as being part of an aligned, physically contiguous collection
of L3 pages.  For example, 16 aligned, physically contiguous 4 KB pages
can form a 64 KB superpage, occupying a single TLB entry.  While this
change only creates ATTR_CONTIGUOUS mappings in a few places,
specifically, the direct map and pmap_kenter{,_device}(), it adds all
of the necessary code for handling them once they exist, including
demotion, protection, and removal.  Consequently, new ATTR_CONTIGUOUS
usage can be added (and tested) incrementally.

Modify the implementation of sysctl vm.pmap.kernel_maps so that it
correctly reports the number of ATTR_CONTIGUOUS mappings on machines
configured to use a 16 KB base page size, where an ATTR_CONTIGUOUS
mapping consists of 128 base pages.

Additionally, this change adds support for creating L2 superpage
mappings to pmap_kenter{,_device}().

Reviewed by: markj
Tested by: gallatin
Differential Revision: https://reviews.freebsd.org/D42737

2 months agothread_single(9): decline external requests for traced or debugger-stopped procs
Konstantin Belousov [Wed, 27 Mar 2024 12:29:25 +0000 (14:29 +0200)]
thread_single(9): decline external requests for traced or debugger-stopped procs

Debugger has the powers to cause unbound delay in single-threading,
which then blocks the threaded taskqueue.  The reproducer is
`truss -f timeout 2 sleep 10`.

Reported by: mjg
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D44523

2 months agopkgbase: Remove FreeBSD-ipfilter package
Emmanuel Vadot [Sat, 30 Mar 2024 08:36:35 +0000 (09:36 +0100)]
pkgbase: Remove FreeBSD-ipfilter package

Put the periodic script for ipfilter in the FreeBSD-ipf package with
all the utilities.

PR: 278042
Sponsored by: Beckhoff Automation GmbH & Co. KG

2 months agodts: Fix arm dts path for marvell too
Bjoern A. Zeeb [Sat, 30 Mar 2024 02:31:32 +0000 (02:31 +0000)]
dts: Fix arm dts path for marvell too

Linux 6.5 moved to a vendor-based subdirectory for arm DTS, change
our Makefiles accordingly.

This makes universe also compile arm.armv7 ARMADA38X sucessfully.

2 months agoLinux 5.18+ compat: Detect filemap_range_has_page
Robert Evans [Sat, 30 Mar 2024 00:11:52 +0000 (20:11 -0400)]
Linux 5.18+ compat: Detect filemap_range_has_page

In v5.18 `filemap_range_has_page` moved to `pagemap.h`

`pagemap.h` has been around since 3.10 so just include both

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Rob Norris <robn@despairlabs.com>
Signed-off-by: Robert Evans <evansr@google.com>
Closes #16034

2 months agovf_i2c: update I2C controller logic
Pierre-Luc Drouin [Fri, 22 Mar 2024 22:13:04 +0000 (22:13 +0000)]
vf_i2c: update I2C controller logic

Update the I2C controller logic to be more consistent with the
newer version of the controller reference manual.
This makes it work better on modern LS/LX platforms and avoids
unnecessary delays.  Also fixes a lock leak.

MFC after: 7 days
Tested by: bz (LS1088a FDT), Pierre-Luc Drouin (Honeycomb, ACPI)
Differential Revision: https://reviews.freebsd.org/D44021