aboutsummaryrefslogtreecommitdiff
path: root/sys
Commit message (Collapse)AuthorAgeFilesLines
* qat: Update firmware for 4xxx devices to version 1.1.20Michal Gulbicki2023-12-131-0/+0
| | | | | | | | | | | | | Key features: - added zeropadding feature for compression - added partial decompression support - added DC rate limiting support - added Admin ME capabilities reporting - added Hash+Compress chaining support MFC after: 2 weeks Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D42864
* netlink: fix snl_writer and linear_buffer re-allocation logicIgor Ostapenko2023-12-121-7/+11
| | | | | | | | | | | | | | | | | | | | - Use the correct base pointer after re-allocation to avoid buffer overflows. - Maintain correct snl_writer.size, which avoids redundant memory allocation, e.g. a need for ~1k bytes may end up with ~32k linear_buffer actually allocated. This fixes a pfctl regression at least for armv7 after the addrule logic migration to netlink: ffbf25951e7b ("pf: convert rule addition to netlink") The add rule command creates a bigger than default size netlink requests which triggers the re-allocation logic. Reviewed by: kp MFC after: 2 weeks Differnetial Revision: https://reviews.freebsd.org/D43003
* nfsclient: Propagate copyin() errors from nfsm_uiombuf()Mark Johnston2023-12-124-13/+39
| | | | | | | Approved by: so Security: SA-23:18.nfsclient Reviewed by: rmacklem Sponsored by: The FreeBSD Foundation
* ocs_fc: IO timeout handling and error reporting fix.Ram Kishore Vegesna2023-12-126-39/+144
| | | | | | | | | | | | | | | | | | | | Hardware timeout uses a 8-bit timeout value and expects the timeout to be less than 255 seconds. Added software timer implemetation to timeout and abort the IOs with timeout more than 255 seconds. Fix the timeout problem by dividing CAM timeouts by 1000 as hardware expects timeout value in seconds. Before this change, CAM timeouts in milliseconds were getting truncated to 8 bits and converted to seconds. So the actual timeout used when going down to the card would depend on the bottom 8 bits of the timeout used. Add the mapping of ocs_fc error status to CAM status. Reported by: ken Reviewed by: ken Tested by: ken, ram Approved by: ken MFC after: 1 week
* tcp stacks: in kernel BBR and RACK require in kernel HPTSMichael Tuexen2023-12-121-5/+5
| | | | | | | | | Compiling the BBR or RACK stack into the kernel requires HPTS to be compiled into the kernel. Reviewed by: glebius, rscheff Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D42998
* if_tun: check device nameKonstantin Belousov2023-12-121-1/+1
| | | | | | | | | | | to avoid panic if the name already exists, which is possible with the interface renaming. PR: 266999 Reviewed by: kevans Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D43001
* pf: fix memory leak on rule add parse failureKristof Provost2023-12-111-1/+3
| | | | | | Reported by: Igor Ostapenko <pm@igoro.pro> Reviewed by: Igor Ostapenko <pm@igoro.pro> Sponsored by: Rubicon Communications, LLC ("Netgate")
* libc: expose execvpe for Linux compatBrooks Davis2023-12-111-1/+1
| | | | | | | | | | | | | | We already implemented execvpe internally with an _ prefix in libc so go ahead and expose it for compatibility with Linux. This reverts c605eea952146348e5e1ad5cab6c127d7a1bd164. Bump __FreeBSD_version for the addition and add definitions to supress compat shims in libzfs (zfs changes were merged from upstream). PR: 275370 (request and exp-run (thanks antoine!)) Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D42846
* tty: Avoid a kernel memory discloure via kern.ttysMark Johnston2023-12-111-0/+1
| | | | | | | | | Four pad bytes at the end of each xtty structure were not being cleared before being copied out. Fix this by clearing the whole structure before populating fields. MFC after: 3 days Reported by: KMSAN
* arm: Disable the VFP during bootMark Johnston2023-12-111-0/+2
| | | | | | | | | | | The VFP code expects the kernel to boot with VFP disabled, but some boards will boot with it enabled. Make sure that vfp_init() disables the VFP on each CPU during boot. PR: 273752 Reviewed by: andrew Diagnosed by: Thomas Skibo <thomas-bsd@skibo.net> MFC after: 1 week
* arm: Handle VFP exceptions from the kernelMark Johnston2023-12-111-7/+12
| | | | | | | | | | | | | | | | | | vfp_bounce() is called when handling an undefined instruction exception, to see if we need to enable the VFP. Previously it would unconditionally panic if the exception came from the kernel, which was simply wrong, and it did not permit lazy initialization of VFP state in the kernel. However, this functionality can be useful and is supported by arm's fpu_kern_enter() implementation. Thus, relax assertions and consume the exception if the thread was in an FPU section. Based on a patch from Stormshield. Reviewed by: andrew MFC after: 2 weeks Sponsored by: Klara, Inc. Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D42971
* arm: Fix handling of undefined instructions in kernel modeMark Johnston2023-12-111-4/+4
| | | | | | | | | | | | | Only panic if no undefined instruction handler matched the exception. This can arise in practice if the VFP is enabled lazily. While here, fix the panic string to not include a newline. Reviewed by: andrew Obtained from: Stormshield Sponsored by: Klara, Inc. Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D42970
* arm: Add fpu_kern_alloc_ctx()Mark Johnston2023-12-111-2/+20
| | | | | | | | | | | | This enables the use of some out-of-tree crypto libraries on arm. No functional change intended, there are no callers of this function in the tree currently. Reviewed by: andrew MFC after: 1 week Sponsored by: Klara, Inc. Sponsored by: Stormshield Differential Revision: https://reviews.freebsd.org/D42969
* arm: Compile vfp.c conditionally rather than using an ifdefMark Johnston2023-12-112-5/+1
| | | | | | No functional change intended. MFC after: 1 week
* capsicum: introduce cap_rights_is_empty FunctionMariusz Zaborski2023-12-112-0/+21
| | | | | | | | | | | | | Before this commit, we only had the capability to check if a specific capability was set (using cap_rights_is_set function). However, there was no efficient method to determine if a cap_rights_t structure doesn't contain any capability. The cap_rights_is_empty function addresses this gap. PR: 275330 Reported by: vini.ipsmaker@gmail.com Reviewed by: emaste, markj Differential Revision: https://reviews.freebsd.org/D42780
* eqos: Call init earlierEmmanuel Vadot2023-12-111-4/+3
| | | | | Call the subclassed IF_EQOS_INIT before trying to read the mac, clocks and reset needs to dealt with before we can read the registers.
* eqos: Unbreak fdt supportEmmanuel Vadot2023-12-111-2/+54
| | | | | We need to enable the clocks and deassert the resets for eqos to work correctly.
* eqos: Remove extra x in printfEmmanuel Vadot2023-12-111-1/+1
| | | | No functional changes intended.
* kthread: Set *newtdp earlier in kthread_add1()Mark Johnston2023-12-091-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | syzbot reported a single boot-time crash in g_event_procbody(), a page fault when dereferencing g_event_td. g_event_td is initialized by the kproc_kthread_add() call which creates the GEOM event thread: kproc_kthread_add(g_event_procbody, NULL, &g_proc, &g_event_td, RFHIGHPID, 0, "geom", "g_event"); I believe that the caller of kproc_kthread_add() was preempted after adding the new thread to the scheduler, and before setting *newtdp, which is equal to g_event_td. Thus, since the first action of the GEOM event thread is to lock itself, it ended up dereferencing a NULL pointer. Fix the problem simply by initializing *newtdp earlier. I see no harm in that, and it matches kproc_create1(). The scheduler provides sufficient synchronization to ensure that the store is visible to the new thread, wherever it happens to run. Reported by: syzbot+5397f4d39219b85a9409@syzkaller.appspotmail.com Reviewed by: kib MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D42986
* tcp: tcp: allow SOL_SOCKET-level socket options via sysctl interfaceMichael Tuexen2023-12-091-1/+5
| | | | | | | | | | | | | | | When using the sysctl interface for setting a SOL_SOCKET-level socket option, the TCP handler refers to the IP handler, which only handles SO_SETFIB and SO_MAX_PACING_RATE. So call sosetopt(), which handles all SOL_SOCKET-level options. Then you can use tcpsso with SOL_SOCKET-level socket options as expected. Reported by: rscheff Reviewed by: glebius, rscheff MFC after: 1 week Sponsored by: Netflix, Inc. Differential Revision: https://reviews.freebsd.org/D42985
* Bump __FreeBSD_version for llvm 17.0.6 mergeDimitry Andric2023-12-081-1/+1
| | | | | PR: 273753 MFC after: 1 month
* Notable upstream pull request merges:Martin Matuska2023-12-0842-209/+885
| | | | | | | | | | | | | | | | | | | | | | | | #15539 687e4d7f9 Extend import_progress kstat with a notes field #15544 c7b611926 Allow block cloning across encrypted datasets #15553 adcea23cb ZIO: Add overflow checks for linear buffers #15593 5f2700eee zpool: flush output before sleeping #15609 3e4bef52b Only provide execvpe(3) when needed #15610 735ba3a7b Use uint64_t instead of u_int64_t #15612 bcd83ccd2 ZIL: Remove TX_CLONE_RANGE replay for ZVOLs #15617 55b764e06 ZIL: Do not clone blocks from the future #15623 727497ccd module/icp/asm-arm/sha2: enable non-SIMD asm kernels on armv5/6 #15625 9743d0963 BRT: Limit brt_vdev_dump() to only one vdev #15629 f9765b182 zdb: Dump encrypted write and clone ZIL records #15634 2aa3a482a ZIL: Remove 128K into 2x68K LWB split optimization #15639 11656234b FreeBSD: Ensure that zfs_getattr() initializes the va_rdev field #15647 4836d293c zfs_refcount_remove: explictly ignore returns #15649 f0cb6482e setproctitle: fix ununitialised variable #15650 450f2d0b0 import: ignore return on hostid lookups Obtained from: OpenZFS OpenZFS commit: 450f2d0b08e73cfb057d0e301a813418b70d64b9
* vmm: implement VM_CAP_MASK_HWINTR on AMD CPUsBojan Novković2023-12-071-0/+11
| | | | | | | | | | This patch implements the interrupt blocking VM capability on AMD CPUs. Implementing this capability allows the GDB stub to single-step a virtual machine without landing inside interrupt handlers. Reviewed by: jhb, corvink Sponsored by: Google, Inc. (GSoC 2022) Differential Revision: https://reviews.freebsd.org/D42299
* vmm: implement single-stepping for AMD CPUsBojan Novković2023-12-074-2/+202
| | | | | | | | | | | | | | | | | | This patch implements single-stepping for AMD CPUs using the RFLAGS.TF single-stepping mechanism. The GDB stub requests single-stepping using the VM_CAP_RFLAGS_TF capability. Setting this capability will set the RFLAGS.TF bit on the selected vCPU, activate DB exception intercepts, and activate POPF/PUSH instruction intercepts. The resulting DB exception is then caught by the IDT_DB vmexit handler and bounced to userland where it is processed by the GDB stub. This patch also makes sure that the value of the TF bit is correctly updated and that it is not erroneously propagated into memory. Stepping over PUSHF will cause the vm_handle_db function to correct the pushed RFLAGS value and stepping over POPF will update the shadowed TF bit copy. Reviewed by: jhb Sponsored by: Google, Inc. (GSoC 2022) Differential Revision: https://reviews.freebsd.org/D42296
* vmm: enable software breakpoints for AMD CPUsBojan Novković2023-12-071-0/+12
| | | | | | | | | | | This patch adds support for software breakpoint vmexits on AMD SVM. It implements the VM_CAP_BPT_EXIT used to enable software breakpoints. When enabled, breakpoint vmexits are passed to userspace where they are handled by the GDB stub. Reviewed by: jhb Sponsored by: Google, Inc. (GSoC 2022) Differential Revision: https://reviews.freebsd.org/D42295
* vmm: refactor event reflection in AMD SVMBojan Novković2023-12-071-4/+5
| | | | | | | | | | | | This patch refactors AMD SVM event reflection to allow events to be propagated to userland, rather than always reflected into the guest. This is necessary to implement some capabilities that request VMEXITs when a specific exception occurs (e.g. VM_CAP_BPT_EXIT). Reviewed by: jhb Sponsored by: Google, Inc. (GSoC 2022) Differential Revision: https://reviews.freebsd.org/D42405
* tcp_hpts: let tcp_hpts_init() set a random CPU only onceGleb Smirnoff2023-12-072-4/+15
| | | | | | | | | | | | | | | | | | | | | | After d2ef52ef3dee the tcp_hpts_init() function can be called multiple times on a tcpcb if it is switched there and back between two TCP stacks. First, this makes existing assertion in tcp_hpts_init() incorrect. Second, it creates possibility to change a randomly set t_hpts_cpu to a different random value, while a tcpcb is already in the HPTS wheel, triggering other assertions later in tcp_hptsi(). The best approach here would be to work on the stacks to really clear a tcpcb out of HPTS wheel in tfb_tcp_fb_fini, draining the IHPTS_MOVING state. But that's pretty intrusive change, so let's just get back to the old logic (pre d2ef52ef3dee) where t_hpts_cpu was set to a random value only once in a CPU lifetime and a newly switched stack inherits t_hpts_cpu from the previous stack. Reviewed by: rrs, tuexen Differential Revision: https://reviews.freebsd.org/D42946 Reported-by: syzbot+fab29fe1ab089c52998d@syzkaller.appspotmail.com Reported-by: syzbot+ca5f2aa0fda15dcfe6d7@syzkaller.appspotmail.com Fixes: 2b3a77467dd3d74a7170f279fb25f9736b46ef8a
* tcp: stop stack timers in tcp_switch_back_to_default()Gleb Smirnoff2023-12-071-0/+3
| | | | | | | | | | This funcion is an alternative code path that detaches an alternative TCP stack, missed in d2ef52ef3dee38cccb7f54d33ecc2a4b944dad9d. Reviewed by: rrs, tuexen Differential Revision: https://reviews.freebsd.org/D42917 Reported-by: syzbot+186130be9f0ca5557d4e@syzkaller.appspotmail.com Fixes: d2ef52ef3dee38cccb7f54d33ecc2a4b944dad9d
* Revert "linuxkpi: `GFP_KERNEL` equals `M_NOWAIT` now"Jean-Sébastien Pédron2023-12-076-24/+11
| | | | | | | | | | | | | | | | | | | | | | | | | This change seems to break some drivers such as the mlx5*(4) drivers. As kib@ says: > According to the 'official' Linux kernel documentation, the GFP_KERNEL > flag implies sleepable context. It was introduced while working on the new vt(4)/DRM integration [1]. During this work, doing sleepable allocations broke vt(4) and the DRM drivers. However, I made further improvements and some locking-related fixed to the new integration without revisiting the need for it. After more testing, the improvements to the integration mentionned above seems to make the change to `GFP_KERNEL` unneeded now. I can thus revert it to restore expectations of other drivers. This reverts commit 14dcd40983748596d116d91acb934a8a95ac76bc. [1] https://github.com/freebsd/drm-kmod/pull/243 Reviewed by: kib Approved by: kib Differential Revision: https://reviews.freebsd.org/D42962
* if_smsc: fix build on armv6 & armv7Ronald Klop2023-12-071-1/+1
| | | | | | | | | | | | compile error was: /usr/src/sys/dev/usb/net/if_smsc.c:1597:40: error: format specifies type 'unsigned long' but the argument has type 'ssize_t' (aka 'int') [-Werror,-Wformat] "failed alloc for bootargs (%lu)", len); ~~~ ^~~ %zd PR: 274092 Approved by: karels MFC after: 1 month
* tcp: shift PRR sending cadence slightly leftRichard Scheffenegger2023-12-071-1/+1
| | | | | | | | | | | | | Don't let PRR pass up on the opportunity of clocking out packets on arrival of ACKs - by pulling sends forward by about half a packet. Prevents unexpectedly long runs of incoming ACKs without eliciting a packet transmission. MFC after: 1 week Reviewed By: #transport, tuexen Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D42918
* siftr: refactor batch log processingRichard Scheffenegger2023-12-071-23/+16
| | | | | | | | | | | | Refactoring to perform the batch processing of log messaged in two phases. First cycling through a limited number of collected packets, and only thereafter freeing the processed packets. This prevents any chance of calling free while in a critical / spinlocked section. Reviewed By: tuexen Sponsored by: NetApp, Inc. Differential Revision: https://reviews.freebsd.org/D42949
* vnet: (read) lock the vnet list while iterating itKristof Provost2023-12-072-0/+6
| | | | | | | | | | Ensure that the vnet list cannot be modified while we're running through it. Reviewed by: mjg (previous version), zlei (previous version) MFC after: 1 week Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D42927
* Teach if_smsc to get MAC from bootargs.Ronald Klop2023-12-073-5/+92
| | | | | | | | | | | | | | | Some Raspberry Pi pass smsc95xx.macaddr=XX:XX:XX:XX:XX:XX as bootargs. Use this if no ethernet address is found in an EEPROM. As last resort fall back to ether_gen_addr() instead of random MAC. PR: 274092 Reported by: Patrick M. Hausen (via ML) Reviewed by: imp, karels, zlei Tested by: Patrick M. Hausen Approved by: karels MFC after: 1 month Relnotes: yes Differential Revision: https://reviews.freebsd.org/D42463
* busdma: tidy bus_dma_run_filter() functionsMitchell Horne2023-12-0612-111/+46
| | | | | | | | | | | | | | | | After removing filter functionality, the naming doesn't clearly represent what the function does, so try to address this. Include some code clarity and style improvements. Create a common version in subr_busdma_bounce.c, used by most implementations. powerpc still needs its own version of the function, due to its dmat->iommu == NULL check. No functional change intended. Reviewed by: jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42896
* busdma: remove parent tag trackingMitchell Horne2023-12-0613-241/+48
| | | | | | | | | | Without filter functions, we do not need to keep track of tag ancestry. All inheritance of the parent tag's parameters occurs when creating the new child tag. Reviewed by: jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42895
* busdma: kill filter functionality internallyMitchell Horne2023-12-0613-159/+96
| | | | | | | | | | | | | | Address filter functions are unused, unsupported, and now rejected. Simplify some busdma code by removing filter functionality completely. Note that the chains of parent tags become useless, and will be cleaned up in the next commit. No functional change intended. Reviewed by: jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42894
* busdma: Prevent the use of filters with bus_dma_tag_create()Mitchell Horne2023-12-065-0/+20
| | | | | | | | | | | | | | | | | | | | | A deprecation notice was added to the bus_dma(9) man page by scottl@ in September 2020 discouraging the use of filter functions. I've performed an attentive check of all callers in the tree and everything that exists today passes NULL for both filtfunc and filtarg. Thus, we should start returning EINVAL if these arguments are non-NULL to prevent new usages from popping up. Update the man page to be more clear about this. The deprecation notice is present since at least 13.0-RELEASE, so this is the appropriate step for the lifetime of 15, without actually breaking the driver API. Stable branches will emit a warning instead. This change enables the removal of a fair amount of unused complexity across the various busdma implementations. Reviewed by: jhb MFC after: never Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42852
* conf: Expand the include path for more openssl filesMark Johnston2023-12-061-6/+6
| | | | | Fixes: e655cc70dfcd ("ossl: Move arm_arch.h to a common subdirectory") Reported by: Jenkins
* kmsan: Add kmsan_check_uio()Mark Johnston2023-12-062-0/+12
| | | | | | | | This was handy for some ad-hoc debugging and fits in with other kmsan_check_*() routines which operate on some kind of data container. MFC after: 1 week Sponsored by: The FreeBSD Foundation
* riscv: add some more drivers to GENERICMitchell Horne2023-12-051-0/+7
| | | | | | | | | | | | | Enable phy and regulator extres devices. These aren't needed for existing SoC support, but are of general utility to FDT platforms and enable out-of-tree work. Similarly, enable sdhci and mmc. Reviewed by: jrtc27 MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42913
* riscv: remove commented lines from GENERICMitchell Horne2023-12-051-18/+0
| | | | | | | | | | | These are relics of development, when static compilation of certain functionality/parameters was necessary. Today we have full module and loader(8) support. Reviewed by: jrtc27 MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42912
* riscv: add more dump features to GENERICMitchell Horne2023-12-051-0/+4
| | | | | | | | | Match what is provided by default on other architectures. Reviewed by: jrtc27 MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42911
* riscv: tweak SoC-specific conf organizationMitchell Horne2023-12-054-17/+25
| | | | | | | | | | | | Hide some lines from the main GENERIC files by mimicking arm64's model. I do not have any intention of creating a std.riscv or SIFIVE configuration file at this time. Reviewed by: jrtc27 MFC after: 3 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D42910
* bhnd: Correct the softc size in the siba_bhndb_driver definitionMark Johnston2023-12-051-1/+1
| | | | | | | | | | | | struct siba_bhndb_softc embeds struct siba_softc and adds an extra field, "quirks". In practice, this bug was harmless since "quirks" is unconditionally initialized during driver attach and would have lived in the redzone of the softc allocation, but KASAN catches the out-of-bounds access. PR: 275515 Reported by: Frank Hilgendorf <frank.hilgendorf@posteo.de> MFC after: 1 week
* pf: remove incorrect fragmentation checkKristof Provost2023-12-051-2/+1
| | | | | | | | | | We do not need to check PFDESC_IP_REAS while tracking TCP state. Moreover, this check incorrectly considers no-data packets (e.g. RST) to be in-window when this flag is not set. Sponsored by: Rubicon Communications, LLC ("Netgate") Approved by: so Security: FreeBSD-SA-23:17.pf
* Remove never implemented sbrk and sstk syscallsBrooks Davis2023-12-0412-148/+14
| | | | | | | | | | | | | Both system calls were stubs returning EOPNOTSUPP and libc did not provide _ or __sys_ prefixed symbols. The actual implementation of sbrk(2) is on top of the undocumented break(2) system call. Technically this is a change in ABI, but no non-contrived program ever called these syscalls. Reviewed by: kib, emaste Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D42872
* hpts: remove from opt_inet.hGleb Smirnoff2023-12-041-1/+1
| | | | | | | No conditionally compilable code left. The hpts.ko is fully functional. Reviewed by: imp, tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42859
* kern/subr_trap.c: repair the HPTS performance hack in userret()Gleb Smirnoff2023-12-044-12/+19
| | | | | | | | | | | | It wasn't functional as subr_trap.c doesn't include opt_inet.h. Put a better comment provided by gallatin@ in place of the old one. The idea is to use userret() as a cheap place to call a soft clock. This approach saves CPU on busy machines and saves power on idle machines. An alternative would be to constantly schedule callouts. Running with neither callouts nor the soft clock ruins HPTS precision. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42860
* hpts/lro: make tcp_lro_flush_tcphpts() and tcp_run_hpts() pointersGleb Smirnoff2023-12-045-75/+71
| | | | | | | | Rename tcp_run_hpts() to tcp_hpts_softlock() to better describe its function. This makes loadable hpts.ko working correctly with LRO. Reviewed by: tuexen, rrs Differential Revision: https://reviews.freebsd.org/D42858