svn commit: r356002 - in head/sys: compat/linuxkpi/common/src dev/drm2/ttm dev/netmap dev/xen/gntdev dev/xen/privcmd vm

2019-12-21 Thread Jeff Roberson
Author: jeff
Date: Sun Dec 22 06:56:44 2019
New Revision: 356002
URL: https://svnweb.freebsd.org/changeset/base/356002

Log:
  Make page busy state deterministic on free.  Pages must be xbusy when
  removed from objects including calls to free.  Pages must not be xbusy
  when freed and not on an object.  Strengthen assertions to match these
  expectations.  In practice very little code had to change busy handling
  to meet these rules but we can now make stronger guarantees to busy
  holders and avoid conditionally dropping busy in free.
  
  Refine vm_page_remove() and vm_page_replace() semantics now that we have
  stronger guarantees about busy state.  This removes redundant and
  potentially problematic code that has proliferated.
  
  Discussed with:   markj
  Reviewed by:  kib
  Differential Revision:https://reviews.freebsd.org/D22822

Modified:
  head/sys/compat/linuxkpi/common/src/linux_compat.c
  head/sys/dev/drm2/ttm/ttm_bo_vm.c
  head/sys/dev/netmap/netmap_freebsd.c
  head/sys/dev/xen/gntdev/gntdev.c
  head/sys/dev/xen/privcmd/privcmd.c
  head/sys/vm/device_pager.c
  head/sys/vm/sg_pager.c
  head/sys/vm/vm_fault.c
  head/sys/vm/vm_kern.c
  head/sys/vm/vm_object.c
  head/sys/vm/vm_page.c
  head/sys/vm/vm_page.h

Modified: head/sys/compat/linuxkpi/common/src/linux_compat.c
==
--- head/sys/compat/linuxkpi/common/src/linux_compat.c  Sun Dec 22 06:25:20 
2019(r356001)
+++ head/sys/compat/linuxkpi/common/src/linux_compat.c  Sun Dec 22 06:56:44 
2019(r356002)
@@ -508,10 +508,7 @@ linux_cdev_pager_fault(vm_object_t vm_obj, vm_ooffset_
page = vm_page_getfake(paddr, vm_obj->memattr);
VM_OBJECT_WLOCK(vm_obj);
 
-   vm_page_replace_checked(page, vm_obj,
-   (*mres)->pindex, *mres);
-
-   vm_page_free(*mres);
+   vm_page_replace(page, vm_obj, (*mres)->pindex, *mres);
*mres = page;
}
vm_page_valid(page);

