summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Cygwin: console: Revise the code checking if the console is legacy.Takashi Yano2019-11-131-14/+15
| | | | | | | - Accessing shared_console_info before initializing causes access violation in checking if the console is legacy mode. This patch fixes this issue. This solves the problem reported in: https://www.cygwin.com/ml/cygwin-patches/2019-q4/msg00099.html
* Cygwin: pty: Use redraw screen instead of clear screen.Takashi Yano2019-11-133-16/+18
| | | | | | | | | | - Previously, pty cleared screen at startup for synchronization between the real screen and console screen buffer for pseudo console. With this patch, instead of clearing screen, the screen is redrawn when the first native program is executed after pty is created. In other words, synchronization is deferred until the native app is executed. Moreover, this realizes excluding $TERM dependent code.
* regtool: allow /proc/registry{,32,64}/ registry path prefixBrian Inglis2019-11-132-5/+19
| | | | | The user can supply the registry path prefix /proc/registry{,32,64}/ to use path completion.
* Stash reent marker in upper bits of s1 on AMD GCNKwok Cheung Yeung2019-11-081-10/+10
| | | | | | | s[0:3] contain a descriptor used to set up the initial value of the stack, but only the lower 48 bits of s[0:1] are currently used. The reent marker is currently set in s3, but by stashing it in the upper 16 bits of s[0:1] instead, s3 can be freed up for other purposes.
* Cygwin: Doc change to note stackdump limit patchMark Geisert2019-11-081-0/+3
|
* Cygwin: Raise dumpstack frame limit to 32Mark Geisert2019-11-081-2/+4
| | | | Create a #define for the limit and raise it from 16 to 32.
* Cygwin: console, pty: Prevent error in legacy console mode.Takashi Yano2019-11-084-17/+46
|
* Cygwin: pty: Change how to determine if running as service or not.Takashi Yano2019-11-061-14/+3
|
* Cygwin: document console helper patchCorinna Vinschen2019-11-051-0/+4
| | | | Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: fix quoting when starting invisible console processCorinna Vinschen2019-11-051-5/+7
| | | | | | | | | | | | | | | | | | | | fhandler_console::create_invisible_console_workaround() does not use the lpApplicationName parameter and neglects to quote its command name on lpCommandLine in the call to CreateProcessW. Given CreateProcessW's brain-dead method to evaluate the application path given on the command line, this opens up a security problem if Cygwin is installed into a path with spaces in it. Fix this by using the lpApplicationName parameter and quoting of the application path in the lpCommandLine parameter (used as argv[0] in the called console helper. For extended paranoia, make the argument string array big enough to fit full 64 bit pointer values into it. Handles usually only use the lower 32 bit, but better safe than sorry. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Cygwin: devices: drop MAX_CONSOLES and fix FH_CONS_MAXCorinna Vinschen2019-11-041-2/+1
| | | | | | | | FH_CONS_MAX should refelect the fact that we allow 128 consoles, even if it's unused. Suggested-by: Achim Gratz <Stromeko@nexgo.de> Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Move timeval macros to <sys/time.h>Sebastian Huber2019-11-042-32/+31
| | | | | In FreeBSD, NetBSD, and OpenBSD these macros are defined in <sys/time.h>.
* Synchronize <sys/time.h> with FreeBSDSebastian Huber2019-11-041-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | This change is based on the FreeBSD commit: Author: asomers <asomers@FreeBSD.org> Date: Mon Jul 30 15:46:40 2018 +0000 Make timespecadd(3) and friends public The timespecadd(3) family of macros were imported from NetBSD back in r35029. However, they were initially guarded by #ifdef _KERNEL. In the meantime, we have grown at least 28 syscalls that use timespecs in some way, leading many programs both inside and outside of the base system to redefine those macros. It's better just to make the definitions public. Our kernel currently defines two-argument versions of timespecadd and timespecsub. NetBSD, OpenBSD, and FreeDesktop.org's libbsd, however, define three-argument versions. Solaris also defines a three-argument version, but only in its kernel. This revision changes our definition to match the common three-argument version. Bump _FreeBSD_version due to the breaking KPI change. Discussed with: cem, jilles, ian, bde Differential Revision: https://reviews.freebsd.org/D14725
* Synchronize <sys/_timespec.h> with FreeBSDSebastian Huber2019-11-041-2/+4
|
* Fix sbttons for values > 2simp2019-11-041-2/+9
| | | | | | | Add test against negative times. Add code to cope with larger values properly. Discussed with: bde@ (quite some time ago, for an earlier version)
* Cygwin: fix process parent/child relationship after execveCorinna Vinschen2019-11-024-23/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 5a0f2c00aa "Cygwin: fork/exec: fix child process permissions" removed the PROCESS_DUP_HANDLE handle permission of the parent process handle in the child to avoid a security problem. It turned out that this broke the following scenario: If a process forks and then the parent execs, the child loses the ability to register the parent's death. To wit, after the parent died the child process does not set its own PPID to 1 anymore. The current exec mechanism copies required handle values (handles to keep contact to the child processes) into the child_info for the about-to-be-exec'ed process. The exec'ed process is supposed to duplicate these handles. This fails, given that we don't allow the exec'ed process PROCESS_DUP_HANDLE access to the exec'ing process since commit 5a0f2c00aa. The fix is to avoid the DuplicateHandle calls in the exec'ed process. This patch sets the affected handles to "inheritable" in the exec'ing process at exec time. The exec'ed process just copies the handle values and resets handle inheritance to "non-inheritable". The exec'ing process doesn't have to reset handle inheritance, it exits after setting up the exec'ed process anyway. Testcase: $ ssh-agent /bin/sleep 3 ssh-agent forks and the parent exec's sleep. After sleep exits, `ps' should show ssh-agent to have PPID 1, and eventually ssh-agent exits. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
* Fix libgloss being built for disabled multilibsJozef Lawrynowicz2019-11-022-0/+2
| | | | | | | | | Target libraries are considered to be built for GCC's "host", not GCC's "target". The "host" variable must be set by configure scripts using "config-ml.in" to determine multilib support, otherwise disabled multilibs (specified as a configure argument with --disable-<multilib>) will still be built for the subdirectories those configure scripts reside in.
* Cygwin: getpriority() consistent with process priorityAnton Lavrentiev via cygwin-patches2019-10-311-1/+6
| | | | https://cygwin.com/ml/cygwin/2019-08/msg00122.html
* Add PRU license to COPYING.NEWLIB and COPYING.LIBGLOSSJeff Johnston2019-10-312-0/+54
|
* PRU: Align libmath to PRU ABIDimitar Dimitrov2019-10-3118-2/+6719
| | | | | | | | The TI proprietary toolchain uses nonstandard names for some math library functions. In order to achieve ABI compatibility between GNU and TI toolchains, add support for the TI function names. Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
* Fix some generated filesJeff Johnston2019-10-314-16/+16
|
* Initial PRU port for libgloss and newlibDimitar Dimitrov2019-10-3132-3/+11658
| | | | Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
* MSP430: Add missing build rule for unlink() to libgloss MakefileJozef Lawrynowicz2019-10-251-0/+1
|
* Cygwin: Provide more COM devicesAchim Gratz2019-10-232-613/+1727
| | | | | Provide for 128 COM devices since Windows likes to create lots of these over time (one per identifiable device and USB port).
* Cygwin: spawnvp, spawnvpe: fail if executable is not in $PATHKen Brown2019-10-182-3/+9
| | | | | | Call find_exec with the FE_NNF flag to enforce a NULL return when the executable isn't found in $PATH. Convert NULL to "". This aligns spawnvp and spawnvpe with execvp and execvpe.
* Cygwin: pty: Change the timing of clear screen.Takashi Yano2019-10-161-13/+13
|
* Cygwin: pty: Avoid detach console in the process running as service.Takashi Yano2019-10-161-0/+2
|
* riscv/sys/fenv.h: Add missing extern for fe_dfl_env_pJoel Sherrill2019-10-091-0/+2
|
* Add patch from Joel Sherrill for i386 and x86_64 fenv supportJeff Johnston2019-10-0837-9/+16544
|
* Cygwin: mkdir and rmdir: treat drive names speciallyKen Brown2019-10-072-5/+32
| | | | | | | | | | | | If the directory name has the form 'x:' followed by one or more slashes or backslashes, and if there's at least one backslash, assume that the user is referring to 'x:\', the root directory of drive x, and don't strip the backslash. Previously all trailing slashes and backslashes were stripped, and the name was treated as a relative file name containing a literal colon. Addresses https://cygwin.com/ml/cygwin/2019-08/msg00334.html.
* Cygwin: document recent changes to format_proc_cpuinfoKen Brown2019-10-072-0/+6
|
* fhandler_proc.cc(format_proc_cpuinfo): or model extension bitsBrian Inglis2019-10-071-1/+1
| | | | | or model extension bits into model high bits instead of adding arithmetically like family extension.
* fhandler_proc.cc(format_proc_cpuinfo): comment flags not reportedBrian Inglis2019-10-071-15/+15
| | | | | Comment out flags not reported by Linux in cpuinfo, although some flags may not be used at all by Linux.
* fhandler_proc.cc(format_proc_cpuinfo): add feature flagsBrian Inglis2019-10-071-9/+229
| | | | | Add 99 feature flags including AVX512 extensions, AES, SHA with 20 cpuid calls.
* fhandler_proc.cc(format_proc_cpuinfo): use feature test print macroBrian Inglis2019-10-071-268/+153
| | | | | | | Add feature test print macro that makes feature, bit, and flag text comparison and checking easier. Handle as common former Intel only feature flags also supported on AMD. Change order and some flag names to agree with current Linux.
* fhandler_proc.cc(format_proc_cpuinfo): add microcodeBrian Inglis2019-10-071-5/+21
| | | | Add microcode from Windows registry Update Revision REG_BINARY.
* fhandler_proc.cc(format_proc_cpuinfo): add bogomipsBrian Inglis2019-10-071-1/+3
| | | | Add bogomips which has been cpu MHz*2 since Pentium MMX.
* fhandler_proc.cc(format_proc_cpuinfo): round cpu MHzBrian Inglis2019-10-071-0/+1
| | | | Round cpu MHz to correct Windows and match Linux cpuinfo.
* fhandler_proc.cc(format_proc_cpuinfo): fix AMD physical cores countBrian Inglis2019-10-071-2/+1
| | | | Fix AMD physical cores count documented as core_info low byte + 1.
* fhandler_proc.cc(format_proc_cpuinfo): fix cpuid level countBrian Inglis2019-10-071-1/+18
| | | | Fix cpuid level count as number of non-zero leafs excluding sub-leafs.
* fhandler_proc.cc(format_proc_cpuinfo): fix cache sizeBrian Inglis2019-10-071-27/+18
| | | | Fix cache size return code handling and make AMD/Intel code common.
* Allow verifying _REENT_CHECK macros memory allocationJeff Johnston2019-10-076-5/+54
| | | | | | | | | | - change sys/reent.h to replace _REENT_CHECK_DEBUG with _REENT_CHECK_VERIFY which when set asserts that any memory allocated is non-NULL and calls __assert_func directly - add new --enable-newlib-reent-check-verify configure option - add support for configure.host to specify default for newlib_reent_check_verify - add _REENT_CHECK_VERIFY macro support to acconfig.h and newlib.hin
* Optimize epilogue sequence for architectures with POP interworking.Christos Gentsos2019-10-072-0/+12
| | | | | ARMv5 and above supports arm/thumb interworking using POP, so we can improve the exit sequence in this case.
* Prevent NULL ptr accesses due to Balloc out of memoryJeff Johnston2019-10-043-12/+20
| | | | | | | - add new eBalloc macro to mprec.h which calls Balloc and aborts if Balloc fails due to out of memory - change mprec.c functions that use Balloc without checking to use eBalloc instead - fix dtoa.c to use eBalloc
* Cygwin: Fix signal handling issue introduced by PTY related change.Takashi Yano2019-10-031-1/+1
| | | | | | | - After commit 41864091014b63b0cb72ae98281fa53349b6ef77, there is a regression in signal handling reported in https://www.cygwin.com/ml/cygwin/2019-10/msg00010.html. This patch fixes the issue.
* Document the last bug fixKen Brown2019-09-271-0/+3
|
* Cygwin: normalize_win32_path: improve error checkingKen Brown2019-09-261-3/+6
| | | | | | | | | | | | | | If the source path starts with the Win32 long path prefix '\\?\' or the NT object directory prefix '\??\', require the prefix to be followed by 'UNC\' or '<drive letter>:\'. Otherwise return EINVAL. This fixes the assertion failure in symlink_info::check that was reported here: https://cygwin.com/ml/cygwin/2019-09/msg00228.html That assertion failure was caused by normalize_win32_path returning a path with no backslashes when the source path was '\\?\DRIVE'.
* Cygwin: pty: Fix PTY so that cygwin setup shows help with -h option.Takashi Yano2019-09-261-2/+2
| | | | | | | - After commit 169d65a5774acc76ce3f3feeedcbae7405aa9b57, cygwin setup fails to show help message when -h option is specified, as reported in https://cygwin.com/ml/cygwin/2019-09/msg00248.html. This patch fixes the problem.
* Add SIOCGIFDOWNREASON.kib2019-09-252-2/+14
| | | | | | | | | | | | | | | | The ioctl(2) is intended to provide more details about the cause of the down for the link. Eventually we might define a comprehensive list of codes for the situations. But interface also allows the driver to provide free-form null-terminated ASCII string to provide arbitrary non-formalized information. Sample implementation exists for mlx5(4), where the string is fetched from firmware controlling the port. Reviewed by: hselasky, rrs Sponsored by: Mellanox Technologies MFC after: 1 week Differential revision: https://reviews.freebsd.org/D21527
* Add kernel-side support for in-kernel TLS.jhb2019-09-252-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | KTLS adds support for in-kernel framing and encryption of Transport Layer Security (1.0-1.2) data on TCP sockets. KTLS only supports offload of TLS for transmitted data. Key negotation must still be performed in userland. Once completed, transmit session keys for a connection are provided to the kernel via a new TCP_TXTLS_ENABLE socket option. All subsequent data transmitted on the socket is placed into TLS frames and encrypted using the supplied keys. Any data written to a KTLS-enabled socket via write(2), aio_write(2), or sendfile(2) is assumed to be application data and is encoded in TLS frames with an application data type. Individual records can be sent with a custom type (e.g. handshake messages) via sendmsg(2) with a new control message (TLS_SET_RECORD_TYPE) specifying the record type. At present, rekeying is not supported though the in-kernel framework should support rekeying. KTLS makes use of the recently added unmapped mbufs to store TLS frames in the socket buffer. Each TLS frame is described by a single ext_pgs mbuf. The ext_pgs structure contains the header of the TLS record (and trailer for encrypted records) as well as references to the associated TLS session. KTLS supports two primary methods of encrypting TLS frames: software TLS and ifnet TLS. Software TLS marks mbufs holding socket data as not ready via M_NOTREADY similar to sendfile(2) when TLS framing information is added to an unmapped mbuf in ktls_frame(). ktls_enqueue() is then called to schedule TLS frames for encryption. In the case of sendfile_iodone() calls ktls_enqueue() instead of pru_ready() leaving the mbufs marked M_NOTREADY until encryption is completed. For other writes (vn_sendfile when pages are available, write(2), etc.), the PRUS_NOTREADY is set when invoking pru_send() along with invoking ktls_enqueue(). A pool of worker threads (the "KTLS" kernel process) encrypts TLS frames queued via ktls_enqueue(). Each TLS frame is temporarily mapped using the direct map and passed to a software encryption backend to perform the actual encryption. (Note: The use of PHYS_TO_DMAP could be replaced with sf_bufs if someone wished to make this work on architectures without a direct map.) KTLS supports pluggable software encryption backends. Internally, Netflix uses proprietary pure-software backends. This commit includes a simple backend in a new ktls_ocf.ko module that uses the kernel's OpenCrypto framework to provide AES-GCM encryption of TLS frames. As a result, software TLS is now a bit of a misnomer as it can make use of hardware crypto accelerators. Once software encryption has finished, the TLS frame mbufs are marked ready via pru_ready(). At this point, the encrypted data appears as regular payload to the TCP stack stored in unmapped mbufs. ifnet TLS permits a NIC to offload the TLS encryption and TCP segmentation. In this mode, a new send tag type (IF_SND_TAG_TYPE_TLS) is allocated on the interface a socket is routed over and associated with a TLS session. TLS records for a TLS session using ifnet TLS are not marked M_NOTREADY but are passed down the stack unencrypted. The ip_output_send() and ip6_output_send() helper functions that apply send tags to outbound IP packets verify that the send tag of the TLS record matches the outbound interface. If so, the packet is tagged with the TLS send tag and sent to the interface. The NIC device driver must recognize packets with the TLS send tag and schedule them for TLS encryption and TCP segmentation. If the the outbound interface does not match the interface in the TLS send tag, the packet is dropped. In addition, a task is scheduled to refresh the TLS send tag for the TLS session. If a new TLS send tag cannot be allocated, the connection is dropped. If a new TLS send tag is allocated, however, subsequent packets will be tagged with the correct TLS send tag. (This latter case has been tested by configuring both ports of a Chelsio T6 in a lagg and failing over from one port to another. As the connections migrated to the new port, new TLS send tags were allocated for the new port and connections resumed without being dropped.) ifnet TLS can be enabled and disabled on supported network interfaces via new '[-]txtls[46]' options to ifconfig(8). ifnet TLS is supported across both vlan devices and lagg interfaces using failover, lacp with flowid enabled, or lacp with flowid enabled. Applications may request the current KTLS mode of a connection via a new TCP_TXTLS_MODE socket option. They can also use this socket option to toggle between software and ifnet TLS modes. In addition, a testing tool is available in tools/tools/switch_tls. This is modeled on tcpdrop and uses similar syntax. However, instead of dropping connections, -s is used to force KTLS connections to switch to software TLS and -i is used to switch to ifnet TLS. Various sysctls and counters are available under the kern.ipc.tls sysctl node. The kern.ipc.tls.enable node must be set to true to enable KTLS (it is off by default). The use of unmapped mbufs must also be enabled via kern.ipc.mb_use_ext_pgs to enable KTLS. KTLS is enabled via the KERN_TLS kernel option. This patch is the culmination of years of work by several folks including Scott Long and Randall Stewart for the original design and implementation; Drew Gallatin for several optimizations including the use of ext_pgs mbufs, the M_NOTREADY mechanism for TLS records awaiting software encryption, and pluggable software crypto backends; and John Baldwin for modifications to support hardware TLS offload. Reviewed by: gallatin, hselasky, rrs Obtained from: Netflix Sponsored by: Netflix, Chelsio Communications Differential Revision: https://reviews.freebsd.org/D21277