1. 13 Jan, 2022 20 commits
    • John Baldwin's avatar
      Remove usr/lib/libssp.a. · 900a7922
      John Baldwin authored
      GNU's libssp installed this (in addition to libssp_nonshared.a), but
      the libc-based libssp does not.
      
      Reviewed by:	kevans, emaste
      Fixes:		cd0d51ba Provide libssp based on libc
      Sponsored by:	The University of Cambridge, Google Inc.
      Differential Revision:	https://reviews.freebsd.org/D33852
      900a7922
    • John Baldwin's avatar
      Remove lib32 versions of libl. · cc8af33e
      John Baldwin authored
      Reviewed by:	imp, emaste
      Fixes:		eb61f7bd Stop building libl and liby
      Sponsored by:	The University of Cambridge, Google Inc.
      Differential Revision:	https://reviews.freebsd.org/D33851
      cc8af33e
    • John Baldwin's avatar
      Remove a duplicate entry for libgpib_p.a. · 768563cf
      John Baldwin authored
      Reviewed by:	emaste
      Sponsored by:	The University of Cambridge, Google Inc.
      Differential Revision:	https://reviews.freebsd.org/D33850
      768563cf
    • Warner Losh's avatar
      cam: Fix wiring fence post error · 272e4f53
      Warner Losh authored
      If the last matching device entry partially matched in camperiphunit,
      but then hit a continue case, we'd mistakenly think we had a match on
      that entry. This lead to a number of problems downstream (usually a
      belief that we had a duplicate wiring hint because unit = 0 is the
      default). Fix this by using a for loop that does the assignment before
      the loop termination test.
      
      Sponsored by:		Netflix
      Reviewed by:		jhb
      Differential Revision:	https://reviews.freebsd.org/D33873
      272e4f53
    • Stefan Eßer's avatar
      tools/portconflicts/port_conflicts_check.lua: detect port conflicts · 82bfeeff
      Stefan Eßer authored
      This tool can be used to detect install conflicts (ports/packages that
      conflict with each other because of identically named files).
      
      MFC after:	3 days
      82bfeeff
    • Alexander Motin's avatar
      sesutil: Avoid setting reserved bits. · 2e19fae4
      Alexander Motin authored
      Weird side of SES specification is that some bits have different
      meaning or semantics in status and control pages.  This patch fixes
      non-zero writes into reserved fields, that caused errors on some
      enclosures when trying to control locate/fault LEDs, keeping other
      bits unchanged.
      
      MFC after:	2 weeks
      Sposonred by:	iXsystems, Inc.
      2e19fae4
    • Gleb Smirnoff's avatar
    • Ryan Stone's avatar
      LRO: Don't merge ACK and non-ACK packets together · 3284f492
      Ryan Stone authored
      LRO was willing to merge ACK and non-ACK packets together.  This
      can cause incorrect th_ack values to be reported up the stack.
      While non-ACKs are quite unlikely to appear in practice, LRO's
      behaviour is against the spec.  Make LRO unwilling to merge
      packets with different TH_ACK flag values in order to fix the
      issue.
      
      Found by: Sysunit test
      Differential Revision:	https://reviews.freebsd.org/D33775
      Reviewed by: rrs
      3284f492
    • Ryan Stone's avatar
      LRO: Fix lost packets when merging 1 payload with an ACK · 24fe6643
      Ryan Stone authored
      To check if it needed to regenerate a packet's header before
      sending it up the stack, LRO was checking if more than one payload
      had been merged into the packet.  This failed in the case where
      a single payload was merged with one or more pure ACKs.  This
      results in lost ACKs.
      
      Fix this by precisely tracking whether header regeneration is
      required instead of using an incorrect heuristic.
      
      Found with: Sysunit test
      Differential Revision:	https://reviews.freebsd.org/D33774
      Reviewed by: rrs
      24fe6643
    • Roger Pau Monné's avatar
      x86/madt: allow Xen guest to use x2APIC mode · 7d06c761
      Roger Pau Monné authored
      The old bogus Xen versions that would deliver a GPF when writing to
      the LAPIC MSR are likely retired, so it's safe to enable x2APIC
      unconditionally now if available.
      
      Tested by: avg
      Reviewed by: kib
      Sponsored by: Citrix Systems R&D
      Differential revision: https://reviews.freebsd.org/D33877
      7d06c761
    • Kenneth D. Merry's avatar
      Free UMA zones when a pass(4) instance goes away. · ca2a7262
      Kenneth D. Merry authored
      If the UMA zones are not freed, we get warnings about re-using the
      sysctl variables associated with the UMA zones, and we're leaking
      the other memory associated with the zone structures.  e.g.:
      
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.size)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.flags)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.bucket_size)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.bucket_size_max)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.keg.name)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.keg.rsize)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.keg.ppera)!
      sysctl_warn_reuse: can't re-use a leaf (vm.uma.pass44.keg.ipers)!
      
      Also, correctly clear the PASS_FLAG_ZONE_INPROG flag in
      passcreatezone().  The way it was previously done, it would have
      had set the flag and cleared all other flags that were set at
      that point.
      
      MFC after:	1 week
      Sponsored by:	Spectra Logic
      ca2a7262
    • Roger Pau Monné's avatar
      xen: use an hypercall for shutdown and reboot · ca46f328
      Roger Pau Monné authored
      When running as a Xen guest it's easier to use an hypercall in order
      to do power management operations (power off, power cycle). Do this
      for all supported guest types (HVM and PVH). Note that for HVM the
      power operation could also be done using ACPI, but there's no reason
      to differentiate between PVH and HVM.
      
      While there fix the shutdown handler to properly differentiate between
      power cycle and power off requests.
      
      Reported by: Freddy DISSAUX
      MFC: 1 week
      Sponsored by: Citrix Systems R&D
      ca46f328
    • Emmanuel Vadot's avatar
      Revert "Introduce MODULES_EXCLUDE" · 9b6aa99e
      Emmanuel Vadot authored
      This is already present as WITHOUT_MODULES
      
      This reverts commit 8c0c5bdf.
      
      Reported by:	jrtc27
      9b6aa99e
    • Emmanuel Vadot's avatar
      Introduce MODULES_EXCLUDE · 8c0c5bdf
      Emmanuel Vadot authored
      It's sometimes easier to exclude some modules rather than listing all
      possibly needed ones with MODULES_OVERRIDE.
      So for this add MODULES_EXCLUDE which do exactly as one would guess, excludes
      some modules from the build/install.
      
      For example if one wants to exclude all modules which are only present in the
      GENERIC config on amd64 :
      export MODULES_EXCLUDE=$(grep -E '^device' sys/amd64/conf/GENERIC | awk '{print $2}' | tr '\n' ' ')
      
      MFC after:	2 weeks
      Sponsored by:	Beckhoff Automation GmbH & Co. KG
      Differential Revision:	https://reviews.freebsd.org/D33443
      8c0c5bdf
    • Stefan Eßer's avatar
      qsort.c: prevent undefined behavior · d106f982
      Stefan Eßer authored
      Mark Milliard has detected a case of undefined behavior with the LLVM
      UBSAN. The mandoc program called qsort with a==NULL and n==0, which is
      allowed by the POSIX standard. The qsort() in FreeBSD did not attempt
      to perform any accesses using the passed pointer for n==0, but it did
      add an offset to the pointer value, which is undefined behavior in
      case of a NULL pointer. This operation has no adverse effects on any
      achitecture supported by FreeBSD, but could be caught in more strict
      environments.
      
      After some discussion in the freebsd-current mail list, it was
      concluded that the case of a==NULL and n!=0 should still be caught by
      UBSAN (or cause a program abort due to an illegal access) in order to
      not hide errors in programs incorrectly invoking qsort().
      
      Only the the case of a==NULL and n==0 should be fixed to not perform
      the undefined operation on a NULL pointer.
      
      This commit makes qsort() exit before reaching the point of
      potentially undefined behvior for the case n==0, but does not test
      the value of a, since the result will not depend on whether this
      pointer is NULL or an actual pointer to an array if n==0.
      
      The issue found by Mark Milliard in the whatis command has been
      reported to the upstream (OpenBSD) and has already been patched
      there.
      
      MFC after:	1 week
      d106f982
    • Wei Hu's avatar
      mana: fix misc minor handlding issues when error happens. · 027d0c1c
      Wei Hu authored
      - In mana_create_txq(), if test fails we must free some resources
        as in all the other handling paths of this function.
      - In mana_gd_read_cqe(), add warning log in case of CQE read
        overflow, instead of failing silently.
      - Fix error handling in mana_create_rxq() when
        cq->gdma_id >= gc->max_num_cqs.
      - In mana_init_port(), use the correct port index rather than 0.
      - In mana_hwc_create_wq(), If allocating the DMA buffer fails,
        mana_hwc_destroy_wq was called without previously storing the
        pointer to the queue. In order to avoid leaking the pointer to
        the queue, store it as soon as it is allocated.
      
      MFC after:	2 weeks
      Sponsored by:	Microsoft
      027d0c1c
    • Peter Holm's avatar
      stress2: Updated the exclude list · b1ddfd08
      Peter Holm authored
      b1ddfd08
    • Peter Holm's avatar
      stress2: Added two new tests · 48031e6c
      Peter Holm authored
      48031e6c
    • Peter Holm's avatar
      6b0ab595
    • Wei Hu's avatar
      mana: Improve the HWC error handling · 623918a1
      Wei Hu authored
      Currently when the HWC creation fails, the error handling is flawed,
      e.g. if mana_hwc_create_channel() -> mana_hwc_establish_channel() fails,
      the resources acquired in mana_hwc_init_queues() is not released.
      
      Enhance mana_hwc_destroy_channel() to do the proper cleanup work and
      call it accordingly.
      
      MFC after:	2 weeks
      Sponsored by:	Microsoft
      623918a1
  2. 12 Jan, 2022 20 commits
    • Eric Joyner's avatar
      ixl(4): Remove unused function declaration · 0e8181c0
      Eric Joyner authored
      
      
      Signed-off-by: default avatarEric Joyner <erj@FreeBSD.org>
      
      Sponsored by:	Intel Corporation
      0e8181c0
    • Brooks Davis's avatar
      Revert "syscallarg_t: Add a type for system call arguments" · 0910a41e
      Brooks Davis authored
      Missed issues in truss on at least armv7 and powerpcspe need to be
      resolved before recommit.
      
      This reverts commit 3889fb8a.
      This reverts commit 1544e0f5.
      0910a41e
    • Brooks Davis's avatar
      sysent: regen for syscallarg_t · 3889fb8a
      Brooks Davis authored
      3889fb8a
    • Brooks Davis's avatar
      syscallarg_t: Add a type for system call arguments · 1544e0f5
      Brooks Davis authored
      This more clearly differentiates system call arguments from integer
      registers and return values. On current architectures it has no effect,
      but on architectures where pointers are not integers (CHERI) and may
      not even share registers (CHERI-MIPS) it is necessiary to differentiate
      between system call arguments (syscallarg_t) and integer register values
      (register_t).
      
      Obtained from:	CheriBSD
      
      Reviewed by:	imp, kib
      Differential Revision:	https://reviews.freebsd.org/D33780
      1544e0f5
    • Cy Schubert's avatar
      ipfilter: Fixup comment · 896a0153
      Cy Schubert authored
      Fix comment documenting checksum block in ip_nat.c. Fastforward doesn't
      perform checksum.
      
      MFC after:	1 week
      896a0153
    • Cy Schubert's avatar
      ipfilter: Fix IP header checksums post ftp proxy · 2a646524
      Cy Schubert authored
      Don't assume checksums will be calculated later in fastforward.
      
      MFC after:	1 week
      2a646524
    • Cy Schubert's avatar
      ipfilter: Fix whitespace errors · 6af38b34
      Cy Schubert authored
      MFC after:	3 days
      6af38b34
    • Cy Schubert's avatar
      ipfilter: Correct function description · 4b5c0c9b
      Cy Schubert authored
      Correct the parameters descriptions for ipf_fix_outcksum and
      ipf_fix_incksum.
      
      MFC after:	3 days
      4b5c0c9b
    • Cy Schubert's avatar
      ipfilter: inline is superfluous for an extrn function · 835a0e2f
      Cy Schubert authored
      Remove superfluous inline for function defined as extrn.
      
      MFC after:	3 days
      835a0e2f
    • Cy Schubert's avatar
      ipfilter: Remove redundant else if · f98cc177
      Cy Schubert authored
      Combine two else ifs using an or.
      
      MFC after:	3 days
      f98cc177
    • Colin Percival's avatar
      x86: Speed up clock calibration · c2705cea
      Colin Percival authored
      Prior to this commit, the TSC and local APIC frequencies were calibrated
      at boot time by measuring the clocks before and after a one-second sleep.
      This was simple and effective, but had the disadvantage of *requiring a
      one-second sleep*.
      
      Rather than making two clock measurements (before and after sleeping) we
      now perform many measurements; and rather than simply subtracting the
      starting count from the ending count, we calculate a best-fit regression
      between the target clock and the reference clock (for which the current
      best available timecounter is used). While we do this, we keep track
      of an estimate of the uncertainty in the regression slope (aka. the ratio
      of clock speeds), and stop measuring when we believe the uncertainty is
      less than 1 PPM.
      
      In order to avoid the risk of aliasing resulting from the data-gathering
      loop synchronizing with (a multiple of) the frequency of the reference
      clock, we add some additional spinning depending upon the iteration number.
      
      For numerical stability and simplicity of implementation, we make use of
      floating-point arithmetic for the statistical calculations.
      
      On the author's Dell laptop, this reduces the time spent in calibration
      from 2000 ms to 29 ms; on an EC2 c5.xlarge instance, it is reduced from
      2000 ms to 2.5 ms.
      
      Reviewed by:	bde (previous version), kib
      MFC after:	1 month
      Sponsored by:	https://www.patreon.com/cperciva
      Differential Revision:	https://reviews.freebsd.org/D33802
      c2705cea
    • Konstantin Belousov's avatar
      truss(1): detach more carefully · 12f747e6
      Konstantin Belousov authored
      When detaching, truss(1) sends SIGSTOP to the traced process to ensure
      that it is detaching in the steady state.  But it is possible, for
      multithreaded process, that wait() call returns event other than our
      SIGSTOP notification.  As result, SIGSTOP might sit in some thread'
      sigqueue, which makes SIGCONT a nop.  Then, the process is stopped when
      the queued SIGSTOP is acted upon.
      
      To handle this, loop until we drain everything before SIGSTOP,
      and see that the process is stopped.
      
      Note that the earlier fix makes it safe to have some more debugging
      events longering after SIGSTOP is acted upon.  They will be ignored
      after PT_DETACH.
      
      Reviewed by:	markj
      Sponsored by:	The FreeBSD Foundation
      MFC after:	1 week
      Differential revision:	https://reviews.freebsd.org/D33861
      12f747e6
    • Konstantin Belousov's avatar
      truss: remove write-only variable · ba33c288
      Konstantin Belousov authored
      Reviewed by:	markj
      Sponsored by:	The FreeBSD Foundation
      MFC after:	1 week
      Differential revision:	https://reviews.freebsd.org/D33861
      ba33c288
    • Doug Moore's avatar
      vm_reserv: use enhanced bitstring for popmaps · 84e2ae64
      Doug Moore authored
      vm_reserv.c uses its own bitstring implemenation for popmaps. Using
      the bitstring_t type from a standard header eliminates the code
      duplication, allows some bit-at-a-time operations to be replaced with
      more efficient bitstring range operations, and, in
      vm_reserv_test_contig, allows bit_ffc_area_at to more efficiently
      search for a big-enough set of consecutive zero-bits.
      
      Make bitstring changes improve the vm_reserv code.  Define a bit_ntest
      method to test whether a range of bits is all set, or all clear.
      Define bit_ff_at and bit_ff_area_at to implement the ffs and ffc
      versions with a parameter to choose between set- and clear- bits.
      Improve the area_at implementation.  Modify the bit_nset and
      bit_nclear implementations to allow code optimization in the cases
      when start or end are multiples of _BITSTR_BITS.
      
      Add a few new cases to bitstring_test.
      
      Discussed with:	alc
      Reviewed by:	markj
      Tested by:	pho (earlier version)
      Differential Revision:	https://reviews.freebsd.org/D33312
      84e2ae64
    • Andrew Turner's avatar
      Add arm64 pointer authentication support · 85b7c566
      Andrew Turner authored
      Pointer authentication allows userspace to add instructions to insert
      a Pointer Authentication Code (PAC) into a register based on an address
      and modifier and check if the PAC is correct. If the check fails it will
      either return an invalid address or fault to the kernel.
      
      As many of these instructions are a NOP when disabled and in earlier
      revisions of the architecture this can be used, for example, to sign
      the return address before pushing it to the stack making Return-oriented
      programming (ROP) attack more difficult on hardware that supports them.
      
      The kernel manages five 128 bit signing keys: 2 instruction keys, 2 data
      keys, and a generic key. The instructions then use one of these when
      signing the registers. Instructions that use the first four store the
      PAC in the register being signed, however the instructions that use the
      generic key store the PAC in a separate register.
      
      Currently all userspace threads share all the keys within a process
      with a new set of userspace keys being generated when executing a new
      process. This means a forked child will share its keys with its parent
      until it calls an appropriate exec system call.
      
      In the kernel we allow the use of one of the instruction keys, the ia
      key. This will be used to sign return addresses in function calls.
      Unlike userspace each kernel thread has its own randomly generated.
      
      Thread0 has a static key as does the early code on secondary CPUs.
      This should be safe as there is minimal user interaction with these
      threads, however we could generate random keys when the Armv8.5
      Random number generation instructions are present.
      
      Sponsored by:	The FreeBSD Foundation
      Differential Revision: https://reviews.freebsd.org/D31261
      85b7c566
    • Andrew Turner's avatar
      Fix undefined behaviour in the USB controllers · a3cea156
      Andrew Turner authored
      The USB controller drivers assume they can cast a NULL pointer to a
      struct and find the address of a member. KUBSan complains about this so
      replace with the __offsetof and __containerof macros that use either a
      builtin function where available, or the same NULL pointer on older
      compilers without the builtin.
      
      Reviewers: hselasky
      
      Subscribers: imp
      
      Reviewed by:	hselasky
      Sponsored by:	The FreeBSD Foundation
      Differential Revision: https://reviews.freebsd.org/D33865
      a3cea156
    • Andriy Gapon's avatar
      mmc_da: remove write-only local variables · dfb1c97a
      Andriy Gapon authored
      MFC after:	1 week
      dfb1c97a
    • Andriy Gapon's avatar
      mmc_da: use MMC_SECTOR_SIZE constant in place of literals · 60b7d5a2
      Andriy Gapon authored
      Suggested by:	manu
      MFC after:	2 weeks
      60b7d5a2
    • Andriy Gapon's avatar
      mmc_da: implement d_dump method, sddadump · 44682688
      Andriy Gapon authored
      sddadump has been derived from sddastart.
      
      mmc_sim interface has grown a new method, cam_poll, to support polled
      operation.
      
      mmc_sim code has been changed to provide a sim_poll hook only if the
      controller implements the new method.  The hooks is implemented in terms
      of the new mmc_sim_cam_poll method.
      Additionally, in-progress CCB-s now have CAM_REQ_INPROG status to
      satisfy xpt_pollwait().
      
      mmc_sim_cam_poll method has been implemented in dwmmc host controller.
      
      Reviewed by:	manu, mav, imp
      MFC after:	2 weeks
      Relnotes:	perhaps
      Differential Revision:	https://reviews.freebsd.org/D33843
      44682688
    • Li-Wen Hsu's avatar
      fsck(8): Fix typo · 6853ef66
      Li-Wen Hsu authored
      PR:		260949
      Reported by:	Graham Perrin <grahamperrin@gmail.com>
      MFC after:	3 days
      6853ef66