Modified: head/sys/dev/drm2/ttm/ttm_bo_vm.c
==
--- head/sys/dev/drm2/ttm/ttm_bo_vm.c   Sun Dec 22 06:25:20 2019
(r356001)
+++ head/sys/dev/drm2/ttm/ttm_bo_vm.c   Sun Dec 22 06:56:44 2019
(r356002)
@@ -237,6 +237,7 @@ reserve:
goto retry;
}
m1 = vm_page_lookup(vm_obj, OFF_TO_IDX(offset));
+   /* XXX This looks like it should just be vm_page_replace? */
if (m1 == NULL) {
if (vm_page_insert(m, vm_obj, OFF_TO_IDX(offset))) {
vm_page_xunbusy(m);
@@ -255,6 +256,7 @@ reserve:
vm_page_valid(m);
if (*mres != NULL) {
KASSERT(*mres != m, ("losing %p %p", *mres, m));
+   vm_page_xunbusy(*mres);
vm_page_free(*mres);
}
*mres = m;

Modified: head/sys/dev/netmap/netmap_freebsd.c
==
--- head/sys/dev/netmap/netmap_freebsd.cSun Dec 22 06:25:20 2019
(r356001)
+++ head/sys/dev/netmap/netmap_freebsd.cSun Dec 22 06:56:44 2019
(r356002)
@@ -1022,12 +1022,10 @@ netmap_dev_pager_fault(vm_object_t object, vm_ooffset_
vm_paddr_t paddr;
vm_page_t page;
vm_memattr_t memattr;
-   vm_pindex_t pidx;
 
nm_prdis("object %p offset %jd prot %d mres %p",
object, (intmax_t)offset, prot, mres);
memattr = object->memattr;
-   pidx = OFF_TO_IDX(offset);
paddr = netmap_mem_ofstophys(na->nm_mem, offset);
if (paddr == 0)
return VM_PAGER_FAIL;
@@ -1052,9 +1050,8 @@ netmap_dev_pager_fault(vm_object_t object, vm_ooffset_
VM_OBJECT_WUNLOCK(object);
page = vm_page_getfake(paddr, memattr);
VM_OBJECT_WLOCK(object);
-   vm_page_free(*mres);
+   vm_page_replace(page, object, (*mres)->pindex, *mres);
*mres = page;
-   vm_page_insert(page, object, pidx);
}
vm_page_valid(page);
return (VM_PAGER_OK);

Modified: head/sys/dev/xen/gntdev/gntdev.c
==
--- head/sys/dev/xen/gntdev/gntdev.cSun Dec 22 06:25:20 2019
(r356001)
+++ head/sys/dev/xen/gntdev/gntdev.cSun Dec 22 06:56:44 2019
(r356002)
@@ -806,7 +806,7 @@ gntdev_gmap_pg_fault(vm_object_t object, vm_ooffset_t 
 {
struct gntdev_gmap *gmap = object->handle;
vm_pindex_t pidx, ridx;
-   vm_page_t page, oldm;
+   vm_page_t page;
vm_ooffset_t relative_offset;
 
if (gmap->map == NULL)
@@ -829,15 +829,12 @@ gntdev_gmap_pg_fault(vm_object_t object, vm_ooffset_t 
KASSERT(vm_page_wired(page), ("page %p is not wired", 

svn commit: r356001 - in head/sys: conf dev/vmgenc

2019-12-21 Thread Conrad Meyer
Author: cem
Date: Sun Dec 22 06:25:20 2019
New Revision: 356001
URL: https://svnweb.freebsd.org/changeset/base/356001

Log:
  Add vmgenc(4) driver for ACPI VM generation counter
  
  The VM generation counter is a 128-bit value exposed by the BIOS via ACPI.
  The value changes to another unique identifier whenever a VM is duplicated.
  Additionally, ACPI provides notification events when such events occur.
  
  The driver decodes the pointer to the UUID, exports the value to userspace
  via OPAQUE sysctl blob, and forwards the ACPI notifications in the form of
  an EVENTHANDLER invocation as well as userspace devctl events.
  
  See design paper: https://go.microsoft.com/fwlink/p/?LinkID=260709

Added:
  head/sys/dev/vmgenc/
  head/sys/dev/vmgenc/vmgenc_acpi.c   (contents, props changed)
  head/sys/dev/vmgenc/vmgenc_acpi.h   (contents, props changed)
Modified:
  head/sys/conf/files

Modified: head/sys/conf/files
==
--- head/sys/conf/files Sun Dec 22 05:44:29 2019(r356000)
+++ head/sys/conf/files Sun Dec 22 06:25:20 2019(r356001)
@@ -3398,6 +3398,7 @@ dev/virtio/scsi/virtio_scsi.c optional
virtio_scsi
 dev/virtio/random/virtio_random.c  optionalvirtio_random
 dev/virtio/console/virtio_console.coptionalvirtio_console
 dev/vkbd/vkbd.coptional vkbd
+dev/vmgenc/vmgenc_acpi.c   optional acpi
 dev/vr/if_vr.c optional vr pci
 dev/vt/colors/vt_termcolors.c  optional vt
 dev/vt/font/vt_font_default.c  optional vt

Added: head/sys/dev/vmgenc/vmgenc_acpi.c
==
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/sys/dev/vmgenc/vmgenc_acpi.c   Sun Dec 22 06:25:20 2019
(r356001)
@@ -0,0 +1,240 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright (c) 2019 Conrad Meyer .  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
+ * VM Generation Counter driver
+ *
+ * See, e.g., the "Virtual Machine Generation ID" white paper:
+ * https://go.microsoft.com/fwlink/p/?LinkID=260709 , and perhaps also:
+ * 
https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/virtual-machine-generation-identifier
 ,
+ * 
https://azure.microsoft.com/en-us/blog/accessing-and-using-azure-vm-unique-id/
+ *
+ * Microsoft introduced the concept in 2013 or so and seems to have
+ * successfully driven it to a consensus standard among hypervisors, not just
+ * HyperV/Azure:
+ * - QEMU: https://bugzilla.redhat.com/show_bug.cgi?id=1118834
+ * - VMware/ESXi: https://kb.vmware.com/s/article/2032586
+ * - Xen: 
https://github.com/xenserver/xen-4.5/blob/master/tools/firmware/hvmloader/acpi/dsdt.asl#L456
+ */
+
+#include 
+__FBSDID("$FreeBSD$");
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include 
+
+#include 
+#include 
+
+#ifndefACPI_NOTIFY_STATUS_CHANGED
+#defineACPI_NOTIFY_STATUS_CHANGED  0x80
+#endif
+
+#defineGUID_BYTES  16
+
+static const char *vmgenc_ids[] = {
+   "VM_GEN_COUNTER",
+   NULL
+};
+#if 0
+MODULE_PNP_INFO("Z:_CID", acpi, vmgenc, vmgenc_ids, nitems(vmgenc_ids) - 1);
+#endif
+
+struct vmgenc_softc {
+   volatile void   *vmg_pguid;
+   uint8_t vmg_cache_guid[GUID_BYTES];
+};
+
+static void
+vmgenc_status_changed(void *context)
+{
+   uint8_t guid[GUID_BYTES];
+   struct vmgenc_softc *sc;
+   device_t dev;
+
+   dev = context;
+   sc = device_get_softc(dev);
+
+   /* Check for spurious notify events. */
+   memcpy(guid, 

svn commit: r356000 - in head/sbin: fsck fsck_ffs

2019-12-21 Thread Xin LI
Author: delphij
Date: Sun Dec 22 05:44:29 2019
New Revision: 356000
URL: https://svnweb.freebsd.org/changeset/base/356000

Log:
  Remove unused includes.
  
  MFC after:2 weeks

Modified:
  head/sbin/fsck/fsck.c
  head/sbin/fsck/fsutil.c
  head/sbin/fsck_ffs/utilities.c

Modified: head/sbin/fsck/fsck.c
==
--- head/sbin/fsck/fsck.c   Sun Dec 22 05:43:13 2019(r355999)
+++ head/sbin/fsck/fsck.c   Sun Dec 22 05:44:29 2019(r356000)
@@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$");
 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 

Modified: head/sbin/fsck/fsutil.c
==
--- head/sbin/fsck/fsutil.c Sun Dec 22 05:43:13 2019(r355999)
+++ head/sbin/fsck/fsutil.c Sun Dec 22 05:44:29 2019(r356000)
@@ -42,8 +42,6 @@ __FBSDID("$FreeBSD$");
 #include 
 
 #include 
-#include 
-#include 
 #include 
 #include 
 #include 

Modified: head/sbin/fsck_ffs/utilities.c
==
--- head/sbin/fsck_ffs/utilities.c  Sun Dec 22 05:43:13 2019
(r355999)
+++ head/sbin/fsck_ffs/utilities.c  Sun Dec 22 05:44:29 2019
(r356000)
@@ -45,15 +45,11 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 
-#include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
-#include 
-#include 
 
 #include "fsck.h"
 
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355999 - stable/11/sbin/newfs_msdos

2019-12-21 Thread Xin LI
Author: delphij
Date: Sun Dec 22 05:43:13 2019
New Revision: 355999
URL: https://svnweb.freebsd.org/changeset/base/355999

Log:
  MFC r355318, r355513
  
  r355318:
  Explicitly exit() instead of return in main().
  
  r355513:
  Fix a couple of minor issues with newfs_msdos:
  
   - Do not unnecessarily strdup().
   - Check return value of getdiskinfo(), if it failed, bail out.

Modified:
  stable/11/sbin/newfs_msdos/mkfs_msdos.c
  stable/11/sbin/newfs_msdos/newfs_msdos.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sbin/newfs_msdos/mkfs_msdos.c
==
--- stable/11/sbin/newfs_msdos/mkfs_msdos.c Sun Dec 22 05:39:26 2019
(r355998)
+++ stable/11/sbin/newfs_msdos/mkfs_msdos.c Sun Dec 22 05:43:13 2019
(r355999)
@@ -316,7 +316,8 @@ mkfs_msdos(const char *fname, const char *dtype, const
bpb.bpbHiddenSecs = o.hidden_sectors;
 if (!(o.floppy || (o.drive_heads && o.sectors_per_track &&
o.bytes_per_sector && o.size && o.hidden_sectors_set))) {
-   getdiskinfo(fd, fname, dtype, o.hidden_sectors_set, );
+   if (getdiskinfo(fd, fname, dtype, o.hidden_sectors_set, ) == -1)
+   goto done;
bpb.bpbHugeSectors -= (o.offset / bpb.bpbBytesPerSec);
if (bpb.bpbSecPerClust == 0) {  /* set defaults */
if (bpb.bpbHugeSectors <= 6000) /* about 3MB -> 512 bytes */
@@ -421,10 +422,7 @@ mkfs_msdos(const char *fname, const char *dtype, const
bname = o.bootstrap;
if (!strchr(bname, '/')) {
snprintf(buf, sizeof(buf), "/boot/%s", bname);
-   if (!(bname = strdup(buf))) {
-   warn(NULL);
-   goto done;
-   }
+   bname = buf;
}
if ((fd1 = open(bname, O_RDONLY)) == -1 || fstat(fd1, )) {
warn("%s", bname);

Modified: stable/11/sbin/newfs_msdos/newfs_msdos.c
==
--- stable/11/sbin/newfs_msdos/newfs_msdos.cSun Dec 22 05:39:26 2019
(r355998)
+++ stable/11/sbin/newfs_msdos/newfs_msdos.cSun Dec 22 05:43:13 2019
(r355999)
@@ -185,11 +185,10 @@ main(int argc, char *argv[])
 fname = *argv++;
 if (!o.create_size && !strchr(fname, '/')) {
snprintf(buf, sizeof(buf), "%s%s", _PATH_DEV, fname);
-   if (!(fname = strdup(buf)))
-   err(1, NULL);
+   fname = buf;
 }
 dtype = *argv;
-return !!mkfs_msdos(fname, dtype, );
+exit(!!mkfs_msdos(fname, dtype, ));
 }
 
 /*
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355998 - stable/12/sbin/newfs_msdos

2019-12-21 Thread Xin LI
Author: delphij
Date: Sun Dec 22 05:39:26 2019
New Revision: 355998
URL: https://svnweb.freebsd.org/changeset/base/355998

Log:
  MFC r355318, r355513
  
  r355318:
  Explicitly exit() instead of return in main().
  
  r355513:
  Fix a couple of minor issues with newfs_msdos:
  
   - Do not unnecessarily strdup().
   - Check return value of getdiskinfo(), if it failed, bail out.

Modified:
  stable/12/sbin/newfs_msdos/mkfs_msdos.c
  stable/12/sbin/newfs_msdos/newfs_msdos.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sbin/newfs_msdos/mkfs_msdos.c
==
--- stable/12/sbin/newfs_msdos/mkfs_msdos.c Sun Dec 22 04:21:16 2019
(r355997)
+++ stable/12/sbin/newfs_msdos/mkfs_msdos.c Sun Dec 22 05:39:26 2019
(r355998)
@@ -316,7 +316,8 @@ mkfs_msdos(const char *fname, const char *dtype, const
bpb.bpbHiddenSecs = o.hidden_sectors;
 if (!(o.floppy || (o.drive_heads && o.sectors_per_track &&
o.bytes_per_sector && o.size && o.hidden_sectors_set))) {
-   getdiskinfo(fd, fname, dtype, o.hidden_sectors_set, );
+   if (getdiskinfo(fd, fname, dtype, o.hidden_sectors_set, ) == -1)
+   goto done;
bpb.bpbHugeSectors -= (o.offset / bpb.bpbBytesPerSec);
if (bpb.bpbSecPerClust == 0) {  /* set defaults */
if (bpb.bpbHugeSectors <= 6000) /* about 3MB -> 512 bytes */
@@ -421,10 +422,7 @@ mkfs_msdos(const char *fname, const char *dtype, const
bname = o.bootstrap;
if (!strchr(bname, '/')) {
snprintf(buf, sizeof(buf), "/boot/%s", bname);
-   if (!(bname = strdup(buf))) {
-   warn(NULL);
-   goto done;
-   }
+   bname = buf;
}
if ((fd1 = open(bname, O_RDONLY)) == -1 || fstat(fd1, )) {
warn("%s", bname);

Modified: stable/12/sbin/newfs_msdos/newfs_msdos.c
==
--- stable/12/sbin/newfs_msdos/newfs_msdos.cSun Dec 22 04:21:16 2019
(r355997)
+++ stable/12/sbin/newfs_msdos/newfs_msdos.cSun Dec 22 05:39:26 2019
(r355998)
@@ -185,11 +185,10 @@ main(int argc, char *argv[])
 fname = *argv++;
 if (!o.create_size && !strchr(fname, '/')) {
snprintf(buf, sizeof(buf), "%s%s", _PATH_DEV, fname);
-   if (!(fname = strdup(buf)))
-   err(1, NULL);
+   fname = buf;
 }
 dtype = *argv;
-return !!mkfs_msdos(fname, dtype, );
+exit(!!mkfs_msdos(fname, dtype, ));
 }
 
 /*
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355997 - head/sys/vm

2019-12-21 Thread Jeff Roberson
Author: jeff
Date: Sun Dec 22 04:21:16 2019
New Revision: 355997
URL: https://svnweb.freebsd.org/changeset/base/355997

Log:
  Move vm_fault busy logic into its own function for clarity and re-use by
  later changes.
  
  Reviewed by:  kib, markj
  Differential Revision:https://reviews.freebsd.org/D22820

Modified:
  head/sys/vm/vm_fault.c

Modified: head/sys/vm/vm_fault.c
==
--- head/sys/vm/vm_fault.c  Sun Dec 22 03:19:17 2019(r355996)
+++ head/sys/vm/vm_fault.c  Sun Dec 22 04:21:16 2019(r355997)
@@ -684,6 +684,41 @@ vm_fault_lock_vnode(struct faultstate *fs)
return (KERN_RESOURCE_SHORTAGE);
 }
 
+/*
+ * Wait/Retry if the page is busy.  We have to do this if the page is
+ * either exclusive or shared busy because the vm_pager may be using
+ * read busy for pageouts (and even pageins if it is the vnode pager),
+ * and we could end up trying to pagein and pageout the same page
+ * simultaneously.
+ *
+ * We can theoretically allow the busy case on a read fault if the page
+ * is marked valid, but since such pages are typically already pmap'd,
+ * putting that special case in might be more effort then it is worth.
+ * We cannot under any circumstances mess around with a shared busied
+ * page except, perhaps, to pmap it.
+ */
+static void
+vm_fault_busy_sleep(struct faultstate *fs)
+{
+   /*
+* Reference the page before unlocking and
+* sleeping so that the page daemon is less
+* likely to reclaim it.
+*/
+   vm_page_aflag_set(fs->m, PGA_REFERENCED);
+   if (fs->object != fs->first_object) {
+   fault_page_release(>first_m);
+   vm_object_pip_wakeup(fs->first_object);
+   }
+   vm_object_pip_wakeup(fs->object);
+   unlock_map(fs);
+   if (fs->m == vm_page_lookup(fs->object, fs->pindex))
+   vm_page_sleep_if_busy(fs->m, "vmpfw");
+   VM_OBJECT_WUNLOCK(fs->object);
+   VM_CNT_INC(v_intrans);
+   vm_object_deallocate(fs->first_object);
+}
+
 int
 vm_fault(vm_map_t map, vm_offset_t vaddr, vm_prot_t fault_type,
 int fault_flags, vm_page_t *m_hold)
@@ -822,42 +857,8 @@ RetryFault_oom:
 */
fs.m = vm_page_lookup(fs.object, fs.pindex);
if (fs.m != NULL) {
-   /*
-* Wait/Retry if the page is busy.  We have to do this
-* if the page is either exclusive or shared busy
-* because the vm_pager may be using read busy for
-* pageouts (and even pageins if it is the vnode
-* pager), and we could end up trying to pagein and
-* pageout the same page simultaneously.
-*
-* We can theoretically allow the busy case on a read
-* fault if the page is marked valid, but since such
-* pages are typically already pmap'd, putting that
-* special case in might be more effort then it is 
-* worth.  We cannot under any circumstances mess
-* around with a shared busied page except, perhaps,
-* to pmap it.
-*/
if (vm_page_tryxbusy(fs.m) == 0) {
-   /*
-* Reference the page before unlocking and
-* sleeping so that the page daemon is less
-* likely to reclaim it.
-*/
-   vm_page_aflag_set(fs.m, PGA_REFERENCED);
-   if (fs.object != fs.first_object) {
-   fault_page_release(_m);
-   vm_object_pip_wakeup(fs.first_object);
-   }
-   unlock_map();
-   vm_object_pip_wakeup(fs.object);
-   if (fs.m == vm_page_lookup(fs.object,
-   fs.pindex)) {
-   vm_page_sleep_if_busy(fs.m, "vmpfw");
-   }
-   VM_OBJECT_WUNLOCK(fs.object);
-   VM_CNT_INC(v_intrans);
-   vm_object_deallocate(fs.first_object);
+   vm_fault_busy_sleep();
goto RetryFault;
}
 
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355996 - in head/usr.sbin/fstyp: . tests

2019-12-21 Thread Conrad Meyer
Author: cem
Date: Sun Dec 22 03:19:17 2019
New Revision: 355996
URL: https://svnweb.freebsd.org/changeset/base/355996

Log:
  fstyp(8): Show exFAT volume labels with -l flag
  
  exfat is fundamentally the same design as fat32.  The superblock differs
  marginally, and there are some additional optional features irrelevant to
  fstype(8); the structure of dirents has changed slightly to enable, among
  other things, larger files; the directory entries are no longer DOS 8.3
  ASCII or local 8-bit encoding, but instead explicitly UCS-2-LE.
  
  (As a result, this change uses iconv to convert a found exfat volume label
  to the user's locale.)
  
  Locating the volume label is identical to FAT32: locate the root directory
  and walk through dirents until you find a volume label.  Like FAT32, follow
  the FAT chain between root directory clusters as necessary.
  
  PR:   242225
  Reported by:  Victor Sudakov 

Modified:
  head/usr.sbin/fstyp/exfat.c
  head/usr.sbin/fstyp/fstyp.c
  head/usr.sbin/fstyp/fstyp.h
  head/usr.sbin/fstyp/tests/fstyp_test.sh

Modified: head/usr.sbin/fstyp/exfat.c
==
--- head/usr.sbin/fstyp/exfat.c Sun Dec 22 01:22:51 2019(r355995)
+++ head/usr.sbin/fstyp/exfat.c Sun Dec 22 03:19:17 2019(r355996)
@@ -27,6 +27,14 @@
 #include 
 __FBSDID("$FreeBSD$");
 
+#include 
+#include 
+
+#include 
+#include 
+#include 
+#include 
+#include 
 #include 
 #include 
 #include 
@@ -34,6 +42,10 @@ __FBSDID("$FreeBSD$");
 
 #include "fstyp.h"
 
+/*
+ * https://docs.microsoft.com/en-us/windows/win32/fileio/exfat-specification
+ */
+
 struct exfat_vbr {
charev_jmp[3];
charev_fsname[8];
@@ -55,19 +67,300 @@ struct exfat_vbr {
uint8_t ev_percent_used;
 } __packed;
 
+struct exfat_dirent {
+   uint8_t xde_type;
+#defineXDE_TYPE_INUSE_MASK 0x80/* 1=in use */
+#defineXDE_TYPE_INUSE_SHIFT7
+#defineXDE_TYPE_CATEGORY_MASK  0x40/* 0=primary */
+#defineXDE_TYPE_CATEGORY_SHIFT 6
+#defineXDE_TYPE_IMPORTNC_MASK  0x20/* 0=critical */
+#defineXDE_TYPE_IMPORTNC_SHIFT 5
+#defineXDE_TYPE_CODE_MASK  0x1f
+/* InUse=0, ..., TypeCode=0: EOD. */
+#defineXDE_TYPE_EOD0x00
+#defineXDE_TYPE_ALLOC_BITMAP   (XDE_TYPE_INUSE_MASK | 0x01)
+#defineXDE_TYPE_UPCASE_TABLE   (XDE_TYPE_INUSE_MASK | 0x02)
+#defineXDE_TYPE_VOL_LABEL  (XDE_TYPE_INUSE_MASK | 0x03)
+#defineXDE_TYPE_FILE   (XDE_TYPE_INUSE_MASK | 0x05)
+#defineXDE_TYPE_VOL_GUID   (XDE_TYPE_INUSE_MASK | 
XDE_TYPE_IMPORTNC_MASK)
+#defineXDE_TYPE_STREAM_EXT (XDE_TYPE_INUSE_MASK | 
XDE_TYPE_CATEGORY_MASK)
+#defineXDE_TYPE_FILE_NAME  (XDE_TYPE_INUSE_MASK | 
XDE_TYPE_CATEGORY_MASK | 0x01)
+#defineXDE_TYPE_VENDOR (XDE_TYPE_INUSE_MASK | 
XDE_TYPE_CATEGORY_MASK | XDE_TYPE_IMPORTNC_MASK)
+#defineXDE_TYPE_VENDOR_ALLOC   (XDE_TYPE_INUSE_MASK | 
XDE_TYPE_CATEGORY_MASK | XDE_TYPE_IMPORTNC_MASK | 0x01)
+   union {
+   uint8_t xde_generic_[19];
+   struct exde_primary {
+   /*
+* Count of "secondary" dirents following this one.
+*
+* A single logical entity may be composed of a
+* sequence of several dirents, starting with a primary
+* one; the rest are secondary dirents.
+*/
+   uint8_t xde_secondary_count_;
+   uint16_txde_set_chksum_;
+   uint16_txde_prim_flags_;
+   uint8_t xde_prim_generic_[14];
+   } __packed xde_primary_;
+   struct exde_secondary {
+   uint8_t xde_sec_flags_;
+   uint8_t xde_sec_generic_[18];
+   } __packed xde_secondary_;
+   } u;
+   uint32_txde_first_cluster;
+   uint64_txde_data_len;
+} __packed;
+#definexde_generic u.xde_generic_
+#definexde_secondary_count u.xde_primary_.xde_secondary_count
+#definexde_set_chksum  u.xde_primary_.xde_set_chksum_
+#definexde_prim_flags  u.xde_primary_.xde_prim_flags_
+#definexde_sec_flags   u.xde_secondary_.xde_sec_flags_
+_Static_assert(sizeof(struct exfat_dirent) == 32, "spec");
+
+struct exfat_de_label {
+   uint8_t xdel_type;  /* XDE_TYPE_VOL_LABEL */
+   uint8_t xdel_char_cnt;  /* Length of UCS-2 label */
+   uint16_txdel_vol_lbl[11];
+   uint8_t xdel_reserved[8];
+} __packed;
+_Static_assert(sizeof(struct exfat_de_label) == 32, "spec");
+
+#defineMAIN_BOOT_REGION_SECT   0
+#defineBACKUP_BOOT_REGION_SECT 12

svn commit: r355995 - head/sbin/hastd

2019-12-21 Thread Kirk McKusick
Author: mckusick
Date: Sun Dec 22 01:22:51 2019
New Revision: 355995
URL: https://svnweb.freebsd.org/changeset/base/355995

Log:
  Fix typo in hastd.8 manual page.
  
  Reported by: Steve Kargl 
  MFC after:   3 days

Modified:
  head/sbin/hastd/hastd.8

Modified: head/sbin/hastd/hastd.8
==
--- head/sbin/hastd/hastd.8 Sun Dec 22 00:46:07 2019(r355994)
+++ head/sbin/hastd/hastd.8 Sun Dec 22 01:22:51 2019(r355995)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 8, 2016
+.Dd December 21, 2019
 .Dt HASTD 8
 .Os
 .Sh NAME
@@ -44,7 +44,7 @@ The
 daemon is responsible for managing highly available GEOM providers.
 .Pp
 .Nm
-allows the transpaent storage of data on two physically separated machines
+allows the transparent storage of data on two physically separated machines
 connected over a TCP/IP network.
 Only one machine (cluster node) can actively use storage provided by
 .Nm .
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355994 - in stable/12/sys/dev: chromebook_platform cyapa ichiic iicbus

2019-12-21 Thread Vladimir Kondratyev
Author: wulf
Date: Sun Dec 22 00:46:07 2019
New Revision: 355994
URL: https://svnweb.freebsd.org/changeset/base/355994

Log:
  MFC r354291 - r354322, r354327, r355596
  
  r354291:
  [ig4] Give common name to PCI and ACPI device drivers
  
  r354292:
  [ig4] Handle controller startup errors
  
  Obtained from:DragonflyBSD (509820b)
  
  r354293:
  [ig4] Only enable interrupts when we want them. Otherwise keep mask at 0.
  
  Obtained from:DragonflyBSD (d7c8555)
  
  r354294:
  [ig4] Drop driver's internal RX FIFO
  
  r354295:
  [ig4] Do not wait for interrupts in set_controller() routine
  
  r354296:
  [ig4] Reduce scope of io_lock
  
  r354297:
  [ig4] Ignore stray interrupts
  
  r354298:
  [ig4] We actually need to set the Rx threshold register one smaller.
  
  Obtained from:DragonflyBSD (02f0bf2)
  
  r354299:
  
  [ig4] Stop I2C controller after checking that it's kind of functional.
  
  Obtained from:DragonfliBSD (0b3eedb)
  
  r354300:
  [ig4] disable controller before initialization of clock counters
  
  r354301:
  [ig4] Add support for polled mode
  
  r354302:
  [ig4] Allow enabling of polled mode from iicbus allocation callback
  
  r354303:
  [ig4] Do not wait until interrupts are enabled at attach stage
  
  r354304:
  [cyapa] Postpone start of the polling thread until sleep is available
  
  r354305:
  [ig4] dump IG4_REG_COMP_PARAM1 and IG4_REG_COMP_VER registers unconditionally
  
  r354306:
  [ig4] Set clock registers based on controller model
  
  r354307:
  [ig4] Implement burst mode for data reads
  
  r354308:
  [ig4] Add suspend/resume support
  
  PR:   238037
  
  r354309:
  [ig4] Remove dead code inherited from DragonflyBSD
  
  r354310:
  [ig4] Rewrite ig4iic_write routine to use TX_EMPTY status flag
  
  r354311:
  [ig4] Convert last remaining usage of TX_NOTFULL status to TX_EMPTY
  
  r354312:
  [ig4] Use interrupts for waiting for empty TX FIFO
  
  r354313:
  [ig4] Convert polling loop from status-based to interrupt-based
  
  r354314:
  [ig4] Improve error detection
  
  r354315:
  [ig4] Set STOP condition and flush TX/RX FIFOs on error
  
  r354316:
  [ig4] On SkyLake controllers issue reset on attach unconditionally.
  
  r354317:
  [ig4] wait for bus stop condition after stop command issued
  
  r354318:
  [ig4] Minor improvement of write pipelining
  
  r354319:
  [ig4] Add generic resource methods to bus interface
  
  r354320:
  [ig4] Add support for CannonLake controllers
  
  PR:   240485
  Submitted by: Neel Chauhan 
  
  r354321:
  [ig4] Enable additional registers support on Appolo Lake controllers
  
  r354322:
  [ig4] Convert ithread interrupt handler to filter based one.
  
  r354327:
  [ig4] Try to workaround MIPS namespace pollution issue
  
  r355596:
  [ig4] Remove unused methods from bus interface
  
  Suggested by: jhb
  
  Reviewed by:  imp (previous version)
  Differential Revision:https://reviews.freebsd.org/D22016

Modified:
  stable/12/sys/dev/chromebook_platform/chromebook_platform.c
  stable/12/sys/dev/cyapa/cyapa.c
  stable/12/sys/dev/ichiic/ig4_acpi.c
  stable/12/sys/dev/ichiic/ig4_iic.c
  stable/12/sys/dev/ichiic/ig4_pci.c
  stable/12/sys/dev/ichiic/ig4_reg.h
  stable/12/sys/dev/ichiic/ig4_var.h
  stable/12/sys/dev/iicbus/iicbus.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/chromebook_platform/chromebook_platform.c
==
--- stable/12/sys/dev/chromebook_platform/chromebook_platform.c Sun Dec 22 
00:36:22 2019(r355993)
+++ stable/12/sys/dev/chromebook_platform/chromebook_platform.c Sun Dec 22 
00:46:07 2019(r355994)
@@ -69,7 +69,7 @@ chromebook_i2c_identify(driver_t *driver, device_t bus
 * See 
http://lxr.free-electrons.com/source/drivers/platform/chrome/chromeos_laptop.c
 */
controller = device_get_parent(bus);
-   if (strcmp(device_get_name(controller), "ig4iic_pci") != 0)
+   if (strcmp(device_get_name(controller), "ig4iic") != 0)
return;
 
for (i = 0; i < nitems(slaves); i++) {

Modified: stable/12/sys/dev/cyapa/cyapa.c
==
--- stable/12/sys/dev/cyapa/cyapa.c Sun Dec 22 00:36:22 2019
(r355993)
+++ stable/12/sys/dev/cyapa/cyapa.c Sun Dec 22 00:46:07 2019
(r355994)
@@ -152,6 +152,7 @@ struct cyapa_softc {
struct cdev *devnode;
struct selinfo selinfo;
struct mtx mutex;
+   struct intr_config_hook intr_hook;
 
int cap_resx;
int cap_resy;
@@ -419,6 +420,27 @@ done:
return (error);
 }
 
+/*
+ * Start the polling thread
+ */
+static void
+cyapa_start(void *xdev)
+{
+   struct cyapa_softc *sc;
+   device_t dev = xdev;
+
+   sc = device_get_softc(dev);
+
+   config_intrhook_disestablish(>intr_hook);
+
+   /* Setup input event 

svn commit: r355993 - head/usr.bin/nfsstat

2019-12-21 Thread Rick Macklem
Author: rmacklem
Date: Sun Dec 22 00:36:22 2019
New Revision: 355993
URL: https://svnweb.freebsd.org/changeset/base/355993

Log:
  Update the nfsstat man page to reflect r355992.
  
  r355992 added listing of NFSv4.2 procedure and operation counts.
  This patch updates the nfsstat.1 man page to reflect that change.
  
  This is a content change.

Modified:
  head/usr.bin/nfsstat/nfsstat.1

Modified: head/usr.bin/nfsstat/nfsstat.1
==
--- head/usr.bin/nfsstat/nfsstat.1  Sun Dec 22 00:12:22 2019
(r355992)
+++ head/usr.bin/nfsstat/nfsstat.1  Sun Dec 22 00:36:22 2019
(r355993)
@@ -28,7 +28,7 @@
 .\" From: @(#)nfsstat.18.1 (Berkeley) 6/6/93
 .\" $FreeBSD$
 .\"
-.Dd October 1, 2018
+.Dd December 21, 2019
 .Dt NFSSTAT 1
 .Os
 .Sh NAME
@@ -86,8 +86,8 @@ server for NFSv4.
 .It Fl E
 Similar to
 .Fl e
-except that the statistics include NFSv4.1 and the numbers aren't clipped
-at one billion.
+except that the statistics include NFSv4.1 and NFSv4.2 and the numbers aren't
+clipped at one billion.
 Only one of
 .Fl e
 or
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355992 - head/usr.bin/nfsstat

2019-12-21 Thread Rick Macklem
Author: rmacklem
Date: Sun Dec 22 00:12:22 2019
New Revision: 355992
URL: https://svnweb.freebsd.org/changeset/base/355992

Log:
  Update nfsstat to list the NFSv4.2 procedures and operations.
  
  r355677 added NFSv4.2 support to the NFS client and server. It also updated
  the nfsstats structure to keep counts for the new procedures (client) and
  operations (server) added for NFSv4.2.
  This patch updates the "-E" option of nfsstat so that it lists counts for
  these new procedures and operations.

Modified:
  head/usr.bin/nfsstat/nfsstat.c

Modified: head/usr.bin/nfsstat/nfsstat.c
==
--- head/usr.bin/nfsstat/nfsstat.c  Sat Dec 21 22:32:24 2019
(r355991)
+++ head/usr.bin/nfsstat/nfsstat.c  Sun Dec 22 00:12:22 2019
(r355992)
@@ -772,6 +772,31 @@ exp_intpr(int clientOnly, int serverOnly, int nfs41)

(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_CREATELAYGET]);
 
xo_close_container("nfsv41");
+
+   xo_open_container("nfsv42");
+
+   xo_emit("{T:IOAdvise/%13.13s}{T:Allocate/%13.13s}"
+   "{T:Copy/%13.13s}{T:Seek/%13.13s}"
+   "{T:SeekDataS/%13.13s}{T:GetExtattr/%13.13s}\n");
+   xo_emit("{:ioadvise/%13ju}{:allocate/%13ju}"
+   "{:copy/%13ju}{:seek/%13ju}"
+   "{:seekdatas/%13ju}{:getextattr/%13ju}\n",
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_IOADVISE],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_ALLOCATE],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_COPY],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SEEK],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SEEKDS],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_GETEXTATTR]);
+
+   xo_emit("{T:SetExtattr/%13.13s}{T:RmExtattr/%13.13s}"
+   "{T:ListExtattr/%13.13s}\n");
+   xo_emit("{:setextattr/%13ju}{:rmextattr/%13ju}"
+   "{:listextattr/%13ju}\n",
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_SETEXTATTR],
+   (uintmax_t)ext_nfsstats.rpccnt[NFSPROC_RMEXTATTR],
+   
(uintmax_t)ext_nfsstats.rpccnt[NFSPROC_LISTEXTATTR]);
+
+   xo_close_container("nfsv42");
}
xo_close_container("operations");
 
@@ -993,6 +1018,48 @@ exp_intpr(int clientOnly, int serverOnly, int nfs41)

(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_RECLAIMCOMPL]);
 
xo_close_container("nfsv41");
+
+   xo_open_container("nfsv42");
+
+   xo_emit("{T:Allocate/%13.13s}{T:Copy/%13.13s}"
+   "{T:CopyNotify/%13.13s}{T:Deallocate/%13.13s}"
+   "{T:IOAdvise/%13.13s}{T:LayoutError/%13.13s}\n");
+   xo_emit("{:allocate/%13ju}{:copy/%13ju}"
+   "{:copynotify/%13ju}{:deallocate/%13ju}"
+   "{:ioadvise/%13ju}{:layouterror/%13ju}\n",
+   (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_ALLOCATE],
+   (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_COPY],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_COPYNOTIFY],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_DEALLOCATE],
+   (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_IOADVISE],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTERROR]);
+
+   xo_emit("{T:LayoutStats/%13.13s}{T:OffloadCncl/%13.13s}"
+   "{T:OffloadStat/%13.13s}{T:ReadPlus/%13.13s}"
+   "{T:Seek/%13.13s}{T:WriteSame/%13.13s}\n");
+   xo_emit("{:layoutstats/%13ju}{:offloadcncl/%13ju}"
+   "{:offloadstat/%13ju}{:readplus/%13ju}"
+   "{:seek/%13ju}{:writesame/%13ju}\n",
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_LAYOUTSTATS],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OFFLOADCANCEL],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_OFFLOADSTATUS],
+   (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_READPLUS],
+   (uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_SEEK],
+   
(uintmax_t)ext_nfsstats.srvrpccnt[NFSV4OP_WRITESAME]);
+
+   xo_emit("{T:Clone/%13.13s}{T:GetExtattr/%13.13s}"
+   "{T:SetExtattr/%13.13s}{T:ListExtattr/%13.13s}"
+   "{T:RmExtattr/%13.13s}\n");
+   

svn commit: r355991 - head/sys/amd64/amd64

2019-12-21 Thread Alan Cox
Author: alc
Date: Sat Dec 21 22:32:24 2019
New Revision: 355991
URL: https://svnweb.freebsd.org/changeset/base/355991

Log:
  Micro-optimize the control flow in _pmap_unwire_ptp(), and eliminate
  unnecessary parentheses.
  
  Reviewed by:  kib, markj
  MFC after:1 week
  Differential Revision:https://reviews.freebsd.org/D22893

Modified:
  head/sys/amd64/amd64/pmap.c

Modified: head/sys/amd64/amd64/pmap.c
==
--- head/sys/amd64/amd64/pmap.c Sat Dec 21 21:05:53 2019(r355990)
+++ head/sys/amd64/amd64/pmap.c Sat Dec 21 22:32:24 2019(r355991)
@@ -3542,7 +3542,7 @@ _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_
/*
 * unmap the page table page
 */
-   if (m->pindex >= (NUPDE + NUPDPE)) {
+   if (m->pindex >= NUPDE + NUPDPE) {
/* PDP page */
pml4_entry_t *pml4;
pml4 = pmap_pml4e(pmap, va);
@@ -3569,8 +3569,7 @@ _pmap_unwire_ptp(pmap_t pmap, vm_offset_t va, vm_page_
 
pdpg = PHYS_TO_VM_PAGE(*pmap_pdpe(pmap, va) & PG_FRAME);
pmap_unwire_ptp(pmap, va, pdpg, free);
-   }
-   if (m->pindex >= NUPDE && m->pindex < (NUPDE + NUPDPE)) {
+   } else if (m->pindex < NUPDE + NUPDPE) {
/* We just released a PD, unhold the matching PDP */
vm_page_t pdppg;
 
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355990 - head/contrib/libpcap

2019-12-21 Thread Cy Schubert
Author: cy
Date: Sat Dec 21 21:05:53 2019
New Revision: 355990
URL: https://svnweb.freebsd.org/changeset/base/355990

Log:
  MFV r355890:
  
  Fix libpcap issue #893: check for invalid IPv4 addresses.
  
  This fixes errors such as:
  
  tcpdump -i lagg0 net 999.999.999.999
  
  This was originally discovered on a Red Hat 7.7 server and verified
  to also be a bug on FreeBSD.
  
  Obtained from:https://github.com/the-tcpdump-group/libpcap/commit/ \
07070918d5e81a515315b395f334e52589fe0fb
  Fixed by: https://github.com/guyharris
  MFC after:2 weeks

Modified:
  head/contrib/libpcap/gencode.c
  head/contrib/libpcap/nametoaddr.c
Directory Properties:
  head/contrib/libpcap/   (props changed)

Modified: head/contrib/libpcap/gencode.c
==
--- head/contrib/libpcap/gencode.c  Sat Dec 21 21:02:50 2019
(r355989)
+++ head/contrib/libpcap/gencode.c  Sat Dec 21 21:05:53 2019
(r355990)
@@ -6955,11 +6955,15 @@ gen_mcode(compiler_state_t *cstate, const char *s1, co
return (NULL);
 
nlen = __pcap_atoin(s1, );
+   if (nlen < 0)
+   bpf_error(cstate, "invalid IPv4 address '%s'", s1);
/* Promote short ipaddr */
n <<= 32 - nlen;
 
if (s2 != NULL) {
mlen = __pcap_atoin(s2, );
+   if (mlen < 0)
+   bpf_error(cstate, "invalid IPv4 address '%s'", s2);
/* Promote short ipaddr */
m <<= 32 - mlen;
if ((n & ~m) != 0)
@@ -7017,8 +7021,11 @@ gen_ncode(compiler_state_t *cstate, const char *s, bpf
vlen = __pcap_atodn(s, );
if (vlen == 0)
bpf_error(cstate, "malformed decnet address '%s'", s);
-   } else
+   } else {
vlen = __pcap_atoin(s, );
+   if (vlen < 0)
+   bpf_error(cstate, "invalid IPv4 address '%s'", s);
+   }
 
switch (q.addr) {
 

Modified: head/contrib/libpcap/nametoaddr.c
==
--- head/contrib/libpcap/nametoaddr.c   Sat Dec 21 21:02:50 2019
(r355989)
+++ head/contrib/libpcap/nametoaddr.c   Sat Dec 21 21:05:53 2019
(r355990)
@@ -653,8 +653,15 @@ __pcap_atoin(const char *s, bpf_u_int32 *addr)
len = 0;
for (;;) {
n = 0;
-   while (*s && *s != '.')
+   while (*s && *s != '.') {
+   if (n > 25) {
+   /* The result will be > 255 */
+   return -1;
+   }
n = n * 10 + *s++ - '0';
+   }
+   if (n > 255)
+   return -1;
*addr <<= 8;
*addr |= n & 0xff;
len += 8;
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355989 - head/contrib/tcpdump

2019-12-21 Thread Cy Schubert
Author: cy
Date: Sat Dec 21 21:02:50 2019
New Revision: 355989
URL: https://svnweb.freebsd.org/changeset/base/355989

Log:
  MFV r353143 (phillip):
  
  Update tcpdump from 4.9.2 to 4.9.3.
  
  MFC after:2 weeks

Added:
  head/contrib/tcpdump/configure.ac
 - copied unchanged from r353144, vendor/tcpdump/dist/configure.ac
Modified:
  head/contrib/tcpdump/CHANGES
  head/contrib/tcpdump/CONTRIBUTING
  head/contrib/tcpdump/INSTALL.txt
  head/contrib/tcpdump/Makefile-devel-adds
  head/contrib/tcpdump/Makefile.in
  head/contrib/tcpdump/VERSION
  head/contrib/tcpdump/addrtoname.c
  head/contrib/tcpdump/config.guess
  head/contrib/tcpdump/config.h.in
  head/contrib/tcpdump/config.sub
  head/contrib/tcpdump/configure
  head/contrib/tcpdump/netdissect.h
  head/contrib/tcpdump/print-802_11.c
  head/contrib/tcpdump/print-aoe.c
  head/contrib/tcpdump/print-babel.c
  head/contrib/tcpdump/print-bfd.c
  head/contrib/tcpdump/print-bgp.c
  head/contrib/tcpdump/print-bootp.c
  head/contrib/tcpdump/print-dccp.c
  head/contrib/tcpdump/print-decnet.c
  head/contrib/tcpdump/print-domain.c
  head/contrib/tcpdump/print-dvmrp.c
  head/contrib/tcpdump/print-eigrp.c
  head/contrib/tcpdump/print-esp.c
  head/contrib/tcpdump/print-fr.c
  head/contrib/tcpdump/print-hncp.c
  head/contrib/tcpdump/print-icmp.c
  head/contrib/tcpdump/print-icmp6.c
  head/contrib/tcpdump/print-ipnet.c
  head/contrib/tcpdump/print-isakmp.c
  head/contrib/tcpdump/print-juniper.c
  head/contrib/tcpdump/print-l2tp.c
  head/contrib/tcpdump/print-ldp.c
  head/contrib/tcpdump/print-lmp.c
  head/contrib/tcpdump/print-nfs.c
  head/contrib/tcpdump/print-openflow.c
  head/contrib/tcpdump/print-ospf.c
  head/contrib/tcpdump/print-ospf6.c
  head/contrib/tcpdump/print-ppi.c
  head/contrib/tcpdump/print-rsvp.c
  head/contrib/tcpdump/print-rx.c
  head/contrib/tcpdump/print-sflow.c
  head/contrib/tcpdump/print-sl.c
  head/contrib/tcpdump/print-sll.c
  head/contrib/tcpdump/print-smb.c
  head/contrib/tcpdump/print-tcp.c
  head/contrib/tcpdump/print-vrrp.c
  head/contrib/tcpdump/print-vtp.c
  head/contrib/tcpdump/print-wb.c
  head/contrib/tcpdump/signature.c
  head/contrib/tcpdump/smbutil.c
  head/contrib/tcpdump/tcpdump.1.in
  head/contrib/tcpdump/tcpdump.c
  head/contrib/tcpdump/util-print.c
Directory Properties:
  head/contrib/tcpdump/   (props changed)

Modified: head/contrib/tcpdump/CHANGES
==
--- head/contrib/tcpdump/CHANGESSat Dec 21 21:01:03 2019
(r355988)
+++ head/contrib/tcpdump/CHANGESSat Dec 21 21:02:50 2019
(r355989)
@@ -1,3 +1,36 @@
+Friday, September 20, 2019, by m...@sandelman.ca
+  A huge thank you to Denis, Francois-Xavier and Guy who did much of the heavy 
lifting.
+  Summary for 4.9.3 tcpdump release
+Fix buffer overflow/overread vulnerabilities:
+  CVE-2017-16808 (AoE)
+  CVE-2018-14468 (FrameRelay)
+  CVE-2018-14469 (IKEv1)
+  CVE-2018-14470 (BABEL)
+  CVE-2018-14466 (AFS/RX)
+  CVE-2018-14461 (LDP)
+  CVE-2018-14462 (ICMP)
+  CVE-2018-14465 (RSVP)
+  CVE-2018-14881 (BGP)
+  CVE-2018-14464 (LMP)
+  CVE-2018-14463 (VRRP)
+  CVE-2018-14467 (BGP)
+  CVE-2018-10103 (SMB - partially fixed, but SMB printing disabled)
+  CVE-2018-10105 (SMB - too unreliably reproduced, SMB printing disabled)
+  CVE-2018-14880 (OSPF6)
+  CVE-2018-16451 (SMB)
+  CVE-2018-14882 (RPL)
+  CVE-2018-16227 (802.11)
+  CVE-2018-16229 (DCCP)
+  CVE-2018-16301 (was fixed in libpcap)
+  CVE-2018-16230 (BGP)
+  CVE-2018-16452 (SMB)
+  CVE-2018-16300 (BGP)
+  CVE-2018-16228 (HNCP)
+  CVE-2019-15166 (LMP)
+  CVE-2019-15167 (VRRP)
+Fix for cmdline argument/local issues:
+  CVE-2018-14879 (tcpdump -V)
+
 Sunday September 3, 2017 de...@ovsienko.info
   Summary for 4.9.2 tcpdump release
 Do not use getprotobynumber() for protocol name resolution.  Do not do

Modified: head/contrib/tcpdump/CONTRIBUTING
==
--- head/contrib/tcpdump/CONTRIBUTING   Sat Dec 21 21:01:03 2019
(r355988)
+++ head/contrib/tcpdump/CONTRIBUTING   Sat Dec 21 21:02:50 2019
(r355989)
@@ -31,7 +31,7 @@ Please note that if you know exactly how to solve the 
 would not be too intrusive, it would be best to contribute some development 
time
 and open a pull request instead as discussed below.
 
-Still not sure how to do? Feel free to 
[subscribe](http://www.tcpdump.org/#mailing-lists)
+Still not sure how to do? Feel free to 
[subscribe](https://www.tcpdump.org/#mailing-lists)
 to the mailing list tcpdump-work...@lists.tcpdump.org and ask!
 
 

Modified: head/contrib/tcpdump/INSTALL.txt
==
--- head/contrib/tcpdump/INSTALL.txtSat Dec 21 21:01:03 2019
(r355988)
+++ head/contrib/tcpdump/INSTALL.txtSat Dec 21 21:02:50 2019 

svn commit: r355988 - in head: contrib/libpcap contrib/libpcap/cmake/Modules contrib/libpcap/doc contrib/libpcap/missing contrib/libpcap/msdos contrib/libpcap/pcap contrib/libpcap/rpcapd contrib/li...

2019-12-21 Thread Cy Schubert
Author: cy
Date: Sat Dec 21 21:01:03 2019
New Revision: 355988
URL: https://svnweb.freebsd.org/changeset/base/355988

Log:
  MFV r353141 (by phillip):
  
  Update libpcap from 1.9.0 to 1.9.1.
  
  MFC after:2 weeks

Added:
  head/contrib/libpcap/CONTRIBUTING.md
 - copied unchanged from r353141, vendor/libpcap/dist/CONTRIBUTING.md
  head/contrib/libpcap/INSTALL.md
 - copied unchanged from r353141, vendor/libpcap/dist/INSTALL.md
  head/contrib/libpcap/README.md
 - copied unchanged from r353141, vendor/libpcap/dist/README.md
  head/contrib/libpcap/doc/
 - copied from r353141, vendor/libpcap/dist/doc/
  head/contrib/libpcap/missing/asprintf.c
 - copied unchanged from r353141, vendor/libpcap/dist/missing/asprintf.c
  head/contrib/libpcap/missing/strlcat.c
 - copied unchanged from r353141, vendor/libpcap/dist/missing/strlcat.c
  head/contrib/libpcap/missing/strlcpy.c
 - copied unchanged from r353141, vendor/libpcap/dist/missing/strlcpy.c
  head/contrib/libpcap/missing/win_asprintf.c
 - copied unchanged from r353141, vendor/libpcap/dist/missing/win_asprintf.c
  head/contrib/libpcap/pcap/socket.h
 - copied unchanged from r353141, vendor/libpcap/dist/pcap/socket.h
  head/contrib/libpcap/pcap_set_immediate_mode.3pcap.in
 - copied unchanged from r353141, 
vendor/libpcap/dist/pcap_set_immediate_mode.3pcap.in
  head/contrib/libpcap/pcap_set_protocol_linux.3pcap
 - copied unchanged from r353141, 
vendor/libpcap/dist/pcap_set_protocol_linux.3pcap
  head/contrib/libpcap/rpcapd/
 - copied from r353141, vendor/libpcap/dist/rpcapd/
  head/contrib/libpcap/testprogs/
 - copied from r353141, vendor/libpcap/dist/testprogs/
Deleted:
  head/contrib/libpcap/CONTRIBUTING
  head/contrib/libpcap/INSTALL.txt
  head/contrib/libpcap/README
  head/contrib/libpcap/README.Win32
  head/contrib/libpcap/README.aix
  head/contrib/libpcap/README.dag
  head/contrib/libpcap/README.hpux
  head/contrib/libpcap/README.linux
  head/contrib/libpcap/README.macos
  head/contrib/libpcap/README.septel
  head/contrib/libpcap/README.sita
  head/contrib/libpcap/README.tru64
  head/contrib/libpcap/cmake/Modules/FindPthreads-w32.cmake
  head/contrib/libpcap/pcap_set_immediate_mode.3pcap
  head/contrib/libpcap/pcap_set_protocol.3pcap
Modified:
  head/contrib/libpcap/CHANGES
  head/contrib/libpcap/CMakeLists.txt
  head/contrib/libpcap/CREDITS
  head/contrib/libpcap/Makefile.in
  head/contrib/libpcap/VERSION
  head/contrib/libpcap/aclocal.m4
  head/contrib/libpcap/bpf_filter.c
  head/contrib/libpcap/cmake/Modules/FindPacket.cmake
  head/contrib/libpcap/cmakeconfig.h.in
  head/contrib/libpcap/config.guess
  head/contrib/libpcap/config.h.in
  head/contrib/libpcap/config.sub
  head/contrib/libpcap/configure
  head/contrib/libpcap/configure.ac
  head/contrib/libpcap/diag-control.h
  head/contrib/libpcap/fmtutils.c
  head/contrib/libpcap/fmtutils.h
  head/contrib/libpcap/ftmacros.h
  head/contrib/libpcap/gencode.c
  head/contrib/libpcap/gencode.h
  head/contrib/libpcap/grammar.y
  head/contrib/libpcap/missing/snprintf.c
  head/contrib/libpcap/missing/win_snprintf.c
  head/contrib/libpcap/msdos/readme.dos
  head/contrib/libpcap/nametoaddr.c
  head/contrib/libpcap/optimize.c
  head/contrib/libpcap/pcap-bpf.c
  head/contrib/libpcap/pcap-bt-linux.c
  head/contrib/libpcap/pcap-bt-monitor-linux.c
  head/contrib/libpcap/pcap-common.c
  head/contrib/libpcap/pcap-common.h
  head/contrib/libpcap/pcap-dag.c
  head/contrib/libpcap/pcap-dlpi.c
  head/contrib/libpcap/pcap-dos.c
  head/contrib/libpcap/pcap-filter.manmisc.in
  head/contrib/libpcap/pcap-int.h
  head/contrib/libpcap/pcap-libdlpi.c
  head/contrib/libpcap/pcap-linktype.manmisc.in
  head/contrib/libpcap/pcap-linux.c
  head/contrib/libpcap/pcap-netfilter-linux.c
  head/contrib/libpcap/pcap-netmap.c
  head/contrib/libpcap/pcap-new.c
  head/contrib/libpcap/pcap-npf.c
  head/contrib/libpcap/pcap-null.c
  head/contrib/libpcap/pcap-rpcap.c
  head/contrib/libpcap/pcap-rpcap.h
  head/contrib/libpcap/pcap-savefile.manfile.in
  head/contrib/libpcap/pcap-septel.c
  head/contrib/libpcap/pcap-sita.c
  head/contrib/libpcap/pcap-sita.html
  head/contrib/libpcap/pcap-snf.c
  head/contrib/libpcap/pcap-tc.c
  head/contrib/libpcap/pcap-tstamp.manmisc.in
  head/contrib/libpcap/pcap-usb-linux.c
  head/contrib/libpcap/pcap.3pcap.in
  head/contrib/libpcap/pcap.c
  head/contrib/libpcap/pcap/bpf.h
  head/contrib/libpcap/pcap/compiler-tests.h
  head/contrib/libpcap/pcap/dlt.h
  head/contrib/libpcap/pcap/funcattrs.h
  head/contrib/libpcap/pcap/nflog.h
  head/contrib/libpcap/pcap/pcap-inttypes.h
  head/contrib/libpcap/pcap/pcap.h
  head/contrib/libpcap/pcap/sll.h
  head/contrib/libpcap/pcap_activate.3pcap
  head/contrib/libpcap/pcap_breakloop.3pcap
  head/contrib/libpcap/pcap_can_set_rfmon.3pcap
  head/contrib/libpcap/pcap_compile.3pcap.in
  head/contrib/libpcap/pcap_create.3pcap
  head/contrib/libpcap/pcap_datalink.3pcap.in
  head/contrib/libpcap/pcap_datalink_name_to_val.3pcap
  

svn commit: r355987 - vendor/llvm-project/llvmorg-9.0.1

2019-12-21 Thread Dimitry Andric
Author: dim
Date: Sat Dec 21 19:23:33 2019
New Revision: 355987
URL: https://svnweb.freebsd.org/changeset/base/355987

Log:
  Tag vendor import of llvm-project llvmorg-9.0.1.

Added:
  vendor/llvm-project/llvmorg-9.0.1/
 - copied from r355986, vendor/llvm-project/release-9.x/
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355986 - vendor/llvm-project/llvmorg-9.0.1

2019-12-21 Thread Dimitry Andric
Author: dim
Date: Sat Dec 21 19:22:19 2019
New Revision: 355986
URL: https://svnweb.freebsd.org/changeset/base/355986

Log:
  Prepare to re-tag llvmorg-9.0.1.

Deleted:
  vendor/llvm-project/llvmorg-9.0.1/
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355985 - head/sys/vm

2019-12-21 Thread Mark Johnston
Author: markj
Date: Sat Dec 21 19:04:05 2019
New Revision: 355985
URL: https://svnweb.freebsd.org/changeset/base/355985

Log:
  Fix VPO_UNMANAGED handling in vm_page_reclaim_run() after r353540.
  
  When allocating a replacement page we must clear VPO_UNMANAGED since we
  only ever reclaim pages from managed objects.  vm_page_replace() does
  not handle this for us.
  
  Sprinkle some assertions to help catch this sort of issue.
  
  Reported by:  pho
  Reviewed by:  alc, kib
  Sponsored by: The FreeBSD Foundation
  Differential Revision:https://reviews.freebsd.org/D22868

Modified:
  head/sys/vm/vm_page.c

Modified: head/sys/vm/vm_page.c
==
--- head/sys/vm/vm_page.c   Sat Dec 21 18:50:25 2019(r355984)
+++ head/sys/vm/vm_page.c   Sat Dec 21 19:04:05 2019(r355985)
@@ -1724,6 +1724,9 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm
mnew->pindex = pindex;
atomic_set_int(>ref_count, VPRC_OBJREF);
mold = vm_radix_replace(>rtree, mnew);
+   KASSERT((mold->oflags & VPO_UNMANAGED) ==
+   (mnew->oflags & VPO_UNMANAGED),
+   ("vm_page_replace: mismatched VPO_UNMANAGED"));
 
/* Keep the resident page list in sorted order. */
TAILQ_INSERT_AFTER(>memq, mold, mnew, listq);
@@ -2684,8 +2687,7 @@ retry:
KASSERT(pmap_page_get_memattr(m) ==
VM_MEMATTR_DEFAULT,
("page %p has an unexpected memattr", m));
-   KASSERT((m->oflags & (VPO_SWAPINPROG |
-   VPO_SWAPSLEEP | VPO_UNMANAGED)) == 0,
+   KASSERT(m->oflags == 0,
("page %p has unexpected oflags", m));
/* Don't care: PGA_NOSYNC. */
if (!vm_page_none_valid(m)) {
@@ -2753,6 +2755,7 @@ retry:
~PGA_QUEUE_STATE_MASK;
KASSERT(m_new->oflags == VPO_UNMANAGED,
("page %p is managed", m_new));
+   m_new->oflags = 0;
pmap_copy_page(m, m_new);
m_new->valid = m->valid;
m_new->dirty = m->dirty;
@@ -3676,6 +3679,10 @@ vm_page_free_prep(vm_page_t m)
panic("vm_page_free_prep: freeing shared busy page %p", m);
 
if (m->object != NULL) {
+   KASSERT(((m->oflags & VPO_UNMANAGED) != 0) ==
+   ((m->object->flags & OBJ_UNMANAGED) != 0),
+   ("vm_page_free_prep: managed flag mismatch for page %p",
+   m));
vm_page_object_remove(m);
 
/*
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355984 - stable/12/sys/dev/oce

2019-12-21 Thread Mark Johnston
Author: markj
Date: Sat Dec 21 18:50:25 2019
New Revision: 355984
URL: https://svnweb.freebsd.org/changeset/base/355984

Log:
  MFC r355885:
  oce: Tighten input validation in the SIOCGI2C handler.

Modified:
  stable/12/sys/dev/oce/oce_if.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/oce/oce_if.c
==
--- stable/12/sys/dev/oce/oce_if.c  Sat Dec 21 16:16:43 2019
(r355983)
+++ stable/12/sys/dev/oce/oce_if.c  Sat Dec 21 18:50:25 2019
(r355984)
@@ -593,27 +593,26 @@ oce_ioctl(struct ifnet *ifp, u_long command, caddr_t d
if (rc)
break;
 
-   if (i2c.dev_addr != PAGE_NUM_A0 &&
-   i2c.dev_addr != PAGE_NUM_A2) {
+   if (i2c.dev_addr == PAGE_NUM_A0) {
+   offset = i2c.offset;
+   } else if (i2c.dev_addr == PAGE_NUM_A2) {
+   offset = TRANSCEIVER_A0_SIZE + i2c.offset;
+   } else {
rc = EINVAL;
break;
}
 
-   if (i2c.len > sizeof(i2c.data)) {
+   if (i2c.len > sizeof(i2c.data) ||
+   i2c.len + offset > sizeof(sfp_vpd_dump_buffer)) {
rc = EINVAL;
break;
}
 
rc = oce_mbox_read_transrecv_data(sc, i2c.dev_addr);
-   if(rc) {
+   if (rc) {
rc = -rc;
break;
}
-
-   if (i2c.dev_addr == PAGE_NUM_A0)
-   offset = i2c.offset;
-   else
-   offset = TRANSCEIVER_A0_SIZE + i2c.offset;
 
memcpy([0], _vpd_dump_buffer[offset], i2c.len);
 
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355983 - stable/12/sys/dev/vnic

2019-12-21 Thread Mark Johnston
Author: markj
Date: Sat Dec 21 16:16:43 2019
New Revision: 355983
URL: https://svnweb.freebsd.org/changeset/base/355983

Log:
  MFC r355887:
  vnic: Relax PHY node matching after r336281.
  
  PR:   242654

Modified:
  stable/12/sys/dev/vnic/thunder_bgx_fdt.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/dev/vnic/thunder_bgx_fdt.c
==
--- stable/12/sys/dev/vnic/thunder_bgx_fdt.cSat Dec 21 16:08:34 2019
(r355982)
+++ stable/12/sys/dev/vnic/thunder_bgx_fdt.cSat Dec 21 16:16:43 2019
(r355983)
@@ -35,6 +35,7 @@ __FBSDID("$FreeBSD$");
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -151,6 +152,7 @@ bgx_fdt_phy_name_match(struct bgx *bgx, char *phy_name
 {
const char *type;
ssize_t sz;
+   char last;
 
switch (bgx->qlm_mode) {
case QLM_MODE_SGMII:
@@ -193,10 +195,11 @@ bgx_fdt_phy_name_match(struct bgx *bgx, char *phy_name
 
if (sz > size)
return (FALSE);
-   if (strncmp(phy_name, type, sz - 1) == 0 &&
-   (phy_name[sz - 1] == '\0' || phy_name[sz - 1] == '@'))
-   return (TRUE);
-
+   if (strncmp(phy_name, type, sz - 1) == 0) {
+   last = phy_name[sz - 1];
+   if (last == '\0' || last == '@' || isdigit(last))
+   return (TRUE);
+   }
return (FALSE);
 }
 
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355982 - stable/12/lib/geom/part

2019-12-21 Thread Mark Johnston
Author: markj
Date: Sat Dec 21 16:08:34 2019
New Revision: 355982
URL: https://svnweb.freebsd.org/changeset/base/355982

Log:
  MFC r354824:
  Fix grammar in gpart.8.
  
  PR:   241973

Modified:
  stable/12/lib/geom/part/gpart.8
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/geom/part/gpart.8
==
--- stable/12/lib/geom/part/gpart.8 Sat Dec 21 15:33:19 2019
(r355981)
+++ stable/12/lib/geom/part/gpart.8 Sat Dec 21 16:08:34 2019
(r355982)
@@ -695,7 +695,7 @@ for APM,
 for GPT, and 0x0904 for VTOC8.
 .El
 .Pp
-Another symbolic names that can be used with
+Other symbolic names that can be used with
 .Cm gpart
 utility are:
 .Bl -tag -width ".Cm dragonfly-disklabel64"
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355981 - in stable/12: lib/libc/sys sys/kern

2019-12-21 Thread Konstantin Belousov
Author: kib
Date: Sat Dec 21 15:33:19 2019
New Revision: 355981
URL: https://svnweb.freebsd.org/changeset/base/355981

Log:
  MFC r355500:
  Only return EPERM from kill(-pid) when no process was signalled.

Modified:
  stable/12/lib/libc/sys/kill.2
  stable/12/sys/kern/kern_sig.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/lib/libc/sys/kill.2
==
--- stable/12/lib/libc/sys/kill.2   Sat Dec 21 11:38:48 2019
(r355980)
+++ stable/12/lib/libc/sys/kill.2   Sat Dec 21 15:33:19 2019
(r355981)
@@ -28,7 +28,7 @@
 .\" @(#)kill.2 8.3 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\"
-.Dd December 1, 2017
+.Dd December 1, 2019
 .Dt KILL 2
 .Os
 .Sh NAME
@@ -105,12 +105,11 @@ process with ID 1
 .Xr init 8 ) ,
 and the process sending the signal.
 If the user is not the super user, the signal is sent to all processes
-with the same uid as the user excluding the process sending the signal.
+which the caller has permissions to, excluding the process sending the signal.
 No error is returned if any process could be signaled.
 .El
 .Pp
-For compatibility with System V,
-if the process number is negative but not -1,
+If the process number is negative but not -1,
 the signal is sent to all processes whose process group ID
 is equal to the absolute value of the process number.
 This is a variant of
@@ -134,7 +133,7 @@ No process or process group can be found corresponding
 .It Bq Er EPERM
 The sending process does not have permission to send
 .Va sig
-to the receiving process.
+to any receiving process.
 .El
 .Sh SEE ALSO
 .Xr getpgrp 2 ,

Modified: stable/12/sys/kern/kern_sig.c
==
--- stable/12/sys/kern/kern_sig.c   Sat Dec 21 11:38:48 2019
(r355980)
+++ stable/12/sys/kern/kern_sig.c   Sat Dec 21 15:33:19 2019
(r355981)
@@ -1679,6 +1679,36 @@ kern_sigaltstack(struct thread *td, stack_t *ss, stack
return (0);
 }
 
+struct killpg1_ctx {
+   struct thread *td;
+   ksiginfo_t *ksi;
+   int sig;
+   bool sent;
+   bool found;
+   int ret;
+};
+
+static void
+killpg1_sendsig(struct proc *p, bool notself, struct killpg1_ctx *arg)
+{
+   int err;
+
+   if (p->p_pid <= 1 || (p->p_flag & P_SYSTEM) != 0 ||
+   (notself && p == arg->td->td_proc) || p->p_state == PRS_NEW)
+   return;
+   PROC_LOCK(p);
+   err = p_cansignal(arg->td, p, arg->sig);
+   if (err == 0 && arg->sig != 0)
+   pksignal(p, arg->sig, arg->ksi);
+   PROC_UNLOCK(p);
+   if (err != ESRCH)
+   arg->found = true;
+   if (err == 0)
+   arg->sent = true;
+   else if (arg->ret == 0 && err != ESRCH && err != EPERM)
+   arg->ret = err;
+}
+
 /*
  * Common code for kill process group/broadcast kill.
  * cp is calling process.
@@ -1688,30 +1718,21 @@ killpg1(struct thread *td, int sig, int pgid, int all,
 {
struct proc *p;
struct pgrp *pgrp;
-   int err;
-   int ret;
+   struct killpg1_ctx arg;
 
-   ret = ESRCH;
+   arg.td = td;
+   arg.ksi = ksi;
+   arg.sig = sig;
+   arg.sent = false;
+   arg.found = false;
+   arg.ret = 0;
if (all) {
/*
 * broadcast
 */
sx_slock(_lock);
FOREACH_PROC_IN_SYSTEM(p) {
-   if (p->p_pid <= 1 || p->p_flag & P_SYSTEM ||
-   p == td->td_proc || p->p_state == PRS_NEW) {
-   continue;
-   }
-   PROC_LOCK(p);
-   err = p_cansignal(td, p, sig);
-   if (err == 0) {
-   if (sig)
-   pksignal(p, sig, ksi);
-   ret = err;
-   }
-   else if (ret == ESRCH)
-   ret = err;
-   PROC_UNLOCK(p);
+   killpg1_sendsig(p, true, );
}
sx_sunlock(_lock);
} else {
@@ -1731,25 +1752,14 @@ killpg1(struct thread *td, int sig, int pgid, int all,
}
sx_sunlock(_lock);
LIST_FOREACH(p, >pg_members, p_pglist) {
-   PROC_LOCK(p);
-   if (p->p_pid <= 1 || p->p_flag & P_SYSTEM ||
-   p->p_state == PRS_NEW) {
-   PROC_UNLOCK(p);
-   continue;
-   }
-   err = p_cansignal(td, p, sig);
-   if (err == 0) {
-   if (sig)
-   pksignal(p, sig, ksi);
-   ret = err;
-   }
-   

Re: svn commit: r355978 - head/usr.bin/top

2019-12-21 Thread Ronald Klop

nice addition

On Sat, 21 Dec 2019 06:03:21 +0100, Philip Paeps   
wrote:



Author: philip
Date: Sat Dec 21 05:03:21 2019
New Revision: 355978
URL: https://svnweb.freebsd.org/changeset/base/355978

Log:
  top: display battery capacity remaining
 Submitted by: Antranig Vartanian 
  Reviewed by:  imp, philip
  Differential Revision:https://reviews.freebsd.org/D22871

Modified:
  head/usr.bin/top/display.c
  head/usr.bin/top/display.h
  head/usr.bin/top/machine.c
  head/usr.bin/top/machine.h
  head/usr.bin/top/top.c

Modified: head/usr.bin/top/display.c
==
--- head/usr.bin/top/display.c  Sat Dec 21 04:44:17 2019(r355977)
+++ head/usr.bin/top/display.c  Sat Dec 21 05:03:21 2019(r355978)
@@ -1322,6 +1322,15 @@ i_uptime(struct timeval *bt, time_t *tod)
 }
 }
+void
+i_battery(int nbat, int batt)
+{
+
+   if (nbat > 0) {
+   printf("; battery: %d%%", batt);
+   }
+}
+
 #define SETUPBUFFER_MIN_SCREENWIDTH 80
 #define SETUPBUFFER_REQUIRED_ADDBUFSIZ 2

Modified: head/usr.bin/top/display.h
==
--- head/usr.bin/top/display.h  Sat Dec 21 04:44:17 2019(r355977)
+++ head/usr.bin/top/display.h  Sat Dec 21 05:03:21 2019(r355978)
@@ -14,6 +14,7 @@ void   i_header(const char *text);
 voiddisplay_header(int t);
 int display_init(struct statics *statics);
 voidi_arc(int *stats);
+voidi_battery(int nbat, int batt);
 voidi_carc(int *stats);
 voidi_cpustates(int *states);
 voidi_loadave(int mpid, double *avenrun);

Modified: head/usr.bin/top/machine.c
==
--- head/usr.bin/top/machine.c  Sat Dec 21 04:44:17 2019(r355977)
+++ head/usr.bin/top/machine.c  Sat Dec 21 05:03:21 2019(r355978)
@@ -211,6 +211,10 @@ static long *pcpu_cp_old;
 static long *pcpu_cp_diff;
 static int *pcpu_cpu_states;
+/* Battery units and states */
+static int battery_units;
+static int battery_life;
+
 static int compare_swap(const void *a, const void *b);
 static int compare_jid(const void *a, const void *b);
 static int compare_pid(const void *a, const void *b);
@@ -373,6 +377,12 @@ machine_init(struct statics *statics)
pcpu_cpu_states = calloc(ncpus * CPUSTATES, sizeof(int));
statics->ncpus = ncpus;
+   /* Allocate state of battery units reported via ACPI. */
+   battery_units = 0;
+   size = sizeof(int);
+   sysctlbyname("hw.acpi.battery.units", _units, , NULL, 0);
+   statics->nbatteries = battery_units;
+
update_layout();
/* all done! */
@@ -579,6 +589,12 @@ get_system_info(struct system_info *si)
} else {
si->boottime.tv_sec = -1;
}
+
+   battery_life = 0;
+   if (battery_units > 0) {
+   GETSYSCTL("hw.acpi.battery.life", battery_life);
+   }
+   si->battery = battery_life;
 }
#define NOPROC  ((void *)-1)

Modified: head/usr.bin/top/machine.h
==
--- head/usr.bin/top/machine.h  Sat Dec 21 04:44:17 2019(r355977)
+++ head/usr.bin/top/machine.h  Sat Dec 21 05:03:21 2019(r355978)
@@ -30,6 +30,7 @@ struct statics
 const char * const *carc_names;
 const char * const *swap_names;
 const char * const *order_names;
+int nbatteries;
 int ncpus;
 };
@@ -50,6 +51,7 @@ struct system_info
 int*carc;
 int*swap;
 struct timeval boottime;
+intbattery;
 intncpus;
 };

Modified: head/usr.bin/top/top.c
==
--- head/usr.bin/top/top.c  Sat Dec 21 04:44:17 2019(r355977)
+++ head/usr.bin/top/top.c  Sat Dec 21 05:03:21 2019(r355978)
@@ -619,6 +619,9 @@ restart:
(*d_loadave)(system_info.last_pid,
 system_info.load_avg);
+   /* display the battery info (if any) */
+   i_battery(statics.nbatteries, system_info.battery);
+
/* display the current time */
/* this method of getting the time SHOULD be fairly portable */
time(_time);
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


svn commit: r355980 - head/sys/contrib/ncsw/Peripherals/QM

2019-12-21 Thread Gleb Popov
Author: arrowd (ports committer)
Date: Sat Dec 21 11:38:48 2019
New Revision: 355980
URL: https://svnweb.freebsd.org/changeset/base/355980

Log:
  Don't shift 32-bit value by more than 32 bits.
  
  PR:   207854
  Approved by:  emaste

Modified:
  head/sys/contrib/ncsw/Peripherals/QM/qm_portal_fqr.c

Modified: head/sys/contrib/ncsw/Peripherals/QM/qm_portal_fqr.c
==
--- head/sys/contrib/ncsw/Peripherals/QM/qm_portal_fqr.cSat Dec 21 
07:38:14 2019(r355979)
+++ head/sys/contrib/ncsw/Peripherals/QM/qm_portal_fqr.cSat Dec 21 
11:38:48 2019(r355980)
@@ -1468,7 +1468,7 @@ static t_Error CalcWredCurve(t_QmCgWredCurve *p_WredCu
 for (tmpA=(uint32_t)(64*pres) ; tmpA<128*pres; tmpA += pres )
 for (tmpN=7 ; tmpN<64; tmpN++ )
 {
-tmp = ABS((int)(slope - tmpA/(1